루트 기반 방화벽 (AFWall +)과 비 루트 기반 방화벽 (NetGuard)의 보안 차이점은 무엇입니까?


18

루트 기반 방화벽 (예 : AFWall +)과 비 루트 기반 방화벽 (NetGuard 등)의 기술적 차이점은 무엇입니까?

그러한 소프트웨어가 효과적으로 제공하는 보안에 영향을 미칩니 까?

이미 NetGuard의 소스 코드에서 약간의 아이디어를 확인했지만 이것이 여전히 좋은 질문이라고 생각하며 주제에 대한 다른 사람들의 분석에 관심이 있습니다.

이러한 질문을 해당 소프트웨어가 제공하는 핵심 기술 기능 (방화벽 종류 : 상태 비 저장 또는 상태 저장, 하드 코드 예외, 신뢰할 수없는 패킷을 처리하는 코드의 견고성 등)으로 제한하고 보조 기능이 아닙니다. 소프트웨어의 핵심 목표에 구체적으로 영향을 미치지 않는 한 광고 기능, 광고, 추적, 미용 등을 포함 할 수 있습니다.

다른 말로하면 : rants 제발;)!

제한이있는 경우 구현에 특정 적이거나 (개발 팀이 선택한 결과) 사용 된 기술의 결과 (매우 다른 시스템에 의존하는 경우)에 대처해야 할 수도 있습니다. 다른 사람에게는없는 제한이 있습니다).

답변:


14

NetGuard의 저자로서 저는이 분야에서 직접 경험했습니다.

로컬 VPN 기반 방화벽의 단점은 (Android) Linux 커널이 소켓 기반 연결을 통해 모든 트래픽 유형을 전달할 수 없기 때문에 모든 트래픽 유형을 처리 할 수 ​​없다는 것입니다. 예를 들어 일부 제조업체의 IP 호출에 사용중인 IPsec이 있습니다. 이것에 대한 부분 (IPsec이 아닌) 솔루션은 원격 VPN 서버를 사용하여 트래픽을 전달하는 것이지만 많은 사람들이 개인 정보를 현명하게 받아 들일 수 없으며 추가적인 복잡성과 추가 배터리 사용이있을 수 있습니다. 실제로 TCP 및 UDP 트래픽 처리는 NetGuard 사용자의 99,9 %에게 충분합니다. Android 5부터는 애플리케이션이 VPN으로 라우팅되는 것을 제외 할 수 있습니다 (VPN 구현 애플리케이션은 이것이 필수인지 선택인지 결정). 모든 트래픽을 전달할 수 없어서 발생하는 문제를 해결하는 데 사용할 수 있습니다. 또 다른 옵션은 NetGuard가 일부 제조업체의 IP 호출을 '수정'하는 데 사용하는 주소 (범위)를 제외하는 것입니다.

또 다른 단점은 패킷을 검사하고 전달해야하기 때문에 일부 처리가 필요하기 때문에 트래픽을 전달하면 모바일 장치에서 배터리 사용량이 증가한다는 것입니다. Linux 커널에 통합 된 iptables를 사용하는 것이 배터리 친화적이므로 더 효율적입니다.

일반적으로 Android는 시스템 응용 프로그램 및 구성 요소의 트래픽을 포함하여 모든 트래픽을 VPN으로 라우팅하지만 제조업체는 특정 트래픽 유형을 제외하기로 결정하여 VPN 기반 방화벽으로 얻을 수있는 보안을 줄일 수 있습니다.

NetGuard는 광고 차단을 제공하기위한 DNS 요청을 제외하고는 데이터 자체를 분석하지 않지만 개인 정보 보호 문제가 발생할 수 있습니다. 그럼에도 불구하고 기술적으로 볼 때 이것은 iptables로 가능한 것 이상의 데이터 스트림에 대한 상태 전체 검사가 가능하기 때문에 VPN 기반 방화벽의 장점입니다 (여전히 그렇게 호출하려는 경우). 관련된 처리로 인해 배터리 사용 비용이 발생할 수 있습니다. SSL 스트림을 검사하려면 로컬 MiT 공격이 필요합니다.

