질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

리눅스 DNAT 방화벽 구축시 문제

작성자 정보

  • 홍석범 작성
  • 작성일

컨텐츠 정보

본문

안녕하십니까? 오늘과내일의 홍석범입니다.

일단 책에 있는 스크립트 예제를 다시한번 살펴보시기 바라며 중요한 부분만 지적해 드리면

(1) DNAT라 하더라도 아래 세 IP에 대해 POSTROUTING 으로 매칭을 해 주셔야 합니다.
이때, 기존 POSTROUTING보다 앞에 선언해 주셔야 합니다.

58.72.188.140 == 192.168.10.10
58.72.188.141 == 192.168.10.20
58.72.188.141 == 192.168.10.210

(2)상태추적에서 N,E,R 모두를 허용하는 것은 방화벽 설정의 의미가 없습니다.
따라서 E,R만 선언하신 후 N는 꼭 필요한 경우에만 허용설정해 주시기 바랍니다.

감사합니다.

배경수 님의 글



안녕하십니까..

현재 SULINUX 1.0 을 가지고 iptables 기반 DNAT 방화벽을 구축하고 있습니다.

구축된 방화벽의 eth0는 58.72.188.131 이고 eth1부터 스위치 허브를 물려서 사설ip로 서비스 하고 있습니다..

eth1 부터는 DHCP서버를 구동하여 192.168.10.100~150 각각의 클라이언트에 뿌려주도록 설정하였습니다.

물론 각각의 서버들은 자체적으로 사설ip를 고정적으로 장입되어 있습니다.

방화벽 밑으로 DNAT 설정을 통해 3대의 서버에 장입된 각각의 사설 ip들을 각각의 공인ip로 변환하기 위해서 IP Aliasing 처리하기 위해 다음과 같이 처리 했습니다.

eth0   = 58.72.188.131 (방화벽)

eth0:1 = 58.72.188.140 (Web, SSH, DNS, Sendmail)

eth0:2 = 58.72.188.141 (Web, SSH, Spam Filltering,)

eth0:3  = 58.72.188.142 (Web, SSH, FTP)

이상이며 다음과 같이 각각의 공인ip를 사설ip로 변환하려는 것입니다.

58.72.188.140 == 192.168.10.10

58.72.188.141 == 192.168.10.20

58.72.188.141 == 192.168.10.210

 

홍석범님께서 쓰신 리눅스 서버 보안관리 실무 책자와 iptables기반 방화벽 구축을 위한 pdf 문서들을 참고하며 방화벽을 구축하고 모든 설정을 마무리 지었습니다만 외부에서는 ssh 접근이나 홈페이지 mail 등등이 정상적으로 작동하고 있는 것을 확인하였습니다.

그러나 외부에서는 모든 서비스들이 작동하고 있으나 정작 내부에서는 22번 이외에 모든 포트들이 접근이 안되고 있습니다.

내부 접근이 안되다보니 사무실 내에 구축된 Sendmail 서버에 내부 즉 사무실에서 Outlook으로 접근하여 메일을 받아오게 되는데 내부에서는 22번 이외에 모든 포트가 접근이 되지 않아 메일을 받아올수 없는 상황입니다.

다음은 현재 적용되어 있는 iptables의 룰셋입니다.

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
 
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -o eth0 -s 192.168.10.0/24 -j SNAT --to 58.72.188.131

-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.140 --dport 20:21 -j DNAT --to 192.168.10.20:21
-A PREROUTING -i eth0 -p UDP --sport 1024:65535 -d 58.72.188.140 --dport 20:21 -j DNAT --to 192.168.10.20:21
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.140 --dport 22 -j DNAT --to 192.168.10.20:22
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.140 --dport 25 -j DNAT --to 192.168.10.20:25
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.140 --dport 80 -j DNAT --to 192.168.10.20:80
-A PREROUTING -i eth0 -p UDP --sport 1024:65535 -d 58.72.188.140 --dport 80 -j DNAT --to 192.168.10.20:80

