2015. 4. 21. 14:13
Iptables


정의

리눅스 서버의 방화벽은 패킷 필터링 규칙을 통해 설정되는데 이 패킷 필터링은 커널에 탑재된 netfilter 기능으로 한다. netfilter가 어떠한 작동을 하게끔 룰을 세워줘야 하는데 그것을 해주는 것이 iptables이다.

예를들면 이렇다. 54.1.1.0/24 네트워크가 서버로 들어오면 차단 되는 시나리오가 있다. 이때 54.1.1.0/24 네트워크가 서버로 들어오면 차단이라는 룰을 세우는건 iptables가 하고, 패킷 차단을 시키는것은 netfilter가 하게 되는것이다.


기본체인

  종류

    INPUT chain :

외부로 부터 자신에게 접근 하는 것에 대한 설정. 즉 목적지 주소가 자신일때 이다.

    FORWARD chain :

외부로 부터 접속하는건 같으나 자신을 거쳐 가는 것에 대한 설정. 목적지 주소는 자신이 아니며, 보통 게이트웨이 역할을 할때 이다.

    OUTPUT chain :

자신의 나가는 패킷에 대한 설정. 출발지 주소가 자신일때 이다.


  규칙

-L : 규칙 리스트보기

-F : 규칙 초기화

-D : 규칙 삭제

-s : 출발지 주소지정

-d : 목적지 주소지정

-p : 프로토콜지정

-j : 패킷 정책 지정

-i : IN 인터페이스 지정

-o : OUT 인터페이스 지정

-t : table 지정

--dport : 목적지 포트지정

--sport : 출발지 포트지정


예제

  초기화

모든패킷 초기화 

# iptables -F

    INPUT

서버로 오는 패킷 모든 패킷 차단

# iptables -A INPUT -j DROP


서버로 오는 웹 접속요청만 차단

# iptables -A INPUT -p tcp --dport 80 -j DROP

# iptables -A INPUT -j ACCEPT


172.168.0.1 PC만 빼고 모든 접속 허용

# iptables -A INPUT -s ! 172.168.0.1 -j ACCEPT

# iptables -A INPUT -j DROP


172.168.0.0/24 네트워크의 ICMP 요청패킷만 막기

# iptables -A INPUT -s 172.168.0.0/24 -p icmp --icmp-type 8 -j DROP

# iptables -A INPUT -j ACCEPT


172.168.0.0/24 네트워크의 tcp 요청패킷만 막기

# iptables -A INPUT -s 172.168.0.0/24 -p tcp --syn -j DROP

# iptables -A INPUT -j ACCEPT


    FORWARD

ip_forward를 1로 변경후 작업


PC1에서 PC2로 가는 웹접속만 허용

# iptables -A FORWARD -p tcp --dport 80 -s 54.16.0.10  -d 192.168.0.10 -j ACCEPT

# iptables -A FORWARD -s 54.16.0.10 -d 192.168.0.10 -j DROP


192.168.0.0/24 네트워크로 가는 tcp 요청 패킷 막기

# iptables -A FORWARD -p tcp --syn -d 192.168.0.0/24 -j DROP

# iptables -A FORWARD -j ACCEPT


192.168.0.0/24 네트워크에서 다른 네트워크대역의 웹서버 접근 막기

# iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/24 -j DROP

# iptables -A FORWARD -j ACCEPT


    POSTROUTING

192.168.0.0/24 네트워크의 발신지 주소 변경

# iptables -t nat -A POSTROUTRING -s 192.168.0.0/24 -o eth1 -j SNAT --to 54.10.1.1


    PREROUTING

54.10.1.1:80으로 접속 해올시 패킷을 192.168.0.10:80으로 재전송

#iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.0.10:80

    

'OPS > LInux' 카테고리의 다른 글

LVM  (0) 2015.04.26
NIS  (0) 2015.04.26
NFS  (0) 2015.04.26
openVPN  (0) 2015.04.26
squid  (0) 2015.04.26
Posted by 배주혁