IPTABLES
- service iptables start
iptables의 구문은 여러 부분으로 나뉘어지며 중요한 부분은 chain이다. chain은 패킷이 조작될 상태를 지정하며 사용법은 다음과 같다.
- iptables -A chain -j target
-A 옵션은 기존 규칙에 또 다른 규칙을 추가하며, chain은 규칙에 사용될 chain의 이름이다. iptables에 내장된 3가지 chain은 [INPUT, OUTPUT, FORWARD]이다. 이 3가지 chain은 영구적이며 삭제가 불가능하다. -j target 옵션은 iptables에서 이 특정 규칙을 jump하도록 지시한다. jump는 [ACCEPT, DROP, REGECT]가 있다.
CHAIN
- INPUT : 호스트 컴퓨터를 향한 모든 패킷
- OUTPUT : 호스트 컴퓨터에서 발생하는 모든 패킷
- FORWARD : 호스트 컴퓨터가 목적지가 아닌 모든 패킷, 라우터로 사용되는 호스트 컴퓨터를 통과하는 패킷
새로운 chain은 -N 옵션을 사용하여 생성 가능하다.
TARGET
- ACCEPT : 패킷을 받음
- DROP : 패킷을 버림
- REJECT : 패킷을 버리고 적절한 응답 패킷을 전송
- LOG : 패킷을 Syslog에 기록
- RETURN : 호출 체인 내에서 패킷 처리를 계속
MATCH
- —source (-s) : 출발지 IP 주소나 네트워크와의 매칭
- —destination (-d) : 목적지 IP 주소나 네트워크와의 매칭
- —protocol (-p) : 특정 프로토콜과의 매칭
- —in-interface (-i) : 입력 인터페이스
- —out-interface (-o) : 출력 인터페이스
- —state : 연결 상태와의 매칭
- —string : 애플리케이션 계층 데이터 바이트 순서와의 매칭
- —comment : 커널 메모리 내의 규칙과 연계되는 최대 256 바이트 주석
- —syn (-y) : syn 패킷을 허용하지 않음
- —fragment (-f) : 두번째 이후의 조각에 대해서 규칙 명시
- —table (-t) : 처리 될 테이블
- —jump (-j) : 규칙에 맞는 패킷을 어떻게 처리해야하는지 명시
- —match (-m) : 특정 모듈과의 매치
1. 기본 방화벽 정책
- iptables -P INPUT DROP
- iptables -P OUTPUT DROP
모든 패킷을 DROP 하며 상황 별로 특정 패킷을 허용하는 정책, 위의 규칙은 네트워크 게이트웨이에서 들어오고 나가는 모든 패킷을 막는 규칙이다.
- iptables -P FORWARD DROP
위의 규칙은 방화벽에서 라우팅되는 네트워크 트래픽을 거부하여 내부 클라이언트가 의도치않게 노출되는 것을 방지해준다.
- /sbin/service iptables save
규칙을 저장하는 명령어 (/etc/sysconfig/iptables 아래에 파일로 저장)
2. 일반 필터링
- iptables -A INPUT -p tcp -m tcp —sport 80 -j ACCEPT
- iptables -A OUTPUT -p tcp -m tcp —dport 80 -j ACCEPT
80 포트에 대한 액세스를 허용하는 규칙이다. iptables 규칙을 만들 때에는 순서가 매우 중요하기 때문에 이를 주의하여야한다. 규칙에 대해 순서를 지정하려면 아래 명령어를 사용한다.
- iptables -I INPUT 1 -i lo -p all -j ACCEPT
위 명령어는 INPUT chain의 첫번째 규칙으로 삽입되며 로컬 lo 장치 트래픽을 허용한다. 일반적인 필터링은 제너럴한 서비스에는 액세스를 허용하지만 방화벽으로 부터 보호된 시스템은 접근할 수 없다. 이를 제어하기 위해 NAT를 사용한다.
3. FORWARD와 NAT 규칙
공공 IP는 제한되어 있기 때문에 대부분 사설 IP 주소를 사용한다.
- iptables -A FORWARD -i eth1 -j ACCEPT
- iptables -A FORWARD -o eth1 -j ACCEPT
위 규칙은 방화벽/게이트웨이 뒤에 위치한 시스템이 내부 네트워크에 접근할 수 있도록 설정한다. 게이트웨이는 한 LAN 네트워크로부터 들어오는 모든 패킷을 eth1 장치를 통해 대상 네트워크로 라우팅한다.
4. IPTABLES 출력
- iptables -nL
- iptables -nL —line-numbers