패킷 필터링이란 무엇인가?
패킷 필터링(packet filtering)은 구현 비용이 매우 낮은 기본적인 네트워크 보안 기술입니다. 다만 패킷 필터링 장치는 애플리케이션 게이트웨이나 프록시 방화벽만큼 강력한 보안 수준을 제공하지는 못한다는 점을 이해해야 합니다.
사실상 모든 IP 네트워크는 IP 서브넷으로 나뉘어 있으며 라우터를 포함합니다. 그리고 각 라우터는 잠재적인 필터링 지점이 될 수 있습니다. 라우터라는 인프라가 이미 갖춰져 있기 때문에, 패킷 필터링을 위해 추가로 큰 비용을 들일 필요가 없습니다.
패킷 필터링이 적합한 환경
패킷 필터링은 보안 요구 사항이 단순한 환경에 적합합니다. 일부 조직의 내부(사설) 네트워크는 세분화되어 있지 않아, 조직 내 한 부서와 다른 부서를 분리하는 데 고도의 방화벽이 반드시 필요하지 않습니다.
그러나 운영(프로덕션) 네트워크를 연구실이나 실험용 네트워크로부터 어느 정도 보호하는 것은 현명한 조치입니다. 이러한 경우 패킷 필터링 장치는 하나의 서브넷을 다른 서브넷으로부터 격리하는 데 매우 적합한 수단이 됩니다.
패킷 필터의 작동 원리
대부분의 패킷 필터는 공통된 방식으로 작동합니다. 패킷 필터는 TCP/IP 프로토콜 스택의 네트워크 계층과 전송 계층에서 동작하며, 각 패킷이 프로토콜 스택에 진입할 때마다 이를 검사합니다. 이때 네트워크 헤더와 전송 헤더를 면밀히 살펴 다음과 같은 정보를 확인합니다.
1. 프로토콜 (IP 헤더 · 네트워크 계층)
IP 헤더의 9번째 바이트(바이트 번호는 0부터 시작)는 해당 패킷의 프로토콜을 식별합니다. 일부 필터링 장치는 TCP, UDP, ICMP를 서로 구분할 수 있는 기능을 갖추고 있습니다.
2. 출발지 주소 (IP 헤더 · 네트워크 계층)
출발지 주소(source address)는 패킷을 생성한 호스트의 32비트 IP 주소입니다.
3. 목적지 주소 (IP 헤더 · 네트워크 계층)
목적지 주소(destination address)는 해당 패킷이 전달될 대상 호스트의 32비트 IP 주소입니다.
4. 출발지 포트 (TCP/UDP 헤더 · 전송 계층)
TCP 또는 UDP 인터넷 연결의 양 끝단은 각각 포트에 바인딩됩니다. TCP 포트와 UDP 포트는 서로 별개의 체계이며, 1024 미만의 포트 번호는 예약되어 있어 용도가 명확하게 정의되어 있습니다.
1024번 이상의 포트는 '임시 포트(ephemeral port)'라고 하며, 벤더가 자유롭게 선택해 사용할 수 있습니다. 잘 알려진(well-known) 포트 목록은 RFC 1700에 정의되어 있습니다(현재는 IANA의 포트 번호 등록 데이터베이스로 대체되었습니다). 출발지 포트는 의사 난수(pseudo-random) 방식으로 할당된 임시 포트 번호이므로, 출발지 포트를 기준으로 필터링하는 것은 큰 효과가 없습니다.
5. 목적지 포트 (TCP/UDP 헤더 · 전송 계층)
목적지 포트 번호는 패킷이 향하는 포트를 나타냅니다. 목적지 호스트의 각 서비스는 특정 포트에서 요청을 받아들이며, 대표적으로 자주 언급되는 포트는 다음과 같습니다.
- 20/TCP, 21/TCP — FTP 데이터 전송 / 제어 연결
- 23/TCP — 텔넷(telnet)
- 80/TCP — HTTP
- 53/TCP — DNS 영역 전송(zone transfer)
6. 연결 상태 (TCP 헤더 · 전송 계층)
연결 상태(connection status)는 해당 패킷이 네트워크 세션의 첫 번째 패킷인지 여부를 나타냅니다. 세션의 첫 패킷이라면 TCP 헤더의 ACK 플래그가 0(false)으로 설정됩니다. 따라서 ACK 비트가 0으로 설정된 패킷을 거부하거나 폐기하는 방식으로, 외부 호스트가 새로운 연결을 생성하는 것을 손쉽게 차단할 수 있습니다.