본문 바로가기

IT인생_스크랩/Linux

iptables 사용법

<출처: http://blog.naver.com/legoboss/100006537931 >

iptables으로 방화벽(firewall)을 구축할 수 있다고 하는 것 보면,
iptables는 firewall의 tool중 하나라고 할 수 있겠다.
 
만약 yahoo에 packet을 날린다면
OUTPUT 을 통해서 나간다.
그러면 kernel 이 output chain 의 rule을 확인하고,
rule과 match되는지를 검사한다.
이때 어떤 rule 과도 match 가 되지 않는다면,
이 때는 chain의 policy 로 결정이 된다.
chain 의 정책이 ACCEPT이면, 모두 들어오는 것이고(rule에 걸리지 않은 넘)
DROP이면 packet 을 완전히 무시해 버린다.
DENY는 일단 packet을 받고, 연결을 허용하지 않는다며,
메세지를 돌려보내는 것
 
그리고 YAHOO 로 부터 오는 ACK packet은
INPUT 을 통해 들어온다.
 
----------------------begin script--
#!/bin/sh
# 우선 모든 Rule을 정리한다.
/sbin/iptables -F
 
#다음으로 각각에 대한 정책을 세운다.
// INPUT chain 의 policy 를 DROP으로 한다.
/sbin/iptables -P INPUT DROP
// OUTPUT chain 의 policy 를 ACCEPT로 한다.
/sbin/iptables -P OUTPUT ACCEPT
// FORWARD chain 의 policy 를 DROP으로 한다.
/sbin/iptables -P FORWARD DROP
 
#localhost에서의 traffic을 받아들인다.
// INPUT chain 에 append 한다. lo(localhost)라는 interface를 이용한 packet들을
ACCEPT로 jump 시킨다.
/sbin/iptables -A INPUT -i lo -j ACCEPT
 
# 확립된 연결에 대한 Packet을 받아들인다.
// ! --syn 는 syn bit 이 set 되어 있지 않고, ACK(ACK 랑 뭔지 모르겠음)가 set 되어 있는것
/sbin/iptables -A INPUT -i eth0 -p tcp ! --syn -j ACCEPT
 
# DNS 응답을 받아들인다.
/sbin/iptables -A INPUT -i eth0 -p tcp --source-port 53 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p udp --source-port 53 -j ACCEPT
 
# 인증 연결을 거부한다(그렇지 않을 경우 메일서버가 오랫동안 타임아웃
상태가 될 것이다.)
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 113 -j REJECT
 
# echo나 목적지에 도착 못하거나 시간 초과된 icmp packet들을 받아들인다.
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 0 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 3 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 11 -j ACCEPT
 
----------------------end script—
 
이렇게 하면, 기본적으로 INPUT은 다 DROP 이기 때문에
다른 곳에서 ping 을 때려도 ping 에 대한 응답이 오지 않는다.
그리고 INPUT안에 개별적으로 만들어 놓은 rule에 의해서
몇몇의 case만이 들어오게 될 것이고, 나머지는 DROP이다.

'IT인생_스크랩 > Linux' 카테고리의 다른 글

리눅스 하드디스크 추가하기  (0) 2010.06.23
리눅스 FTP Passive mode 설정  (0) 2010.06.23
NTP 시간 설정  (0) 2010.06.23
리눅스 2TB 이상 파티션 생성  (0) 2010.06.23
iptables 기본 사용법  (0) 2010.06.23