또 다른 단점은 안드로이드가 VPN 체인을 허용하지 않기 때문에 방화벽이 그러한 서비스 자체를 제공하거나 다른 VPN에 전달 또는 프록시 메커니즘을 제공하지 않는 한 로컬 VPN을 사용하여 방화벽을 구현하면 실제 VPN 서비스를 사용하지 못하게됩니다 신청.

마지막으로 VPN 기반 방화벽은 실행할 방화벽 VPN 서비스를 제공하는 응용 프로그램에 따라 다릅니다. 이것은 사소한 것처럼 보이지만 일부 제조업체 Android 버전 / 변형은 메모리가 부족한 상태에서 프로세스를 너무 적극적으로 종료하기 때문에 (IMHO는 Android가 VPN 서비스를 제공하는 응용 프로그램을 종료하면 버그입니다).

마지막으로 안드로이드 기기의 루팅은 점점 더 어려워지고 있으며 VPN 기반 방화벽은 많은 사람들에게 유일한 선택입니다. Google은 언제라도 시스템 기반 방화벽을 추가 할 것으로 기대하지 않습니다. 광고 수익에 큰 영향을 미칠 수 있기 때문입니다. iOS에는 시스템 기반 방화벽이 있습니다.

질문이 있으면 알려 주시면 답변을 드리겠습니다.


