안드로이드 네트워크 보안 구성(Network Security Configuration)이란?
네트워크 보안 구성은 앱이 소스 코드를 수정하지 않고도 선언적인 XML 파일 하나만으로 네트워크 보안 설정을 정의할 수 있게 해주는 안드로이드 기능입니다. 특정 도메인별로 세부 설정을 지정할 수도 있고, 앱 전체에 일괄 적용할 수도 있습니다.
예를 들어, 앱이 특정 자체 서명(self-signed) 인증서만 신뢰하도록 하거나, 신뢰할 수 있는 공개 CA(인증 기관) 목록을 제한적으로 지정하는 것도 가능합니다.
네트워크 구성 보안이란 무엇인가요?
네트워크 구성 보안은 컴퓨터와 네트워크 장비를 구축·설치하는 과정에서 불필요한 사이버 공격의 위험을 줄이기 위해 적용되는 일련의 보안 조치를 말합니다. 실제로 해커들이 가장 즐겨 찾는 취약점 중 하나가 바로 '잘못된 보안 설정(Misconfiguration)'입니다. 아무리 좋은 장비를 사용하더라도 초기 설정이 허술하면 큰 보안 사고로 이어질 수 있습니다.
네트워크 보안 설정 방법
공유기(라우터)의 네트워크 보안을 설정하는 기본 절차는 다음과 같습니다.
- 1단계: 브라우저에서 공유기 설정 페이지에 접속합니다.
- 2단계: 공유기 관리자 비밀번호를 확인하고, 기본값이라면 반드시 변경합니다.
- 3단계: 네트워크 이름(SSID)을 변경하여 기본값 사용을 피합니다.
- 4단계: WPA2 또는 WPA3 같은 강력한 암호화 방식을 활성화합니다.
- 5단계: MAC 주소 필터링을 설정해 허가된 기기만 접속하도록 제한합니다.
- 6단계: 무선 신호의 범위를 줄여 외부 노출을 최소화합니다.
cleartextTrafficPermitted란?
cleartextTrafficPermitted는 안드로이드 네트워크 보안 구성 파일에 포함된 플래그로, 평문(cleartext) 트래픽의 허용 여부를 제어합니다. Android 9(API 레벨 28)부터는 기본 구성에서 모든 앱의 평문 트래픽이 차단되므로, HTTP 통신이 필요한 경우 별도의 예외 설정이 필요합니다.
Flutter에서 네트워크 보안 구성 파일 추가하기
Flutter 프로젝트에서도 안드로이드의 네트워크 보안 구성 XML 파일을 그대로 활용할 수 있습니다. 먼저 해당 XML 파일을 생성한 뒤, AndroidManifest.xml의 <application> 태그 안에 파일을 참조하는 메타데이터 항목을 추가하면 됩니다. 이렇게 하면 Flutter 앱에도 동일한 네트워크 보안 정책이 적용됩니다.
안드로이드에서 평문 트래픽(Cleartext Traffic)이란?
평문 트래픽이란 전송되거나 저장되는 과정에서 암호화되지 않은 데이터를 의미합니다. 많은 앱이 서버와 통신할 때 사용하는 HTTP는 대표적인 개방형 채널로, 이를 통해 주고받는 데이터는 도청이나 콘텐츠 변조에 노출될 위험이 있습니다.
네트워크 구성(Network Configuration)이란?
네트워크 구성은 네트워크의 제어, 흐름, 운영을 통해 조직 또는 네트워크 소유자 간에 끊김 없는 원활한 통신이 이루어지도록 설정하는 작업을 말합니다. 네트워크를 구성하는 하드웨어, 소프트웨어, 그리고 기타 지원 요소와 장치들의 설정을 모두 포괄하는 넓은 개념입니다.
네트워크 보안의 주요 유형
네트워크 보안은 여러 계층의 방어 기법으로 구성됩니다. 대표적인 유형은 다음과 같습니다.
- 접근 제어(Access Control)
- 백신 및 안티멀웨어 소프트웨어
- 애플리케이션 보안
- 행동 분석(Behavioral Analytics)
- 데이터 손실 방지(DLP)
- DDoS(분산 서비스 거부) 공격 방지
- 이메일 보안
- 방화벽(Firewall)
가장 좋은 네트워크 보안 솔루션은?
일반 사용자에게는 Bitdefender가 가장 평가가 좋은 네트워크 보안 소프트웨어로 꼽힙니다. 여러 네트워크를 관리하는 MSP(관리 서비스 제공업체)에는 Avast CloudCare가 적합하며, Firemon은 손쉬운 네트워크 보안 관리를, WatchGuard는 실시간 네트워크 가시성을, Qualys는 네트워크 취약점 관리에 각각 강점을 가지고 있습니다.
네트워크 보안을 강화하는 방법
- 방화벽을 설치하고 성능을 지속적으로 모니터링합니다.
- 비밀번호를 연 3회 이상 정기적으로 변경합니다.
- 고급 엔드포인트 탐지(EDR) 솔루션을 도입합니다.
- VPN(가상 사설망)을 구축해 안전한 원격 접속 환경을 만듭니다.
- 보안 교육을 받은 담당자를 확보합니다.
- 스팸 메일을 필터링하고 삭제합니다.
- 사용하지 않는 컴퓨터는 전원을 꺼둡니다.
- 중요 파일은 암호화하여 보관합니다.
네트워크 장비 보안 방법
- 사용자가 접근 가능한 IP 범위를 제한합니다. 스위치나 방화벽에 직접 접근할 필요가 있는지 먼저 검토하세요.
- 모든 네트워크 장비에 SNMPv3를 적용합니다.
- 네트워크 장비의 비밀번호를 주기적으로 교체합니다.
- 사용하지 않는 네트워크 포트는 비활성화합니다.
- 장비 접속 시에는 Telnet 대신 SSH를 사용합니다.
'평문 트래픽 허용 안 됨' 오류 해결 방법
해결 방법은 의외로 간단합니다. AndroidManifest.xml에 android:usesCleartextTraffic="true"를 추가하거나, 네트워크 보안 구성 파일에 해당 도메인을 등록하고 cleartextTrafficPermitted="true"로 설정하면 됩니다. 다만 보안상 필요한 도메인에만 선택적으로 허용하는 것이 권장됩니다.
usesCleartextTraffic 속성의 용도
앱이 평문 트래픽을 처리하지 않도록 차단하려면 AndroidManifest.xml에서 android:usesCleartextTraffic="false"로 설정하면 됩니다. 이렇게 하면 향후 앱이 실수로 암호화되지 않은 통신을 수행하는 것을 방지할 수 있어 보안성이 크게 향상됩니다.