-
리눅스 iptables 설정리눅스 2014. 6. 2. 20:44
체인 (chain)
- 패킷이 이동하는 경로를 나타냄
- 각각의 table은 각각의 다른 chain을 가지고 있음
ex) filter 테이블은 INPUT, FORWARD, OUTPUT chain이 있음
- rule은 각각의 chain에 설정하는 일련의 방화벽 정책을 뜻함
- 패킷은 어떠한 경로, 즉 어떤 chain을 통해 이동하는가?, 방화벽 자체로 향하는 패킷, 방화벽을 통과하여
방화벽 내부에 위치한 다른 서버를 향하는 패킷
iptable 정의
- 강력한 패킷필터링 툴 중 하나로 설정할 때 사용되는 패킷이다.
* 패킷 : 헤더와 데이터를 묶어논 것을 패킷이라고 한다. 헤더에는 출발지 ip, 도착지 ip, checksum, 프로토콜
옵셋 등을 가지며 데이터에는 전송 데이터 정보가 들어간다.
명령어(commond)
- A : 새로운 규칙을 추가한다
- D : 규칙을 삭제한다.
- C : 패킷을 테스트한다.
- R : 새로운 규칙을 삽입한다.
- I : 새로운 규칙을 삽입한다.
- L : 규칙을 출력한다
- F : chain으로부터 규칙을 모두 삭제한다.
- Z : 모든 chain의 패킷과 바이트 카운터 값을 0으로 만든다.
- N : 새로운 chain을 만든다
- X : chain을 삭제한다
- P : 기본정책을 변경한다.
- E : 체인의 이름을 변경한다.
iptables 체인 종류
- INPUT : 로컬로 들어오는 패킷(입력 패킷)
- FOWARD : INPUT와 OUTPUT 역할, 라우터에 바와벽을 적용할 때 쓰임
- OUTPUT : 외부로 나가는 패킷 (출력 패킷)
INPUT 체인에 사용자 정의로 체인을 추가하여 INPUT 체인 대신에 사용할 수 이슨데, 페도라 코어의 경우는
RH-Firewall-1-INPUT라는 사용자 정의 체인을 사용한다. 3개의 기본 체인은 수정이나 삭제가 불가능하다.
옵션(option)
-s : 출발지 IP 주소나 네트워크와 매칭
-p : 특정 프로토콜과 매칭
-d : 목적지 IP 주소나 네트워크와 매칭
-i : 입력 인터페이스와 매칭
-j : 어떻게 처리할것인가
-y : syn허용 안함
-f : 두번째 이후조각에 대해서 규칙명시
-o : 출력 인터페이스와 매칭
--state : 연결 상태와 매칭
--string : 특정한 패턴과 매칭
--comment : 커널 메모리 내의 규칙과 연계되는 최대 256바이트의 주석
① DNS 포트 허용
iptables -A INPUT -p udp -m udp --sport 53 -j ACCEPT
iptalbes -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
② SSH 포트 허용 (192.168.0.1 -> 172.16.1.20)
iptables -A INPUT -s 172.16.1.20 -p tcp -m tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -d 172.16.1.20 -p tcp -m tcp --dport 22 -j ACCEPT
③ HTTP 포트 허용
iptables -A INPUT -i eh0 -p tcp -m tcp --sport 80 --dport 1024:65535 -j ACCEPT
iptables -D INPUT -o eh0 -p tcp -m tcp --sport 1024:65535 -dport 80 -j ACCEPT
④ FTP 포트 허용
+ 명령(제어) 포트()
예제 :
- 중국발 해킹을 통하여 웹서버를 공격하고 있다는 사실을 알았다.
찾아낸 IP는 10.10.1.1 ~ 10.10.1.255, 10.10.2.3, 10.10.3.5 와 같으며 접근 통제 정책을 통하여
위의 IP에 대하여 WEB 접속을 거부하라, 단, 10.10.1.33 IP는 web 접속을 허락하여야 한다.
- A INPUT -s 10.10.1.33 -p tcp --dport 80 -j ACCEPT
- A INPUT -s 10.10.1.1/10.10.1.255 -p tcp --dport 80 -j DROP
- A INPUT -s 10.10.2.3 -p tcp --dport 80 -j DROP
- A INPUT -s 10.10.3.5 -p tcp --dport 80 -j DROP
- PING 명령어는 서버 내부에서는 사용가능해야 하며, 192.168.1.13, 192.168.1.11 IP를 제외하고는
모두 거부하라.
- A INPUT -s 192.168.1.13 -p icmp --icmp-type echo-request -j ACCEPT
- A INPUT -s 192.168.1.11 -p icmp --icmp-type echo-request -j ACCEPT
- A INPUT -p imcp --icmp-type echo-request -j DROP
- 110포트와 143포트는 locallhost와 192.168.1.13, 192.168.1.11 애서는 허용하고
외부에서는 차단하라.
- A INPUT -s 192.168.1.13 -p tcp --dport 110 -j ACCEPT
- A INPUT -s 192.168.1.11 -p tcp --dport 110 -j ACCEPT
- A INPUT -p tcp -m tcp --dport 110 -j DROP
- A INPUT -s 192.168.1.13 -p tcp --dport 143 -j ACCEPT
- A INPUT -s 192.168.1.11 -p tcp --dport 143 -j ACCEPT
- A INPUT -p tcp -m tcp --dport 143 -j DROP
'리눅스' 카테고리의 다른 글
리눅스 아파치 소스 설치!! (0) 2014.07.03 리눅스 yum 설치하는 방법 (0) 2014.06.18 swap(스왑) 이란? (0) 2014.06.02 NAT 와 Bridged Networking 개념 정리 (0) 2014.05.31 파일시스템 주요 디렉터리(etc,usr,sbin,bin,var,tmp,dev) (0) 2014.05.30