[보안] 클루닉스 bridge Server 구축
### 클루닉스 Bridge Server Install #######################
#   제작일 : 2004.5.6  작성자 : 서진우 < alang@clunix.com>
#
1. Bridge 네트워크 구성
– 먼저 bridge 서버의 물리적 네트워크 구성은 다음과 같다.
라우터 —– 브리지서버(eth0)|브리지서버(eth1) —- 백본스위치 —– 클라이언트
——————————————————————————-
라우터 -> 브리지서버(eth0) : cross cable
브리지서버(eth1) -> 백본스위치 : direct cable
——————————————————————————-
– 외부회선 —- 브리지서버(eth0)|브리지서버(eth1) —- 스위치 — 클라이언트
——————————————————————————-
외부회선 -> 브리지서버(eth0) : direct cable
브리지서버(eth1) -> 스위치 : direct cable
——————————————————————————-
2. 구축 준비 패키지
H/W :
랜카드 2장 달린 시스템
S/W :
리눅스커널 : 2.4.26
브리지 커널 패치 : ebtables-brnf-5_vs_2.4.25.diff
브리지 유틸 : bridge-utils-0.9.6.tar.gz iptables
커널 패치 : patch-o-matic-20031219.tar.bz2 iptables
유틸 : iptables-1.2.9.tar.bz2
bridge 커널 패치 및 bridge utils
Linux ethernet bridging http://bridge.sourceforge.net
bridge-nf-0.0.7-against-2.4.19.diff
bridge-utils-0.9.6.tar.gz
iptables 커널 패치 및 iptables
netfilter/iptables http://www.netfilter.org
patch-o-matic-20030107.tar.bz2
iptables-1.2.8.tar.bz2
리눅스 커널 소스
The Linux Kernel Archives http://www.kernel.org
linux-2.4.19.tar.bz2
ftp://syszone.co.kr/pub/linux/kernel
3. 커널 패치
– kernel patch
# cd /usr/src
# tar jxvf linux-2.4.26.tar.bz2
# ln -sf linux-2.4.26 linux
# cd linux
# patch -p1 < ../ebtables-brnf-5_vs_2.4.25.diff 
– iptables patch ( string )
# tar jxvf patch-o-matic-20031219.tar.bz2
# cd patch-o-matic
# ./runme extra
Hey! KERNEL_DIR is not set.
Where is your kernel? [/usr/src/linux]   ->  Y ( 링크 재대로 걸어야 함 )
그럼 아래와 같이..다음과 같은 패치 한다고 물어봄
.
.
   + New ‘helper’ match (Martin Josefsson, Harald Welte)
   submitted/ip6tables-exthdr-bug.patch.ipv6
   + Fix broken ipv6 extensionheader parser (Andras Kis-Szabo)
   submitted/ipv6-agr.patch.ipv6
   + New ip6tables ‘eui64’ match (Andras Kis-Szabo)
   submitted/length.patch.ipv6
   + New ip6tables ‘length’ match (Imran Patel, James Morris)
   submitted/log-tunnel-fix.patch.ipv6
   + Fix ip6tables ‘LOG’ target MAC address in case of tunnels
   (Peter Bieringer, Andras Kis-Szabo)
   submitted/nat-memoryleak-fix.patch
   + Fix memoryleak at iptable_nat unload time (zhongyu)
   submitted/ownercmd.patch
   + Extend ‘owner’ match to match cmdline (Marc Boucher)
   submitted/pkttype.patch
   + New ‘pkttype’ match (Michal Ludvig)
   submitted/ulog-nlgroup-shift-fix.patch
   + Fix error with shifting nlgroup in ULOG target (Harald Welte)
   submitted/ulog-sparc-bitops-fix.patch
   + Include linux/bitops.h instead of asm/bitops.h
   submitted/z-newnat16.patch
   + Redesign of conntrack and nat helper framework, for more info see
