>> Edit article
이름
제목
패스워드
다름이 아니라 전 브릿지를 이요한 방화벽 설치를 하는데.. iptables로 합니다. 브릿지 사이트 가보니까 커널 2.4.16으로 업을 하고 패치를 하면 iptables를 사용할수 있다고 합니다. 그전에는 2.2.20으로 ipchains를 이용하면.. 잘 썼었는데... -.-'' #!/bin/sh # # TOS(Type of Service) # minimum delay 0x10 # maximum throughput 0x08 # maximum reliability 0x04 # minimum cost 0x02 # nomarl service 0x00 #!! Minimize-Delay 16 (0x10) #!! Maximize-Throughput 8 (0x08) #!! Maximize-Reliability 4 (0x04) #!! Minimize-Cost 2 (0x02) #!! Normal-Service 0 (0x00) ################################################################ echo "" echo "Setting BRIDGE - FireWall ... start " IPTABLES="/sbin/iptables" # 체인 추가 # input, output, forward는 ipchain의 기본 체인임. # shbridge은 브릿지를 관통하는(forward되는) 체인임. # waninput은 wan에서 redzone 서버로 들어오는 체인임. # laninput은 lan에서 reazone 서버로 들어오는 체인임. # br_out은 redzone 서버에서 외부로 나가는 체인임. echo " RESET NETWORK FOR PACKET FILTERING SERVICE" echo CHKCHAIN=0 # 서비스를 시작하기전 초기화 echo " * Reset Basic Table" ${IPTABLES} -Z CHKCHAIN=$? echo -n " Reset Chain Counter : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -P INPUT ACCEPT CHKCHAIN=$? echo -n " Accept All INPUT Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -F INPUT CHKCHAIN=$? echo -n " Remove rule of INPUT Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -P OUTPUT ACCEPT CHKCHAIN=$? echo -n " Accept All FORWARD Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -F FORWARD CHKCHAIN=$? echo -n " Remove rule of FORWARD Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -P FORWARD ACCEPT CHKCHAIN=$? echo -n " Accept All OUTPUT Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -F OUTPUT CHKCHAIN=$? echo -n " Remove rule of OUTPUT Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -P SHBRIDGE ACCEPT CHKCHAIN=$? echo -n " Accept All SHBRIDGE Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -F SHBRIDGE CHKCHAIN=$? echo -n " Remove rule of SHBRIDGE Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" echo echo " * Reset NAT Table" ${IPTABLES} -t nat -Z CHKCHAIN=$? echo -n " Reset NAT Tabel Counter : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -t nat -P PREROUTING ACCEPT CHKCHAIN=$? echo -n " Accept All PREROUTING Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -t nat -F PREROUTING CHKCHAIN=$? echo -n " Remove rule of PREROUTING : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -t nat -P POSTROUTING ACCEPT CHKCHAIN=$? echo -n " Accept All POSTROUTING Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -t nat -F POSTROUTING CHKCHAIN=$? echo -n " Remove rule of POSTROUTING : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" echo echo " * Reset Mangle Table" ${IPTABLES} -t mangle -Z CHKCHAIN=$? echo -n " Reset MANGLE Tabel Counter : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -t mangle -P PREROUTING ACCEPT CHKCHAIN=$? echo -n " Accept All PREROUTING Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -t mangle -F PREROUTING CHKCHAIN=$? echo -n " Remove rule of PREROUTING : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -t mangle -P OUTPUT ACCEPT CHKCHAIN=$? echo -n " Accept All OUTPUT Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -t mangle -F OUTPUT CHKCHAIN=$? echo -n " Remove rule of OUTPUT : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -t mangle -P SHBRIDGE ACCEPT CHKCHAIN=$? echo -n " Accept All SHBRIDGE Chain : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" ${IPTABLES} -t mangle -F SHBRIDGE CHKCHAIN=$? echo -n " Remove rule of SHBRIDGE : " [ "${CHKCHAIN}" -eq 0 ] && echo "OK" [ "${CHKCHAIN}" -ne 0 ] && echo "Failed" KPCHK=0 # ip 주소를 스푸핑한다고 예상되는 경우 로그에 기록하기 echo 1 > /proc/sys/net/ipv4/conf/all/log_martians KPCHK=$? echo -n " * Logged Spoofing check : " [ "${KPCHK}" -eq 0 ] && echo "OK" [ "${KPCHK}" -ne 0 ] && echo "Failed" # 브로드캐스트, 멀티캐스트 주소에 ICMP 메시지 보내는것 막기 # "smurf" 공격 방지용 # 아래에서 해당 조항 참고 # 커널 2.2 이상에 해당 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts KPCHK=$? echo -n " * Deny Ping at BroadCast : " [ "${KPCHK}" -eq 0 ] && echo "OK" [ "${KPCHK}" -ne 0 ] && echo "Failed" ## LOG 형식 LOGFORMAT="-m limit --limit 1/h --limit-burst 3 -j LOG" ###### WAN TO LAN (eth1)###### echo " WAN TO LAN " ${IPTABLES} -A SHBRIDGE -s xxx.xxx.xxx.xxx -d xxx.xxx.xxx.xxx -o eth1 -j ACCEPT ${IPTABLES} -A SHBRIDGE -s xxx.xxx.xxx.xxx/25 -d xxx.xxx.xxx.xxx/25 -o eth1 -j DROP ${IPTABLES} -A SHBRIDGE -p icmp -s 0/0 -d xxx.xxx.xxx.xxx/25 -o eth1 -j DROP ${IPTABLES} -A SHBRIDGE -p tcp -s ! xxx.xxx.xxx.xxx/25 -d xxx.xxx.xxx.xxx --dport 80 -o eth1 -j ACCEPT ${LOGFORMAT} --log-prefix ${IPTABLES} -A SHBRIDGE -p tcp -s ! xxx.xxx.xxx.xxx/25 -d xxx.xxx.xxx.xxx --dport 80 -o eth1 -j ACCEPT ${IPTABLES} -A SHBRIDGE -p tcp -s ! xxx.xxx.xxx.xxx/25 -d xxx.xxx.xxx.xxx --dport 23 -o eth1 -j ACCEPT ${IPTABLES} -A SHBRIDGE -p tcp -s ! xxx.xxx.xxx.xxx/25 -d xxx.xxx.xxx.xxx/25 --dport 137:139 -o eth1 -j DROP ${LOGFORMAT} --log- prefix ${IPTABLES} -A SHBRIDGE -p udp -s ! xxx.xxx.xxx.xxx/25 -d xxx.xxx.xxx.xxx/25 --dport 137:139 -o eth1 -j DROP ${LOGFORMAT} --log- prefix ${IPTABLES} -A SHBRIDGE -p udp -s ! xxx.xxx.xxx.xxx/25 -d xxx.xxx.xxx.xxx/25 -o eth1 -j DROP ${IPTABLES} -A SHBRIDGE -p all -s ! xxx.xxx.xxx.xxx/25 -d xxx.xxx.xxx.xxx/25 -o eth1 -j ACCEPT #${IPTABLES} -A SHBRIDGE -m state --state INVALID -j DROP ##### LAN TO WAN (eth0)##### echo " LAN TL WAN " ${IPTABLES} -A SHBRIDGE -s xxx.xxx.xxx.xxx/25 -d ! xxx.xxx.xxx.xxx/25 - o eth0 -j ACCEPT ${IPTABLES} -A SHBRIDGE -s xxx.xxx.xxx.xxx/25 -d ! xxx.xxx.xxx.xxx/25 - o eth0 -j ACCEPT ##### LAN TO LAN (eth0)##### echo " LAN TO LAN " ${IPTABLES} -A SHBRIDGE -s xxx.xxx.xxx.xxx/25 -d xxx.xxx.xxx.xxx/25 -o eth0 -j ACCEPT # TOS 설정 # echo echo "TOS Configuration" echo ${IPTABLES} -t mangle -A SHBRIDGE -p tcp -s 0/0 --sport 80 -j TOS -- set-tos 0x10 ${IPTABLES} -t mangle -A SHBRIDGE -p tcp -d 0/0 --dport 21 -j TOS -- set-tos 0x10 ${IPTABLES} -t mangle -A SHBRIDGE -p tcp -d 0/0 --dport 22 -j TOS -- set-tos 0x10 ${IPTABLES} -t mangle -A SHBRIDGE -p tcp -d 0/0 --dport 23 -j TOS -- set-tos 0x10 ${IPTABLES} -t mangle -A SHBRIDGE -p tcp -d 0/0 --dport 23 -j TOS -- set-tos 0x10 ${IPTABLES} -t mangle -A SHBRIDGE -p tcp -s 0/0 --sport 20 -j TOS -- set-tos 0x08 대충 이렇게 설정을 했습니다. 전 2.4.16으로 커널업했구여.. 마스커 레이딩을 사용하지 않고 있습니다. 조기 위에 mangle은 어떨때 쓰는건지여.. 그럼 고수님들 한수 부탁드립니다. 여기 저기 고수님들이 만들어 놓은걸 그대로 뺏겨다가.. 지금 테스트 중인데.. 잘 되질 않네요.. 그럼 수고 하세요..--알고픈놈.
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved