Linux 에도 iptables 라는 방화벽 기능이 있습니다. ( Linux Kernel v2.4 이전에는 ipchains로 사용되었습니다. )
Legacy : iptables
Cloud : Security Group
Container : Network Policy
Q. iptables 가 뭘하나요?
iptables 기능은 Kernel 상에서 netfilter 라는 패킷필터링 기능을 사용자 공간에서 사용할 수 있게 해줍니다.
기본적으로 Network Device 에 설정값으로 Kernel 이 패킷들을 필터링을 하지만 인위적으로 필터링할 패킷들을 설정하기 위해 사용할 수 있습니다.
Q. 패킷필터링은 뭔가요?
Kernel 이 수신하는 트래픽 (패킷) 의 헤더를 보고 그 전체 패킷의 방향을 결정하는 것을 말합니다.
일반적으로 패킷은 헤더와 데이터를 가지고 있습니다.
UDP 프로토콜의 헤더 입니다. ( 이외에도 TCP, IP , ARP, ... 등의 프로토콜 헤더가 있습니다. 여기 참조)
Destination Port 를 확인하여 패킷의 목적지로 확인되면 패킷을 허용(ACCEPT) 합니다.
Q. iptables 를 어떻게 사용하나요?
iptables 는 특정 패킷필터링을 하기 위해 정책을 설정해주어야 합니다.
현재 Server 를 기점으로
INPUT : Server 로 들어오는 트래픽 정책
OUTPUT : Server로부터 나가는 트래픽 정책
FORWARD : Server가 트래픽을 전달하는 트래픽 정책
마스커레이드 (Masquerade) - 내부 사설 IP의 PC들이 외부 인터넷이 연결 가능하도록 해주는 기능
NAT (Network Address Translation) : 네트워크 주소 변환 서비스 - SNAT (Source NAT): 내부 사설IP에서 외부로 나갈 때 공인IP로 변환 - DNAT (Destination NAT) : 외부에서 방화벽(외부IP)으로 요청되는 주소로 내부사설IP로 변환
일반적으로 INPUT 정책은 보안에 큰 영향을 주기 때문에 안전한 정책을 설정해주어야 하지만
OUTPUT 정책의 경우는 대부분 수신한 곳으로 응답을 해주는 역할이기 때문에 큰 영향이 없다.