본문 바로가기

Programming

iptables


iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

 

 

위의 명령으로 모든것을 다 드럽시킨 상태에서 시작을 하겠습니다.

 

### local
iptables -A INPUT -p ALL -i $LO_IFACE -j ACCEPT
iptables -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT

 

위의 내용은 내부 통신을 허용하는 것입니다.

 

### telnet server
###
iptables -A INPUT -p TCP --destination-port 23 -j ACCEPT
iptables -A OUTPUT -p TCP --source-port 23 -j ACCEPT

 

위의 내용은 텔넷 서비스를 허용하는 것입니다.

 

### ftp server
###
iptables -A INPUT -p TCP --destination-port 21 -j ACCEPT
iptables -A OUTPUT -p TCP --source-port 21 -j ACCEPT

 

위의 내용은 ftp 서비스를 허용하는 것입니다.

 

### Ping
###
iptables -A INPUT -p ICMP --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p ICMP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p ICMP --icmp-type 8 -j ACCEPT
iptables -A INPUT -p ICMP -m state --state ESTABLISHED,RELATED -j ACCEPT

 

위의 내용은 ping 서비스를 허용하는 것입니다.

 

### DNS Client
iptables -A OUTPUT -p UDP --destination-port 53 -j ACCEPT
iptables -A INPUT -p UDP --source-port 53 -j ACCEPT
iptables -A OUTPUT -p TCP --destination-port 53 -j ACCEPT
iptables -A INPUT -p TCP --source-port 53 -m state --state ESTABLISHED,RELATED -j ACCEPT

 

위의 내용은 dns 쿼리를 허용하는 것입니다.

 

### WEB Server
###
iptables -A INPUT -p TCP --destination-port 80 -j ACCEPT
iptables -A OUTPUT -p TCP --source-port 80 -j ACCEPT

 

전체 Chain 조회

iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

DROP       tcp  --  anywhere             anywhere             tcp dpt:ftp


Chain FORWARD (policy ACCEPT)

target     prot opt source               destination         

ACCEPT     all  --  anywhere             anywhere            


Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination   

DROP       tcp  --  anywhere             anywhere             tcp dpt:http

  

INPUT Chain 조회

iptables -L INPUT

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

DROP       tcp  --  anywhere             anywhere             tcp dpt:ftp

  

포트와 대상 등에 사용되는 영문 표현식을 없애고 숫자 표현식을 사용해서 조회


INPUT Chain 조회

iptables -nL INPUT

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:21

  

 

>>>>> 룰(Rule) 초기화(Flush)

 

전체 Chain 초기화

iptables -F

  

OUTPUT Chain 초기화

iptables -F OUTPUT

  

 

>>>>> 특정 IP만 허용하기 (Update:2014/07/22 15:30:53)

 

TARGET중 REJECT는 에러 패킷을 되돌려 보내지만 DROP은 아무런 동작을 하지 않고 그대로 패킷을 버려버립니다.


정책적인 결정에 의해 거부되는 대상에 대해서는 REJECT를 사용해서 거부가 되었음을 명시적으로 알려주는게 좋고 불특정 대상을 제한하고자 하는 경우 거부되었다는 정보조차도 전달하지 않는 것이 좋습니다.

 

TARGET에 대한 보다 자세한 정보는 Man Page (man iptables-extentions)를 참조하세요.

 

80포트에 대해 특정 IP만 허용하고 그 외 모든 IP를 막는 예제입니다. 입력하는 순서에 따라서 적용되는 순서가 결정되므로 다음 두 예제의 차이를 이해하세요!

 

잘못 적용된 예, 모든 IP가 거부됨

iptables -F

iptables -A INPUT -p tcp --dport 80 -j REJECT;

iptables -L INPUT

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

REJECT     tcp  --  anywhere             anywhere             tcp dpt:http reject-with icmp-port-unreachable

iptables -A INPUT -p tcp -s 10.211.55.9  --dport 80 -j ACCEPT;

iptables -L INPUT

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

REJECT     tcp  --  anywhere             anywhere             tcp dpt:http reject-with icmp-port-unreachable

ACCEPT     tcp  --  10.211.55.9          anywhere             tcp dpt:http

 

이처럼 우선 적용되어야 할 정책이 나중에 입력되는 경우 -I 옵션으로 우선 적용시켜주어야 합니다.

iptables -F

iptables -A INPUT -p tcp --dport 80 -j REJECT;

iptables -I INPUT -p tcp -s 10.211.55.9  --dport 80 -j ACCEPT;

iptables -L INPUT

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

ACCEPT     tcp  --  10.211.55.9          anywhere             tcp dpt:http

REJECT     tcp  --  anywhere             anywhere             tcp dpt:http reject-with icmp-port-unreachable

 

아니면 우선 적용되어야 할 정책을 먼저 입력해주시면 됩니다.

iptables -F

iptables -A INPUT -p tcp -s 10.211.55.9  --dport 80 -j ACCEPT;

iptables -A INPUT -p tcp --dport 80 -j REJECT;

  


'Programming' 카테고리의 다른 글

Visual Studio 단축키  (0) 2009.04.08
Windows 2000 공유 해결 방법  (0) 2009.03.24
xml & xml schema(xsd) association  (0) 2008.11.10
코드 검색 사이트  (0) 2008.11.08
윈도우에서 XSLT 사용시 주의할점  (0) 2008.10.28