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

브리지 & iptables

작성자 정보

  • 도치 작성
  • 작성일

컨텐츠 정보

본문

브리지 구성시 궁금한 사항 있어 질문 드립니다.

(브리지 구성후 공인 아이피를 사용 합니다. )

iptables eth0 0.0.0.0

iptables eth1 0.0.0.0

설정하잖아요. 근데   그다음에

iptables eth0 0.0.0.0  promisc up   설정하는 것과  promisce up  입력하지 않은

iptables eth0 0.0.0.0   것이 둘다  promisc 를 설정 한다는 뜻 아닌가요 ^^;

 

그리고 promisc 를 설정 하는 이유가  bridge 가 작동하지 않기 때문인가요.

또 하나 질문 있습니다.  아래  iptables script  좀 확인좀 부탁 드립니다. 부족한

부분이라든지 수정해야 할 부분이 있음 알려주세요.   ^^

> iptables script

SERVICE_IP="xxx.xxx.xxx.xxx"
#- 방화벽에서 사용할 공인 ip를 지정한다. 각자의 공인 ip를 설정하면 된다.

/bin/echo "1" >/proc/sys/net/ipv4/ip_forward
# ---- 를 사용하려면 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 과 FOWWARD 는 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
# 외부에서 BRIDGE 방화벽 자체를 향하는 트래픽에 대한 제어를 한다.  이는 INPUT CHAIN
# 에서 필터링 설정하면 된다 사설 IP 및 공인 네트워크에서 사용되지 않는 IP 대역을
# 소스로 한패킷을 차단 한다.
# RFC1918에 정의된 사설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
# 외부에서 BRIDGE 방화벽을 통과하여 내부의 서버를 향하는 트래픽에 대한 제어를 한다.
# 이는 FORWARD Chain 에서 필터링 설정하면 된다.
# RFC1918에 정의된 사설ip는 차단한다

 

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
# 방화벽에서 외부로 나가는 트래픽에 대한 제어를 한다.
# RFC1918에 정의된 사설ip는 차단한다
# IP 를 도착지로 가지고 있는 패킷은 모두 버려지게 된다.


iptables -A FORWARD -i eth1 -s 192.168.1.0/24 -j ACCEPT
# 내부의 사설 대역에서 사설 인터페이스인 eth1 을 통해 들어오는 패킷은
# 내부 네트워크에서의 정상적인 트래픽이므로 허용한다.
# iptables - A FORWARD -s 61.107.79.0/24 -j ACCEPT
# 192.168.1.0/24 패킷은 모두 받아 들인다.

--> 이부분은 공인 아아피를 사용하므로 공인 아이피 대역을 설정 하주면 되겠죠


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 패킷은 허용 한다.
# ESTABLISHED : 존재하는 접속에 속하는 패킷(즉, 응답 패킷을 가졌던 것)
#               즉 접속이 허가되고 통신 하면서 발생되는 패킷이다.
# RELATED :  기존의 접속의 부분은 아니지만 연관성을 가진 패킷으로 , ICMP 에러나(FTP 모듈이
#            삽입 되어 있으면) FTP 데이터 접속을 형성하는 패킷.


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 패킷은 차단한다.
# NEW : 새로운 접속을 만드는 패킷


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 인 패킷은 차단한다.
# INVALID : 어떤 이유로 확인할 수 없는 패킷,알려진 접속과 부합하지 않는 ICMP 에러와
#           "out of memory" 등을 포함 한다. 보통 이런 패킷은 drop 된다.

 

iptables -A FORWARD -p TCP --sport 1024: --dport 747 -m state --state NEW -j ACCEPT
# 공인 IP 의 747/tcp 포트를 향하는 트래픽 즉 ,  80번으로 향하는 트래픽
# 을 허용해 주는 설정이다.

iptables -A FORWARD -p TCP --sport 1024: --dport 21 -m state --state NEW -j ACCEPT
# 앞에서 BRIDGE 설정한 21/tcp 에 대해 포트 포워딩을 허용한다.

iptables -A INPUT -p TCP -s $SERVICE_IP --sport 1024: --dport 22 -m state --state NEW -j ACCEPT
# 관리를 위해 SERVICE_IP(설정 IP) 에서 방화벽으로의 ssh 로그인을 허용한다.
# $IPTABLES -A INPUT -p tcp -d $BR_IP --dport 22 -j ACCEPT (동일)


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 에 보낸다.

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,132 명
  • 현재 강좌수 :  36,168 개
  • 현재 접속자 :  392 명