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;
[출처] iptables 사용법 (Update:20140722)|작성자 깜장토끼
'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 |