2016년 4월 21일 목요일

네트워크 기반 침입차단(iptables)

[출처 : http://blog.naver.com/ ]





[Cent]                                                [Fedora]                                           [Win2003]
eth 0 : 192.168.10.10                          eth 0 : 10.1.1.20                                로컬 : 10.1.1.30
            255.255.255.0                                       255.255.255.0                                 255.255.255.0
            192.168.10.2                                        10.1.1.1                                            10.1.1.1
eth 1 : 10.1.1.1
            255.255.255.0


FOWARD는 통과하는 패킷에 대해 설정을 할 때 사용한다.

예졔1> XP에서 Fedora로 web, telnet 접속만 허락하는 설정을 하라.
[Cent]
#iptables -P FORWARD DROP
#iptables -A FORWARD -d 10.1.1.20 -p tcp -m multiport --dport 23,80 -j ACCEPT
#iptalbes -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

예졔2> Fedora에서 xp로 ftp만 허용하는 설정을 하라.
[Fedora]
#iptables -A FORWARD -s 10.1.1.20 -p tcp --dport 21 -j ACCEPT
#iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


IP MASQUERADE 설정

1. POSTROUTING
   내부의 사설 IP가 라우터를 거쳐 공인 IP를 가지고 외부로 나갈 수 있는 것이며 eth0에 설정된 공인IP로 변환된다.
   - MASQUERADE target : 방화벽의 공인 IP가 유동 IP인 경우 이용한다.
                                          공인 IP를 가지고 외부로 나간다.
   - SNAT target : 방화벽의 공인 IP가 고정 IP인 경우 사용한다.
                             방화벽 자체에서 IP를 할당하여 유연하게 공인 IP를 가지고 나간다.

2. PREROUTING
   외부의 공인 IP가 라우터를 거쳐 내부 IP로 들어올수 있는 것
    - DNAT target : 목적지 주소만 변경된다.

3. OUTPUT


ㅁ POSTROUTING MASQUERADE
방화벽 eth0에 설정된 ip주소로 변환해서 나가도록 하는 것이다.


내부            -------->   eth1    -------->       eth0         --------> 외부
10.1.1.0/24               10.1.1.1                 192.168.77.10               


예제1> 내부에서 외부로 나갈때 eth0의 ip를 달고 나가는지 확인해보자
[Fedora]
#telnet 192.168.10.1 135

[xp]
C:\>netstat -apn tcp
-> Fedora의 주소가 10.1.1.20으로 접속한 것을 확인 가능하다.


[Cent]
#iptables -P FORWARD ACCEPT
#iptables -F
#iptables -A POSTROUTING -t nat -s 10.1.1.0/24 -j MASQUERADE
#iptables -nL -t nat
#telnet 192.168.77.1 135

[Fedora]
#telnet 192.168.10.1 135

[xp]
C:\>netstat -apn tcp
-> 10.1.1.20(Fedora)이 192.168.10.10:xxxxx로 ip매스커레이드 된것을 확인 가능하다.

예제2> 사용할 특정 포트를 지정해보아라.
[Cent]
#iptables -F -t nat
#iptables -A POSTROUTING -t nat -s 10.1.1.0/24 -p tcp -j MASQUERADE --to-port 3000-5000
-> 3000번 포트에서 5000번 사이의 포트를 달고 나간다.

[Fedora]
#telnet 192.168.10.1 445

[xp]
C:\>netstat -apn tcp
-> 3000-5000번 사이의 포트를 할당받아 나왔다.


ㅁ POSTROUTING SNAT
 방화벽의 eth0의 여러개의 ip를 사용하는 경우 ip중 하나를 선택해서 나가도록 하는 것이다.
 외부에서 방화벽을 통과해서 들어오려고 할때 POSTROUTING을 이용한다.

                                                 방화벽
내부         ---------->      eth1 ------>  eth0        ----------> 외부
eth0의 ip

[Cent]
#cd /etc/sysconfig/network-scripts
#cp ifcfg-eth0 ifcfg-eth0:1
#cp ifcfg-eth0 ifcfg-eth0:2
#vi ifcfg-eth0:1
-> DEVICE=eth0:1
    IPADDR=192.168.10.11
#vi ifcfg-eth0:2
-> DEVICE=eth0:2
    IPADDR=192.168.10.12
#service network restart


예제1> 내부의 컴퓨터가 xp의 135포트로 접속할 때는 192.168.10.12를 이용하고,
           나머지 모든 포트로 접속할 때는 192.168.10.11을 이용하도록 설정하라.
[Cent]
#iptables -A POSTROUTING -t nat -s 10.1.1.0/24 -d 192.168.10.1 -p tcp --dport 135 -j SNAT --to-source
  192.168.10.12
#iptables -I POSTROUTING 2 -t nat -s 10.1.1.0/24 -j SNAT --to-source 192.168.10.11

[Fedora]
#telnet 192.168.10.1 445
#telnet 192.168.10.1 135

[xp]
C:\>netstat -apn tcp
-> 해당 포트에 맞제 11번과 12번이 ip가 들어온다.



ㅁ PREROUTING
목적지 주소를 변경하려 할 때 사용한다. DNAT Target을 이용한다.

예제1> xp에서 Cent 192.168.10.10 과 192.168.10.11 의 23번 포트로 들어오는 것과 192.168.10.12의
           80번 포트로  들어오는 것을 전부 10.1.1.20으로 변환시켜라.
#iptables -A PREROUTING -t nat -d 192.168.10.10 -p tcp --dport 23 -j DNAT --to-destination 10.1.1.20
#iptables -A PREROUTING -t nat -d 192.168.10.11 -p tcp --dport 23 -j DNAT --to-destination 10.1.1.20
#iptables -A PREROUTING -t nat -d 192.168.10.12 -p tcp --dport 23 -j DNAT --to-destination 10.1.1.20


ㅁ REDIRECT target
포트를 변경 시킬 때 사용한다.

예제1> 목적지가 Fedora의 2222포트로 들어오면 Cent의 80번 포트로 변경시키는 설정을 하라.
[Cent]
#iptables -A PREROUTING -t nat -d 10.1.1.0/24 -p tcp --dport 2222 -j REDIRECT --to-ports 80

[Fedora]
#service httpd stop

[xp]
-> Fedora로 목적지가 되면 Cent방화벽에서 REDIRECT를 시켜서 Cent의 80번포트로 바꾼다.
    즉, Cent는 외부로부터 2222포트로 들어온 패킷을 Cent에서 Listen하고 있는 80번 포트로 REDIRECT한 것이다.

댓글 없음:

댓글 쓰기