iptables란?


iptables는 리눅스상에서 방화벽을 설정하는 도구로서 커널 2.4 이전 버전에서 사용되던 ipchains를 대신하는 방화벽 도구이다.
iptables는 커널상에서의 netfilter 패킷필터링 기능을 사용자 공간에서 제어하는 수준으로 사용할 수 있다.

 

기본 구조
iptables -A INPUT -s [발신지] --sport [발신지 포트] -d [목적지] --dport [목적지 포트] -j [정책]

 

iptables 명령어


-A : 새로운 규칙을 추가한다. 
-D : 규칙을 삭제한다. 
-C : 패킷을 테스트한다. 
-I : 새로운 규칙을 삽입한다. 
-R : 새로운 규칙으로 교체한다. 
-L : 새로운 규칙을 출력한다. 
-F : 체인의 모든 규칙을 삭제한다. 
-Z : 모든 체인의 패킷과 바이트 카운터 값을 0으로 만든다. 
-N : 새로운 체인을 만든다. 
-X : 체인을 삭제한다. 
-P : 기본 정책을 변경한다. 
  
iptables 옵션 
-p : 패킷의 프로토콜의 포트번호 또는 이름을 명시한다. (ex : tcp, udp, 21, 22) 
-s : 패킷의 발신지를 명시한다. (ex : address[/mask]) 
-d : 패킷의 도착지를 명시한다. 
-i : 규칙을 적용할 인터페이스 이름을 명시한다. (ex : eth0, eth1) 
-j : 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시한다. 
-y : 접속 요청 패킷인 SYN 패킷을 허용하지 않는다. 
-f : 두 번째 이후의 조각에 대해 규칙을 명시한다. 

 

 

iptables 설치&확인

 

설치확인

* rpm -qa | grep iptables

 

아이피테이블즈 iptables.PNG

 

설치 안되있으면 설치

* yum -y install iptables

 

상태 확인

chkconfig --list

 

iptables 리스트확인.PNG

 

서비스 시작프로그램에 등록

* chkconfig iptables on

 

chkconfig on.PNG

 

서비스 시작

* service iptables start

 

 

iptables 출력

 

* iptables -nL

 

아이피테이블즈출력.PNG

 

룰셋 적용순서 확인

* iptables -nL --line-numbers

 

ip테이블즈 넘버.PNG

 

iptables 서비스정책 포트허용

 

* vi /etc/sysconfig/iptables 입력후 내용에 아래에 포트 추가

 

웹서버http (80)

iptables -A INPUT -p tcp --dport 53 -j ACCEPT 
iptables -A INPUT -p udp --dport 53 -j ACCEPT

 

웹서버https (443)

iptables -A INPUT -p tcp --dport 443 -j ACCEPT 

 

MySQL (3306)

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

 

FTP (21&passive mode) passive mode= 65535

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp –-sport 21 -j ACCEPT 


iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT 
iptables -A OUTPUT -p tcp --sport 1024:65535 -j ACCEPT

 

메일서버 SMTP (25)

iptables -A INPUT -p tcp --dport 25 -j ACCEPT 

서버에 요청 중입니다. 잠시만 기다려 주십시오...