-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.141 --dport 20:21 -j DNAT --to 192.168.10.20:21
-A PREROUTING -i eth0 -p UDP --sport 1024:65535 -d 58.72.188.141 --dport 20:21 -j DNAT --to 192.168.10.20:21
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.141 --dport 22 -j DNAT --to 192.168.10.10:22
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.141 --dport 25 -j DNAT --to 192.168.10.10:25
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.141 --dport 42 -j DNAT --to 192.168.10.10:143
-A PREROUTING -i eth0 -p UDP --sport 1024:65535 -d 58.72.188.141 --dport 42 -j DNAT --to 192.168.10.10:143
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.141 --dport 43 -j DNAT --to 192.168.10.10:143
-A PREROUTING -i eth0 -p UDP --sport 1024:65535 -d 58.72.188.141 --dport 43 -j DNAT --to 192.168.10.10:143
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.141 --dport 80 -j DNAT --to 192.168.10.10:80
-A PREROUTING -i eth0 -p UDP --sport 1024:65535 -d 58.72.188.141 --dport 80 -j DNAT --to 192.168.10.10:80
-A PREROUTING -i eht0 -p TCP --sport 1024:65535 -d 58.72.188.141 --dport 53 -j DNAT --to 192.168.10.10:53
-A PREROUTING -i eth0 -p UDP --sport 1024:65535 -d 58.72.188.141 --dport 53 -j DNAT --to 192.168.10.10:53
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.141 --dport 110 -j DNAT --to 192.168.10.10:110
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.141 --dport 143 -j DNAT --to 192.168.10.10:143
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.141 --dport 953 -j DNAT --to 192.168.10.10:143
-A PREROUTING -i eth0 -p UDP --sport 1024:65535 -d 58.72.188.141 --dport 953 -j DNAT --to 192.168.10.10:143

-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.142 --dport 20:21 -j DNAT --to 192.168.10.210:21
-A PREROUTING -i eth0 -p UDP --sport 1024:65535 -d 58.72.188.142 --dport 20:21 -j DNAT --to 192.168.10.210:21
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.142 --dport 22 -j DNAT --to 192.168.10.210:22
-A PREROUTING -i eth0 -p TCP --sport 1024:65535 -d 58.72.188.142 --dport 80 -j DNAT --to 192.168.10.210:80
-A PREROUTING -i eth0 -p UDP --sport 1024:65535 -d 58.72.188.142 --dport 80 -j DNAT --to 192.168.10.210:80

COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
 
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m state --state E,R,N -j ACCEPT
-A INPUT -m state --state E,R,N -j ACCEPT
-A INPUT -s 10.0.0.0/8 -j DROP
-A INPUT -s 172.16.0.0/12 -j DROP
-A INPUT -s 192.168.0.0/16 -j ACCEPT
-A INPUT -s 224.0.0.0/4 -j DROP
-A INPUT -s 240.0.0.0/5 -j DROP
-A INPUT -i eth0 -s 127.0.0.0/8 -j DROP
-A INPUT -i eth0 -s 0.0.0.0/8 -j DROP
-A INPUT -i eth0 -s 169.254.0.0/16 -j DROP
-A INPUT -i eth0 -s 192.0.2.0/24 -j DROP
-A INPUT -i eth0 -s 248.0.0.0/5 -j DROP
-A INPUT -p TCP --sport 1024:65535 --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -p TCP --sport 1024:65535 --dport 25 -m state --state NEW -j ACCEPT
-A INPUT -p TCP --sport 1024:65535 --dport 110 -m state --state NEW -j ACCEPT
-A INPUT -p TCP --sport 1024:65535 --dport 143 -m state --state NEW -j ACCEPT
-A INPUT -p TCP --sport 1024:65535 --dport 21 -m state --state NEW -j ACCEPT
-A INPUT -p UDP --sport 1024:65535 --dport 21 -m state --state NEW -j ACCEPT
-A INPUT -p TCP --sport 1024:65535 --dport 20 -m state --state NEW -j ACCEPT
-A INPUT -p UDP --sport 1024:65535 --dport 20 -m state --state NEW -j ACCEPT
-A INPUT -p TCP --sport 1024:65535 --dport 53 -m state --state NEW -j ACCEPT
-A INPUT -p UDP --sport 1024:65535 --dport 53 -m state --state NEW -j ACCEPT
-A INPUT -p TCP --sport 1024:65535 --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p UDP --sport 1024:65535 --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p ICMP --icmp-type echo-request -j ACCEPT

-A FORWARD -i eth0 -o eth1 -m state --state E,R,N -j ACCEPT
-A FORWARD -i eth1 -o eth0 -m state --state E,R,N -j ACCEPT

COMMIT

보시면 아시겠지만 참고로 FORWARD의 Policy 정책은 ACCEPT입니다.

여러 리눅서님들의 고견 기다리겠습니다.. 감사합니다..




 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,138 명
  • 현재 강좌수 :  36,196 개
  • 현재 접속자 :  466 명