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

iptables 기본 설정을 못해서 질문드립니다.

작성자 정보

  • 김명석 작성
  • 작성일

컨텐츠 정보

본문

안녕하십니까. centOS5.2 버전으로 iptables 설정할려고 합니다.

방화벽서버 사용목적은 adsl 같은걸 방화벽에 물린다음 방화벽을 통과해서

회사내의 다른 pc 들이 인터넷을 쓸 수 있도록 하는 것입니다.

즉 , 공인ip --방화벽 --hub--웹서버,개인피시 (40대)

이런 순서가 되어야 하는데요.

 

근데.. iptbables를 어떻게 정책설정을 해야할지 몰라서 문의 드립니다.

1. iptables리 작동되기 위해 named 나 DNS가 설정 되어 있어야하는지요.

2. 제가 사용하고자 하는게 단순한 iptables인거 같은데... 제 목적에 맞는

  iptables 스크립트나 /etc/sysconfig/iptables의 내용을 그대로 복사해서 보여주실 수

없는지요...

 

부탁드립니다..... 토요일에 완료해놔야 하는데 도무지 감이 안잡힙니다. -이상 왕초보가..-

관련자료

댓글 1

장규승님의 댓글

  • 장규승
  • 작성일
아래 자료 참고 하세요
SIS 에서 2005년도에 나온 자료 상의 내용입니다.. (http://redmin697.tistory.com/80에서 다운 받을 수 있습니다 )

<별첨 #3> NAT를 이용한 방화벽 정책 설정 예제
아래는 NAT 방화벽에 설정하여 사용할 수 있는 룰 예제이다. 룰을 볼 때는 먼저 각 룰의
개개 의미를 먼저 살펴보고, 전체적인 흐름에서 다시 살펴보기 바란다. 이 예에서는 eth0에
공인 ip로 221.1.2.3이 할당되어 있고, 내부의 사설 대역에는 192.168.1.0/24 대역을 사용하며
내부의 게이트웨이는 192.168.1.1 과 같은 eth1의 ip 주소를 사용한다고 가정한다.      NAT 방
화벽 자체의 게이트웨이는 공인 ip의 게이트웨이로 설정되어 있어야 한다.
 #!/bin/sh
 SERVICE_IP="221.1.2.3"
 # 방화벽에서 사용할 공인 ip를 지정한다. 각자의 공인 ip를 설정하면 된다.
 /bin/echo "1" >/proc/sys/net/ipv4/ip_forward
 # NAT를 사용하려면 ip_forward 이 반드시 1 이어야 한다.
 iptables -t nat -F
 iptables-t mangle -F
 iptables -t filter -F
 # 각 테이블에서 기존의 룰을 모두 초기화(flush)한다.
 iptables -P INPUT DROP
 iptables -P FORWARD DROP
 iptables -P OUTPUT ACCEPT
 # filter 테이블의 기본정책을 설정한다. 여기에서 INPUT 과 FORWARD 는 DROP 하고
 # OUTPUT 은 ACCEPT 로 하였다.
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A OUTPUT -o lo -j ACCEPT
 # 루프백 인터페이스를 통한 트래픽은 허용한다.
 iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
 iptables -A INPUT -i eth0 -s 255.255.255.255/32 -j DROP
 iptables -A INPUT -i eth0 -s 0.0.0.0/8 -j DROP
 iptables -A INPUT -i eth0 -s 169.254.0.0/16 -j DROP
 iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
 iptables -A INPUT -i eth0 -s 192.0.2.0/24 -j DROP
 iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP
 iptables -A INPUT -i eth0 -s 224.0.0.0/4 -j DROP
 iptables -A INPUT -i eth0 -s 240.0.0.0/5 -j DROP

iptables -A INPUT -i eth0 -s 248.0.0.0/5 -j DROP
# 외부에서 NAT 방화벽 자체를 향하는 트래픽에 대한 제어를 한다. 이는 INPUT chain
# 에서 필터링 설정하면 된다. 사설ip 및 공인 네트워크에서 사용되지 않는 ip 대역을
# 소스로 한 패킷을 차단한다.
iptables -A FORWARD -i eth0 -s 10.0.0.0/8 -j DROP
iptables -A FORWARD -i eth0 -s 255.255.255.255/32 -j DROP
iptables -A FORWARD -i eth0 -s 0.0.0.0/8 -j DROP
iptables -A FORWARD -i eth0 -s 169.254.0.0/16 -j DROP
iptables -A FORWARD -i eth0 -s 172.16.0.0/12 -j DROP
iptables -A FORWARD -i eth0 -s 192.0.2.0/24 -j DROP
iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -i eth0 -s 224.0.0.0/4 -j DROP
iptables -A FORWARD -i eth0 -s 240.0.0.0/5 -j DROP
iptables -A FORWARD -i eth0 -s 248.0.0.0/5 -j DROP
# 외부에서 NAT 방화벽을 통과하여 내부의 서버를 향하는 트래픽에 대한 제어를 한다.
# 이는 FORWARD chain 에서 필터링 설정하면 된다.
iptables -A OUTPUT -d 10.0.0.0/8 -j DROP
iptables -A OUTPUT -d 255.255.255.255/32 -j DROP
iptables -A OUTPUT -d 0.0.0.0/8 -j DROP
iptables -A OUTPUT -d 169.254.0.0/16 -j DROP
iptables -A OUTPUT -d 172.16.0.0/12 -j DROP
iptables -A OUTPUT -d 192.0.2.0/24 -j DROP
iptables -A OUTPUT -d 192.168.0.0/16 -j DROP
iptables -A OUTPUT -d 224.0.0.0/4 -j DROP
iptables -A OUTPUT -d 240.0.0.0/5 -j DROP
iptables -A OUTPUT -d 248.0.0.0/5 -j DROP
# 방화벽에서 외부로 나가는 트래픽에 대한 제어를 한다.
iptables -A FORWARD -i eth1 -s 192.168.1.0/24 -j ACCEPT
# 내부의 사설 대역에서 사설 인터페이스인 eth1을 통해 들어오는 패킷은
# 내부 네트워크에서의 정상적인 트래픽이므로 허용한다.
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j SNAT --to $SERVICE_IP
# 내부에서 192.168.1.0/24 대역을 사용할 경우 eth0을 통과해 나갈 때 SERVICE_IP
# 에서 지정한 공인ip 로 변환되어 나가도록 한다.
iptables -A INPUT    -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD      -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 이미 세션을 맺어 상태추적 테이블 목록에 있는 ESTABLISHED,RELATED 패킷은 허용
# 한다.
iptables -t nat -A PREROUTING -d $SERVICE_IP -p TCP --dport 21 -j DNAT --to
192.168.1.1:21
# 앞에서 지정한 SERVICE_IP 의 21 번 포트로 향하는 트래픽은 192.168.1.1 의 21번으
# 로 포워딩한다. 따라서 외부에서 221.1.2.3 의 21번으로 접속하면 192.168.1.1 의 21번 #
포트가 응답하게 된다.
iptables -t nat -A PREROUTING -d $SERVICE_IP -p TCP --dport 747 -j DNAT --to
192.168.1.12:80
# SERVICE_IP 의 747 번으로 향하는 트래픽은 192.168.1.12 의 80 번으로 포워딩한다.
iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP
iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
# 상태추적 테이블에 NEW이면서 syn 비트가 설정되지 않은 tcp 패킷은 차단한다.
iptables -A INPUT -p ALL -m state --state INVALID -j DROP
iptables -A FORWARD -p ALL -m state --state INVALID -j DROP
iptables -A OUTPUT -p ALL -m state --state INVALID -j DROP
# 상태추적 테이블에서 INVALID 인 패킷은 차단한다.
iptables -A FORWARD -p TCP --sport 1024: --dport 747 -m state --state NEW -j
ACCEPT
# 공인 ip의 747/tcp 포트를 향하는 트래픽 즉, 192.168.1.12 의 80번으로 향하는 트래픽
# 을 허용해 주는 설정이다.
iptables -A FORWARD      -p TCP    --sport 1024: --dport 21 -m state --state NEW -j
ACCEPT
# 앞에서 NAT 설정한 21/tcp 에 대해 포트 포워딩을 허용한다.
iptables -A INPUT  -p TCP -s 192.168.1.3 --sport 1024: --dport 22 -m state --state NEW
-j ACCEPT
# 관리를 위해 192.168.1.3 에서 방화벽으로의 ssh 로그인을 허용한다.
iptables -N ICMP_HANDLE
iptables -F ICMP_HANDLE
# icmp 트래픽에 대한 설정으로 INPUT, FORWARD 에 대해 각각 동일한 룰을
# 반복적으로 설정하여야 하는데, 이를 간소화하기 위해 ICMP_HANDLE 이라는 별도의

# chain을 생성하도록 한다.
iptables -A ICMP_HANDLE -p ICMP --icmp-type echo-reply -j ACCEPT
iptables -A ICMP_HANDLE -p ICMP --icmp-type network-unreachable -j ACCEPT
iptables -A ICMP_HANDLE -p ICMP --icmp-type host-unreachable -j ACCEPT
iptables -A ICMP_HANDLE -p ICMP --icmp-type port-unreachable -j ACCEPT
iptables -A ICMP_HANDLE -p ICMP --icmp-type fragmentation-needed -j ACCEPT
iptables -A ICMP_HANDLE -p ICMP --icmp-type time-exceeded -j ACCEPT
# 허용해 주어야 할 몇 가지 ICMP type을 설정해 준다.
iptables -A INPUT -p ICMP -j ICMP_HANDLE
iptables -A FORWARD -p ICMP -j ICMP_HANDLE
# INPUT, FORWARD 되는 패킷 중 ICMP 패킷을 ICMP_HANDLE chain 에 보낸다.


공지사항


뉴스광장


  • 현재 회원수 :  60,133 명
  • 현재 강좌수 :  36,172 개
  • 현재 접속자 :  455 명