http://cvs.netfilter.org/cgi-bin/cvsweb/netfilter/documentation/newnat-summary.txt
   (Harald Welte, Jozsef Kadlecsik, and others)
   submitted/z-newnat_assertfix.patch
   + Fix erroneously printed ASSERT messages when debugging of newnat
   enabled (Martin Josefsson)
   submitted/z-newnat_changeexpect-lockfix.patch
   + Fix locking bug in ip_conntrack_change_expect() (Martin Josefsson)
   Further changes, not previuosly in patch-o-matic:
   + ip6tables usage counter fix (Harald Welte)
   + ip_queue cleanup (James Morris)
   + minor spelling fixes
   + __constant_htons() macro changes
   + ipt_unclean: srcport _can_ be zero
   + yet another ipchains GFP_ATOMIC fix
—————————————————————–
Do you want to apply this patch [N/y/t/f/a/r/b/w/v/q/?]
그냥 엔터 ..
iptable패치에는 내용이 여러 가지가 존재한다. y를 누르면 패치가 된다.
그러나 전부 패치를 하면 안 된다. 나중에 커널을 컴파일 하면 에러가 나기
때문에 꼭 필요한 것만 y를 눌러 패치 한다. b를 누르면 뒤로 돌아갈 수 있다. 
지금 패치 할 것은 패킷에서 String을 검색하여 패킷을 버리거나 거부 하는
String match support 이다. 이것을 이용하면 Nimda, CodeRed 등의 웜이나
바이러스의 패킷을 차단 할 수 있다.
그리고 메일의 string 을 검색하여 스팸 메일 차단에 이용할 것이다.
계속 엔터를 쳐서 가다 보면 아래와 같은 화면이 나올것 이다.
Welcome to Rusty’s Patch-o-matic!
Each patch is a new feature: many have minimal impact, some do not.
Almost every one has bugs, so I don’t recommend applying them all!
——————————————————-
Already applied: submitted/01_2.4.19
Testing… string.patch NOT APPLIED ( 2 missing files) The extra/string patch:
   Author: Emmanuel Roger <winfield@freegates.be>
   Status: Working, not with kernel 2.4.9
  
   This patch adds CONFIG_IP_NF_MATCH_STRING which allows you to
   match a string in a whole packet.
  
   THIS PATCH DOES NOT WORK WITH KERNEL 2.4.9 !!!
  