1
답변 주셔서 감사합니다. "이것은 iptables로 가능한 것 이상의 데이터 스트림에 대한 상태 전체 검사를 허용 할 것 입니다." 이것을 구현하는 여러 프로젝트 ( ndpi-netfilter , https://github.com/thomasbhatia/OpenDPI , l7-filter )가 있지만 필요한 작업에 비해 실제 수요가 너무 낮아서 모두가 보인다고 생각합니다 지금 버렸다.
WhiteWinterWolf

예, Linux 커널 모듈을 사용하여 수행 할 수도 있지만 응용 프로그램 수준에서 수행하는 것이 훨씬 간단합니다. 리눅스 커널 모듈은 커널 버전과 호환 될 필요가있다. 이것은 커널 버전이 너무 많은 안드로이드에서는 실행 가능한 옵션이 아니다. 또한 일반 사용자에게는 기대할 수없는 커널 모듈을 삽입하는 방법에 대한 루트 권한과 지식이 필요하지만 자동화 될 수도 있습니다.
M66B

10

내 지식으로는 접근 방식입니다.

루트 기반 방화벽IPFilter / iptables 를 사용하여 흐름을 제어합니다. 이는 네트워크 연결이 가능한지 여부, 라우팅이 완전히 작동하는지 또는 전혀 작동하지 않는지 또는 "외부 세계에 액세스하지 않고"밀폐 환경 "(인트라넷)에 있는지 여부에 관계없이 모든 앱에 자동으로 적용됩니다. "(인터넷). 차단 한 앱이 차단되었습니다. 꽤 낮은 수준.

루트 가 아닌 방화벽 은 저수준에 액세스 할 수 없으므로 해결 방법을 사용해야합니다. 대부분의 경우 이것은 Android의 VPN 기능을 사용하여 수행됩니다 . 구현에 따라 장치에서 완전히 작동하거나 (사용 가능한 네트워크 연결에 관계없이) 다시 "외부 서비스"(앱 공급자의 VPN에 연결)를 통해 작동합니다. 후자의 경우 서비스가 중단되는 즉시 문제가 발생합니다. 두 경우 모두 실제로 모든 앱이 VPN을 존중하는지 또는 주변에 방법이 있는지 확실하지 않습니다. 1 내가 읽은 VPN의 또 다른 불쾌한 사실은 "네트워크가 모니터링 될 수 있습니다" 라는 성가신 영구 알림이 나옵니다.– 그러나 문제의 앱에 자체 인증서가 필요한 경우에만 표시되는 AFAIK. 2

평결 : 나는 개인적으로 루트 기반 솔루션을 더 신뢰합니다. 그러나 이 옵션이 아닌 경우 비 루트 솔루션이 거의 우수해야합니다. 이 경우 NetGuard 와 같은 오픈 소스 솔루션을 권장합니다 (개발자도 Xprivacy 를 만들었 으며 신뢰할 수 있습니다). 말하자면 : 더 자세한 내용을 살펴 걸릴 의 XDA 소개 NetGuard , 좀 더 자세한 내용과 배경을 설명합니다.


1 Android VPN 구현의 기술적 세부 사항에 익숙하지 않지만 WhiteWinterWolf (아래 주석 참조)를 인용 하면이를 강제하는 것은 Android 기본 시스템에 달려 있습니다. 이것이 제대로 수행되지 않았다고 생각할 이유가 없습니다.

2 WhiteWinterWolf 인용 : NetGuard에서 사용 하는 VPN API 는 권한이없는 응용 프로그램이 모든 데이터를 가로 채도록 허용합니다. 이는 Android가 효과적으로 "모니터링"으로 간주하며 인증서와 관련이 없으며이 경고는 피할 수없고 예상되는 결과입니다. 이 API를 사용합니다.


2
답변 주셔서 감사합니다. "실제로 모든 앱이 VPN을 존중하는지 확실하지 않습니다." :이를 적용하는 것은 Android 기본 시스템에 달려 있으며, 이것이 제대로 수행되지 않았다고 생각할 이유가 없습니다. "성가신 영구 알림" : NetGuard에서 사용 하는 VPN API 를 통해 권한이없는 응용 프로그램이 모든 데이터를 가로 챌 수 있습니다. 이는 Android가 "모니터링"으로 효과적으로 간주하는 것으로 인증서와 관련이 없으며이 경고는 피할 수없고 예상됩니다 이 API를 사용한 결과.
WhiteWinterWolf

자세한 내용에 감사드립니다! 나는 그것들을 쉽게 알아볼 수 있도록 나의 답변 (신용장)과 통합했다. "모니터링 알림"에 관해서는 : 내가 언급 한 것을 발견 한 곳은 사용자 인증서 설치와 관련이있었습니다. 그러나 설명을 주셔서 감사합니다!
Izzy

1
예, Android가 관련없는 여러 목적으로 동일한 알림을 재사용하는 것은 다소 슬픈 일입니다. 현재의 맥락에서,이 통지는 이전에 링크의 다음 말씀에 연결되어야하는 VPN API 문서 : "A 시스템 관리 통지가 VPN 연결의 수명 동안 표시됩니다." .
WhiteWinterWolf

1
뭔가 다른 것을 검색하는 동안 나는이 발견, VPN을 주위에 방법이 있는지에 대해 명심해야 할 안드로이드 4.4에서 향상된 기능에 대한 참고 : " 사용자 VPN 당을 . 다중 사용자 장치에서 VPN을 이제 사용자별로 적용이 사용자를 허용 할 수 있습니다. 기기의 다른 사용자에게 영향을주지 않고 VPN을 통해 모든 네트워크 트래픽을 라우팅합니다. "
WhiteWinterWolf

2
  1. AFWall +는 실제 보안이 루팅 된 장치의 창 밖이며 사용자에 따라 달라진다는 일반적인 의견과는 별개로 트래픽 필터링에 커널 수준의 접근 방식을 제공하는 반면 NetGuard는 암호화를 사용합니다. 포 그라운드에 머물 필요없이 Android 관리자로 실행할 수있는 기능이 중요하다고 생각합니다 ...
  2. AFWall +는 부팅시 데이터 유출을 방지하는 시스템 수준의 시작 스크립트를 선택적으로 사용합니다 (그리고 종료도 믿습니다)
  3. 사용되는 경우 연결 변경이 감지되면 프로파일을 자동 전환하는 기능을 제공하는 내장 된 태 스커 플러그인도 있습니다 (정말이 것이 좋습니다).
  4. Netguard에서 사용하는 VPN 방법과 달리 Linux 기반 iptables
  5. Netguard에서 앱 설정을 비밀번호로 보호하는 옵션이 표시되지 않지만 AFWall +에서는이 기능을 사용한 적이 없습니다.

Netguard에 대해 주목할 중요한 기능은 앱별로 특정 주소를 필터링하는 기능이라고 생각합니다. 이것은 유료 옵션입니다.

인증서 기반 VPN 대 iptables를 말할 수 없습니다. 아마도 iptables 및 NetGuard의 경우 데이터를 암호화하는 데 사용되는 알고리즘, 데이터 기록 여부 및 저장 위치에 대한 커널 및 Android 버전에 따라 달라질 수 있습니다. 내 대답은 당신이 찾고있는 것만 큼 기술적이지 않을 수 있고 오랫동안 AFWall + (기부 버전) 사용자로서, 나는 그것에 편향되어 있습니다. 그러나, 나는 NetGuard의 개발자가 적극적으로 XPrivacy하는 유지하는 것을 알고 매우 잘 알려진 / 신뢰하고 강력한 안드로이드 개인 정보 보호 관리자를. AFWall +는 전혀 포기되지 않았지만 최근 NetGuard와 같이 업데이트를받지 못했습니다. 둘 다 트래픽 제어를 유지하기 위해 다른 방법을 사용하지만 궁극적으로 사용자의 장치 일부 보안 수준에 따라 달라집니다.


답변 주셔서 감사합니다, 특히 총알은 매우 유익했습니다. NetGuard가 암호화를 적용하지 않는 한,이 API는 전체 데이터 네트워크 통신을 권한없는 사용자 프로세스로 리디렉션 할 수 있기 때문에 Android의 VPN API를 이용합니다. 이 API의 초기 의도는 그러한 프로세스가 원격 호스트에 대한 VPN 연결 (실제로 암호화 등)을 처리하도록하는 것이지만 대신 NetGuard는이 위치를 로컬에서만 사용하여 트래픽을 분석하고 필터링 할 수 있습니다. 내가 아는 한 NetGuard에는 실제 VPN 옵션이 없습니다 (AFWall +와 반대).
WhiteWinterWolf

내 호기심으로 인해 정답을 추적하지 않은 한 가지 이유는 앱이 업로드하는 shenanigans을 터널링하는 것이 일반적 이며이 VPN 메커니즘을 통해 터널링되는 데이터를 분석하고 필터링하는 것이 얼마나 효과적인지입니다.
cbar.tx

VPN 터널링은 다른 앱에 투명하며 인터넷에 직접 액세스 할 수 있다고 생각하지만 안드로이드는 실제로 VPN 인터페이스로 통신을 리디렉션합니다. 내가 아는 한, NetGuard는 데이터 자체를 분석하지 않고 레이어 3 프로토콜 정보 (IP 주소 및 플래그)와 Android 문서화되지 않은 트릭을 사용하여 패킷을 원래 앱에 연결합니다. 허용 여부.
WhiteWinterWolf

패킷을 응용 프로그램에 연결하는 데 사용되는 문서화되지 않은 Android 트릭은 없지만 문서화 된 Linux 커널 기능이 있습니다.
M66B

@ M66B : 정확성에 감사합니다. Izzy의 답변에 링크 된 XDA 기사 에 의존했습니다 . "우리는 다른 앱과의 트래픽을 구별하기 위해 커널의 파일에 문서화되지 않은 액세스를 사용해야합니다. 프로세스를 응용 프로그램 UID로 변환하는 "proc"파일 시스템.이 액세스는 SELinux에 의해 이후 버전의 Android에서 쉽게 차단 될 수 있으며보다 보안 지향적 인 장치에서도 차단 될 수 있습니다 .
WhiteWinterWolf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.