 |
 |
 |
 |
|
>> Read No. 37959 article |
|
고수님 이것좀 봐주세요.. 브릿지를 이요한 iptables..
....
|
 |
 |
 |
 |

등록 2001-12-24 16:30:00
조회 2
이름 ych3372

|
 |
 |
다름이 아니라 전 브릿지를 이요한 방화벽 설치를 하는데..
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은 어떨때 쓰는건지여..
그럼 고수님들 한수 부탁드립니다.
여기 저기 고수님들이 만들어 놓은걸 그대로 뺏겨다가.. 지금 테스트 중인데..
잘 되질 않네요.. 그럼 수고 하세요..--알고픈놈.
 | |
|
|
|
|
페이지로딩: [ 9.81 초 ]
작업시간: [ 8.47 초 ]
|
|
 |
 |
![[TOP]](/images/color///top.gif) 
|
 |
 |
 |
 |
|
|