—————————————————————–
Do you want to apply this patch [N/y/t/f/a/r/b/w/v/q/?]
여기서 y를 누르면 String match가 패치 된다.
계속 엔터를 치면 다른 패치들이 나온다. 필요한 것들이 있으면 패치한다.
– 커널 설정
# cd /usr/src/linux
# make menuconfig
network option 으로 가서 netfilter 관련 설정과 bridge 관련 설정을 한다.
Networking options
  x x      <*> Packet socket                                              x x  
  x x      [*]   Packet socket: mmapped IO                                x x  
  x x      < > Netlink device emulation                                   x x  
  x x      [*] Network packet filtering (replaces ipchains)               x x  
  x x      [ ]   Network packet filtering debugging                       x x  
  x x      [*] Socket Filtering                                           x x  
  x x      <*> Unix domain sockets                                        x x  
  x x      [*] TCP/IP networking                                          x x  
  x x      [*]   IP: multicasting                                         x x  
  x x      [ ]   IP: advanced router                                      x x  
  x x      [ ]   IP: kernel level autoconfiguration                       x x  
  x x      < >   IP: tunneling                                            x x  
  x x      < >   IP: GRE tunnels over IP                                  x x  
  x x      [*]   IP: multicast routing                                    x x  
  x x      [ ]     IP: PIM-SM version 1 support                           x x  
  x x      [ ]     IP: PIM-SM version 2 support                           x x  
  x x      [ ]   IP: ARP daemon support (EXPERIMENTAL)                    x x  
  x x      [ ]   IP: TCP Explicit Congestion Notification support         x x  
  x x      [*]   IP: TCP syncookie support (disabled per default)         x x  
  x x        IP: Netfilter Configuration  —>                            x x  
  x x        IP: Virtual Server Configuration  —>                       x x  
  x x      < >   The IPv6 protocol (EXPERIMENTAL)                         x x  
  x x      < >   Kernel httpd acceleration (EXPERIMENTAL)                 x x  
  x x         SCTP Configuration (EXPERIMENTAL)  —>                     x x  
  x x      < > Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)            x x  
  x x      < > 802.1Q VLAN Support                                        x x  
  x x      —                                                            x x  
  x x      < > The IPX protocol                                           x x  
  x x      < > Appletalk protocol support                                 x x  
  x x      Appletalk devices  —>                                        x x  
  x x      < > DECnet Support                                             x x  
  x x      <*> 802.1d Ethernet Bridging                                   x x  
  x x      <M>   Bridge: ebtables                                         x x  
  x x      <M>     ebt: filter table support                              x x  
  x x      <M>     ebt: nat table support                                 x x  
  x x      <M>     ebt: broute table support                              x x  
  x x      <M>     ebt: log support                                       x x  
  x x      <M>     ebt: IP filter support                                 x x  
  x x      <M>     ebt: ARP filter support                                x x  
  x x      <M>     ebt: among filter support                              x x  
  x x      <M>     ebt: limit filter support                              x x  
  x x      <M>     ebt: 802.1Q VLAN filter support                        x x  
  x x      <M>     ebt: 802.3 filter support                              x x  
  x x      <M>     ebt: packet type filter support                        x x  
  x x      <M>     ebt: STP filter support                                x x  
  x x      <M>     ebt: mark filter support                               x x  
  x x      <M>     ebt: arp reply target support                          x x  
  x x      <M>     ebt: snat target support                               x x  
  x x      <M>     ebt: dnat target support                               x x  
  x x      <M>     ebt: redirect target support                           x x  
  x x      <M>     ebt: mark target support                               x x  
  x x      < > CCITT X.25 Packet Layer (EXPERIMENTAL)                     x x  
  x x      < > LAPB Data Link Driver (EXPERIMENTAL)                       x x  
  x x      [ ] 802.2 LLC (EXPERIMENTAL)                                   x x  
  x x      [ ] Frame Diverter (EXPERIMENTAL)                              x x  
  x x      < > Acorn Econet/AUN protocols (EXPERIMENTAL)                  x x  
  x x      < > WAN router                                                 x x  
  x x      [ ] Fast switching (read help!)                                x x  
  x x      [ ] Forwarding between high speed interfaces                   x x  
  x x      QoS and/or fair queueing  —>                                 x x  
  x x      Network testing  —>                                          x x   
IP: Netfilter Configuration
  x x      <*> Connection tracking (required for masq/NAT)                x x  
  x x      <M>   FTP protocol support                                     x x  
  x x      <M>   Amanda protocol support                                  x x  
  x x      <M>   TFTP protocol support                                    x x  
  x x      <M>   IRC protocol support                                     x x  
  x x      <M> Userspace queueing via NETLINK (EXPERIMENTAL)              x x  
  x x      <*> IP tables support (required for filtering/masq/NAT)        x x  
  x x      <M>   limit match support                                      x x  
  x x      <M>   MAC address match support                                x x  
  x x      <M>   Packet type match support                                x x  
  x x      <M>   netfilter MARK match support                             x x  
  x x      <M>   Multiple port match support                              x x  
  x x      <M>   TOS match support                                        x x  
  x x      <M>   recent match support                                     x x  
  x x      <M>   ECN match support                                        x x  
  x x      <M>   DSCP match support                                       x x  
  x x      <M>   AH/ESP match support                                     x x  
  x x      <M>   LENGTH match support                                     x x  
  x x      <M>   TTL match support                                        x x  
  x x      <M>   tcpmss match support                                     x x  
  x x      <M>   Helper match support                                     x x  
  x x      <M>   Connection state match support                           x x  
  x x      <M>   Connection tracking match support                        x x  
  x x      <M>   Unclean match support (EXPERIMENTAL)                     x x  
  x x      <M>   String match support (EXPERIMENTAL)                      x x  
  x x      <M>   Owner match support (EXPERIMENTAL)                       x x  
  x x      <M>   Physdev match support                                    x x  
  x x      <M>   Packet filtering                                         x x  
  x x      <M>     REJECT target support                                  x x  
  x x      <M>     MIRROR target support (EXPERIMENTAL)                   x x  
  x x      <M>   Full NAT                                                 x x  
  x x      <M>     MASQUERADE target support                              x x  
  x x      <M>     REDIRECT target support                                x x  
  x x      [*]     NAT of local connections (READ HELP)                   x x  
  x x      <M>     Basic SNMP-ALG support (EXPERIMENTAL)                  x x  
  x x      <M>   Packet mangling                                          x x  
  x x      <M>     TOS target support                                     x x  
  x x      <M>     ECN target support                                     x x  
  x x      <M>     DSCP target support                                    x x  
  x x      <M>     MARK target support                                    x x  
  x x      <M>   LOG target support                                       x x  
  x x      <M>   ULOG target support                                      x x  
  x x      <M>   TCPMSS target support                                    x x  
  x x      <M> ARP tables support                                         x x    
  x x      <M>   ARP packet filtering                                     x x  
  x x      <M>   ARP payload mangling                                     x x   
