리눅스나 유닉스계열 서버의 접근통제 정책을 얘기할 때 iptables와 tcp wrapper를 많이 언급하고 그 둘의 장단점을 비교하지요. 보안기사에서도 시험에 종종 나오구요.
tcp wrapper는 inetd 데몬에서 처리하는 접근제어이고, 여기서는 iptables로 많이 알려진 기능을 지원해주는 netfilter의 개념을 설명하고자 합니다.
netfilter 개요
리눅스 커널소스를 보면, 네트워크관련 소스가 전체의 1/3 정도를 차지합니다. 그만큼 네트워크의 비중이 높다는 뜻인데요, 그 중에서도 netfilter는 리눅스 커널모듈로서 네트워크 패킷을 처리하기 위한 프레임워크입니다.
주요 제공 기능
- NAT(Network Address Translation) : 사설IP와 공인IP를 변환해주거나 포트변환 등
- Packet filtering : 특정 패킷을 차단 또는 허용하는 기능. 서버의 접근제어 또는 방화벽기능 구현 가능
- packet mangling : 필요시 패킷 헤더의 값을 변경
netfilter 구조
위에서 말한 5곳의 후킹지점은 위 그림의 kernel space에 해당하는 PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING 입니다.
- PREROUTING : 인터페이스를 통해 들어온 패킷을 가장 먼저 처리. 목적지 주소의 변경(DNAT)
- INPUT : 인터페이스를 통해 로컬 프로세스로 들어오는 패킷의 처리(즉, 패킷을 받아 처리할 프로세스가 내 시스템에서 동작하는 경우). INPUT에서 패킷 처리(차단/허용) 후 user space의 프로세스로 전달
- OUTPUT : 해당 프로세스에서 처리한 패킷을 밖으로 내보내는 패킷에 대한 처리(차단/허용)
- FORWARD : 다른 호스트로 통과시켜 보낼 패킷에 대한 처리(차단/허용). 방화벽이나 IPS 등과 같이 내가 수신하는 패킷이 아니고 지나가는 패킷을 처리
- POSTROUTING : 인터페이스를 통해 나갈 패킷에 대한 처리. 출발지 주소의 변경(SNAT)
iptables을 이용하여 netfilter에 룰을 넣자
- -A : add rule to chain
- -D : delete rule from chain
- -I : insert rule
- -R : replace rule
- -F : flush all rules
- -L : list all rules
- -N : create a new chain
- -X : delete user defined chain
- -P : set default target
netfilter 활용 예시
장비에 포트 2개가 있다면 지나가는 패킷이므로 한 포트로 들어가서 다른 한 포트로 나갈것이고 그 과정에 FORWARD에서 패킷을 허용한 것만 나갈 수 있겠죠.
정리
- 커널모듈로 네트워크 패킷을 처리할 수 있는 프레임웍이 있는데 그걸 netfilter라고 하는구나.
- netfilter는 INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING이라는 5개의 hook(후킹)지점을 제공하는구나.
- INPUT, OUTPUT은 내 서버의 로컬 프로세스로 전달하거나 로컬 프로세스에서 나가는 패킷들에 대한 처리를 할 수 있어서 내 서버를 보호하기 위한 접근통제에 사용할 수 있구나.
- FORWARD는 방화벽이나 IPS 등과같이 나의 시스템과는 관련은 없지만 지나가는 패킷을 처리할 때 네트워크 접근통제 정책을 설정할 수 있구나. 그리고 PREROUTING와 POSTROUTING은 NAT할 때 사용할 수 있구나.
- netfilter에 내가 원하는 정책을 넣어야 하는데 그럴 때 사용하는 프로그램이 iptables라는 것이구나. iptables은 그냥 룰을 넣고 조회하는 단순한 프로그램이구나.
- netfilter는 커널에서 통제를 하기 때문에 tcp wrapper처럼 어플리케이션 레벨에서 접근통제하는 것보다 우선순위가 높고 보안성이 우수하겠구나.
'네트워크 보안 이야기' 카테고리의 다른 글
가상랜 VLAN (0) | 2017.01.21 |
---|---|
L2 스위치, L3 스위치, L4 스위치, L7 스위치 (3) | 2017.01.15 |
OSI 7 계층 vs TCP/IP 계층 (1) | 2017.01.15 |
IPS vs IDS (0) | 2017.01.09 |