다른것은 커널 컴파일 문서를 참고하세요.
P-III / IDE HDD / intel, realtec ethernet Card 시스템의 커널 설정 파일을
다운 받아서 수정후 사용하셔도 됨.
# make dep && make clean
# make bzImage && make modules && make modules_install
# cp System.map /boot/System.map-2.4.26
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.26
# cd /boot
# ln -sf System.map-2.4.26 System.map
# ln -sf vmlinuz-2.4.26 vmlinuz
하신후 /etc/lilo.conf 수정하고 lilo 실행
# vi /etc/lilo.conf
—————————————————————————-
prompt
timeout=50
default=bridge
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear
image=/boot/vmlinuz-2.4.20-8
        label=linux
        initrd=/boot/initrd-2.4.20-8.img
        read-only
        append=”root=LABEL=/”
image=/boot/vmlinuz
        label=bridge
        read-only
        root=/dev/hda2
—————————————————————————
리부팅 하세요..
4. Bridge utiles, iptables 설치 하기
# tar xzvf bridge-utils-0.9.6.tar.gz
# cd bridge-utils
# ./configure
# make
# make install 
# tar xjvf iptables-1.2.9.tar.bz2
# cd iptables-1.2.9
# make KERNEL_DIR=/usr/src/linux
# make install KERNEL_DIR=/usr/src/linux # make install-devel
iptables 설치 하고 난 후 rpm 으로 설치된 iptables 와 충돌이 안나게 기존 명령어 을 막아 놓으세요.
레드헷의 경우 /sbin/iptables 위치함. 적당한 다른 이름으로 변경해둠. 그런후 ..
# ln -sf /usr/local/sbin/iptables /sbin/iptables
5. Bridge 네트워크 설정하기
Bridge device 추가함
# /usr/local/sbin/brctl addbr clxbr0
# /usr/local/sbin/brctl addif clxbr0 eth0 # /usr/local/sbin/brctl addif clxbr0 eth1
# vi /etc/sysconfig/network-scripts/ifcfg-clxbr0
—————————————————————————-
DEVICE=clxbr0
IPADDR=211.241.202.142
NETMASK=255.255.255.128
ONBOOT=yes
—————————————————————————-
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
—————————————————————————-
DEVICE=eth0
ONBOOT=no
—————————————————————————-
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
—————————————————————————-
DEVICE=eth1
ONBOOT=no
—————————————————————————-
# ifdown lo
# ifdown eth0
# ifdown eth1
# ifup lo
# ifconfig ifconfig
# ifconfig eth0 0.0.0.0
# ifconfig eth1 0.0.0.0
# ifup clxbr0
하면 Bridge Network 설정이 마무리 됨.
Bridge Server 외부와 내부로 ping 이 되는지 확인 함. 
매번 리부팅 될때 마다 위와 같은 작업을 해야 하기 때문에 다음 init script을
이용 하여 부팅 시마다 자동으로 적용되도록 함.
# vi /etc/rc.d/init.d/bridge
—————————————————————————
#! /bin/sh
#
# bridge        Start/Stop Ethernet Bridge interface with 2 ethernet NIC
#
# description:  Ethernet Bridge for transparent(bridge) Firewall
#               make bridge interface(clxbr0) and tie 2 NIC to clxbr0 and
#               setup firewall & NAT(MASQUERADE) of iptables
#
# Clunix.inc <alang@clunix.com> 2004.5.1 #
# Source function library.
. /etc/init.d/functions
# Source Network config
. /etc/sysconfig/network
# Check that networking is up.
if [ ${NETWORKING} = “no” ]
then
        exit 0
fi
[ -x /usr/local/sbin/brctl ] || exit 0
RETVAL=0
start() {
        # check /var/lock/subsys/bridge file
        if [ -f /var/lock/subsys/bridge ] ; then
                return
        fi
        # make bridge interface
        echo -n $”Starting Bridge: ”
        /usr/local/sbin/brctl addbr clxbr0 > /dev/null 2>&1 &&
        /usr/local/sbin/brctl addif clxbr0 eth0 > /dev/null 2>&1 &&
        /usr/local/sbin/brctl addif clxbr0 eth1 > /dev/null 2>&1
        RETVAL=$?
        if [ $RETVAL -eq 0 ] ; then
                success “bridge startup”
        else
                failure “bridge startup”
        fi
        echo
        # start networking of bridge
        echo -n $”Starting Network of Bridge: ”
        ifup lo && ifconfig eth0 0.0.0.0 && \\
          ifconfig eth1 0.0.0.0 && ifup clxbr0
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success “Network of bridge startup” \\
        || failure “Network of bridge startup”
        echo
        touch /var/lock/subsys/bridge
        return $RETVAL
}
stop() {
        # check /var/lock/subsys/bridge file
        if [ ! -f /var/lock/subsys/bridge ] ; then
                return
        fi
        # stop networking of bridge
        echo -n $”Stopping Network of bridge: ”
        ifdown clxbr0 && ifconfig eth1 down && ifconfig eth0 down && ifdown lo
        RETVAL=$?
        [ $RETVAL -eq 0 ] && success “Network of bridge stopping” \\
        || failure “Network of bridge stopping”
        echo
        # stop bridge interface
        echo -n $”Stopping Bridge: ”
        /usr/local/sbin/brctl delif clxbr0 eth1 > /dev/null 2>&1 &&
        /usr/local/sbin/brctl delif clxbr0 eth0 > /dev/null 2>&1 &&
        /usr/local/sbin/brctl delbr clxbr0 > /dev/null 2>&1
        RETVAL=$?
        if [ $RETVAL -eq 0 ] ; then
                success “bridge stopping”
        else
                failure “bridge stopping”
        fi
        echo
        rm -f /var/lock/subsys/bridge
        return $RETVAL
}
# See how we were called.
case “$1” in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        /usr/local/sbin/brctl show
        ;;
  restart)
        stop
        sleep 2
        start
        ;;
  *)
        echo  $”Usage: $0 {start|stop|status|restart}”
        exit 1
esac
exit $RETVAL
——————————————————————————
# ln -sf /etc/rc.d/init.d/bridge /etc/rc3.d/S11bridge # chkconfig –add bridge
5. iptables script 사용하기
# vi /etc/rc.d/init.d/brctl
——————————————————————————
#! /bin/sh
#
# iptables      Start/Stop firewall with iptables
#
# description:  Clunix Firewall filtering & NAT with iptables
#
# Clunix.inc <alang@clunix.com> 2004.05.01
#
# Source function library.
. /etc/init.d/functions
# Source Network config
. /etc/sysconfig/network
# Check that networking is up.
if [ ${NETWORKING} = “no” ]
then
        exit 0
fi
[ -x /usr/local/sbin/iptables ] || exit 0
RETVAL=0
start() {
        # check /var/lock/subsys/firewall file
        if [ -f /var/lock/subsys/firewall ] ; then
                return
        fi
        # print “start firewall” msg
        echo -n $”Starting Firewall: ”
        #
        # start firewall & NAT
        #
# 내부 네트워크 영역 설정
INTER_AREA=”211.241.202.128/25″
        modprobe ip_conntrack_ftp
        modprobe ip_conntrack_irc
        modprobe ipt_string
        modprobe ipt_state
        modprobe ipt_REJECT
        modprobe ipt_REDIRECT
        modprobe ipt_MASQUERADE
        modprobe ip_nat_snmp_basic
        modprobe ip_nat_ftp
        modprobe ip_nat_irc
        
        echo 1 > /proc/sys/net/ipv4/ip_forward
        #
        # init iptables
        #
        # flush all chains
        iptables -F
        iptables -X
        chains=`cat /proc/net/ip_tables_names 2>/dev/null`
        for i in $chains
        do
                iptables -t $i -F
                iptables -t $i -X
                iptables -t $i -Z
        done
# 기본 정책 설정
        iptables -P INPUT DROP
        iptables -P OUTPUT ACCEPT
        # firewall filtering
        iptables -P FORWARD DROP
        ######################################################################
        # User defined chains
        ######################################################################
        #
        # refuse :
        # explicit refuse chains
        # logging to /var/log/firewall (via syslog kern.debug) & reject
        #
        iptables -N refuse
        iptables -A refuse ! -i eth1 -m limit –limit 1/m -j LOG \\
          –log-prefix “refused: ” –log-level debug
        iptables -A refuse -p tcp -m limit –limit 10/s -j REJECT \\
          –reject-with tcp-reset
        iptables -A refuse -p udp -m limit –limit 10/s -j REJECT
        iptables -A refuse -j DROP
        #
        # global_icmp :
        # specified ICMP packets are accepted globally
        #
        # accept following icmp pkt
        #  –  0 : echo reply
        #  –  3 : dest unreachable
        #  –  5 : redirect
        #  –  8 : echo request
        #  – 11 : time exceed
        iptables -N global_icmp
        iptables -A global_icmp -p icmp –icmp-type 0 -j ACCEPT
        iptables -A global_icmp -p icmp –icmp-type 3 -j ACCEPT
        iptables -A global_icmp -p icmp –icmp-type 5 -j ACCEPT
        iptables -A global_icmp -p icmp –icmp-type 8 -j ACCEPT
        iptables -A global_icmp -p icmp –icmp-type 11 -j ACCEPT
        #
        # global_udp :
        # specified udp packets are accepted globally
        #
        iptables -N global_udp
# edoneky (4661-4663/tcp, 4665/udp) for all PC
iptables -A global_udp -p udp –dport 4665 -j ACCEPT
        #
        # global_tcp :
        # specified tcp packets (that is valid) are accepted globally
        #
        # specified tcp packets (that is valid) are accepted globally
        #
iptables -N global_tcp
        # accept tcp syn pkt
        # iptables -A global_tcp -p tcp –syn -j ACCEPT
        # drop new pkt that has no syn
        iptables -A global_tcp -p tcp ! –syn -m state –state NEW -j DROP
        # MSN file transfer (6891-6900/tcp) for all PC
        # http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q278887&
        iptables -A global_tcp -p tcp –dport 6891:6900 -j ACCEPT
        # edoneky (4661-4663/tcp, 4665/udp) for all PC
        iptables -A global_tcp -p tcp –dport 4661:4663 -j ACCEPT
        #
        # open :
        # accept connection by each server:port
        #
        iptables -N open
        iptables -A open -p tcp -d 211.241.202.153 –dport 22 -j ACCEPT
        iptables -A open -p tcp -d 211.241.202.152 –dport 25 -j ACCEPT
# String Rule
# Nimda, CodeRed
        iptables -A FORWARD -p tcp –tcp-flags ACK ACK –dport 80 -m string \\
        –string “/default.ida?” -j REJECT –reject-with tcp-reset
        iptables -A FORWARD -p tcp  –tcp-flags ACK ACK –dport 80 -m string \\
        –string “XXXXXXXX” -j REJECT –reject-with tcp-reset
        iptables -A FORWARD -p tcp  –tcp-flags ACK ACK –dport 80 -m string \\
        –string “cmd.exe” -j REJECT –reject-with tcp-reset
        iptables -A FORWARD -p tcp  –tcp-flags ACK ACK –dport 80 -m string \\
        –string “root.exe?” -j REJECT –reject-with tcp-reset
# Mail Subject,Content String
        iptables -A FORWARD -p tcp –dport 25 -m string –string “test” -j REJECT \\
        –reject-with tcp-reset
        iptables -A FORWARD -p tcp –dport 25 -m string –string “광고” -j REJECT \\
        –reject-with tcp-reset
        # SQL Slammer
        iptables -A FORWARD -p udp -m string –string “Qh.dllhel32hkern” -j REJECT
        ######################################################################
        # FORWARD chain rules
        ######################################################################
        # accept all packets from internal network (eth1)
        iptables -A FORWARD -p ALL -i eth1 -j ACCEPT
        iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
        
        # New Rules Forward
        iptables -A FORWARD -p icmp -j global_icmp
        iptables -A FORWARD -p udp -j global_udp
        iptables -A FORWARD -p tcp -j global_tcp
        iptables -A FORWARD -j open
        # otherwise, refuse it
        iptables -A FORWARD -j refuse
        # accept all pkt from local loopback interface
        iptables -A INPUT -i lo -j ACCEPT
        # accept all packets by stateful-inspection
        iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
        # filter by global icmp pkt
        iptables -A INPUT -p icmp -j global_icmp
        # filter by  global tcp pkt
        iptables -A INPUT -p tcp -j global_tcp
        # accept only ssh(22/tcp) pkt
        iptables -A INPUT -p tcp -i eth1 –dport 22 -j ACCEPT
        iptables -A INPUT -p tcp -i eth0 –dport 22 -j ACCEPT
        # otherwise, refuse pkt
        iptables -A INPUT -j refuse
        #
        # accept all out pkt
        #
        iptables -A OUTPUT -o br0 -j ACCEPT
        iptables -A OUTPUT -o lo -j ACCEPT
        ######################################################################
        # for NAT(masquerade)
        ######################################################################
        #
        # masquerade
        #
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
        # print “firewall startup” msg
        [ $? -eq 0 ] && success “firewall startup” || \\
        # print “firewall startup” msg
        [ $? -eq 0 ] && success “firewall startup” || \\
          failure “firewall startup”
        echo
        # lock
        touch /var/lock/subsys/firewall
}
stop() {
        # check /var/lock/subsys/firewall file
        if [ ! -f /var/lock/subsys/firewall ] ; then
                return
        fi
        # print “stop firewall” msg
        echo -n $”Stopping Firewall: ”
        #
        # flush & delete iptables rules
        #
        chains=`cat /proc/net/ip_tables_names 2>/dev/null`
        for i in $chains
        do
                iptables -t $i -F
                iptables -t $i -X
        done
        iptables -P INPUT ACCEPT && \\
        iptables -P OUTPUT ACCEPT && \\
        iptables -P FORWARD ACCEPT && \\
        iptables -t nat -P PREROUTING ACCEPT && \\
        iptables -t nat -P POSTROUTING ACCEPT && \\
        iptables -t nat -P OUTPUT ACCEPT && \\
        iptables -t mangle -P PREROUTING ACCEPT && \\
        iptables -t mangle -P OUTPUT ACCEPT
        #
        # start firewall & NAT
        #
        echo 0 > /proc/sys/net/ipv4/ip_forward
#        rmmod ip_conntrack_ftp
#        rmmod ip_conntrack_irc
        rmmod ipt_string
        rmmod ipt_state
        rmmod ipt_REJECT
        rmmod ipt_REDIRECT
        rmmod ipt_MASQUERADE
        rmmod ip_nat_snmp_basic
        rmmod ip_nat_ftp
        rmmod ip_nat_irc 
        # print “firewall stop” msg
        [ $? -eq 0 ] && success “firewall stop” || failure “firewall stop”
        echo
        # unlock
        rm -f /var/lock/subsys/firewall
}
# See how we were called.
case “$1” in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        /sbin/iptables -L INPUT
        /sbin/iptables -L OUTPUT
        /sbin/iptables -L FORWARD
        ;;
  restart)
        stop
        sleep 1
        start
        ;;
  *)
        echo  $”Usage: $0 {start|stop|status|restart}”
        exit 1
esac
exit $RETVAL
———————————————————————————
# ln -sf /etc/rc.d/init.d/brctl /etc/rc3.d/S70brctl
그런 후 리부팅 후에도 자동으로 Brige Server 로 작동하는지를 확인한다.
# ifconfig
# iptables -L ( /etc/rc.d/init.d/brctl status )


![[네트워크] cisco route setup 하기..](http://nblog.syszone.co.kr/wp-content/themes/hueman/assets/front/img/thumb-medium-empty.png) 
																			 
																											 
																											 
																											