|
本人用rh AS3 调了个路由+iptables 内网用win2k Server sp4版
apache 2.0.52作WEB服务器
外网为eth0 192.168.0.1
内网为eth1 192.168.0.2
2K服务器为 192.168.0.9
iptables配置如下。从论坛那拉下来的。完整不动
#!/bin/sh
# Enabling iptables rules
# Internet Configuration.
INET_IF="ppp0"
#外网网卡
EXT_IF="eth0"
#内网网卡
LAN_IF="eth1"
LAN_IP="192.168.0.1"
LAN_IP_RANGE="192.168.0.0/24"
TRUSTED_TCP_PORT="22 25 53 80 110 143 443 3128 6000 6001 6002 7100"
# your LAN's IP range and localhost IP. /24 means to only use the first 24
# bits of the 32 bit IP address. the same as netmask 255.255.255.0
# Localhost Configuration.
LO_IF="lo"
LO_IP="127.0.0.1"
#加载模块,有些已经内建,为了以防万一,还是加上了
# Module loading.
echo "modprobe modules"
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# 规则初始化,设置为默认都为DROP
echo "Enabling iptables rules"
# Reset the default policies in the tables
iptables -F
iptables -X
iptables -F -t mangle
iptables -X -t mangle
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
# Set policies
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# 允许ping localhost,ping 192.168.0.1/2
# Allow loopback access
iptables -A INPUT -p icmp -i lo -j ACCEPT
iptables -A OUTPUT -p icmp -o lo -j ACCEPT
# 允许代理和内网客户机互相传输数据(包括ping)
# Allow ping LAN
iptables -A INPUT -p ALL -i $LAN_IF -s $LAN_IP_RANGE -j ACCEPT
iptables -A OUTPUT -p ALL -o $LAN_IF -d $LAN_IP_RANGE -j ACCEPT
# 允许外网的网卡与内网互相通讯。接收数据只接受响应封包,否则不予放行。发送数据没有限制。
# Allow ppp0
iptables -A INPUT -p ALL -i $INET_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p ALL -o $INET_IF -j ACCEPT
# 建立用户定义的链
# Creat userspecified chains
iptables -N allowed
iptables -N tcp_packets
iptables -N bad_tcp_packets
iptables -N icmp_packets
# bad_tcp_packets规则链的作用是,将要求重新导向的联机记录起来,然后将封包丢弃(防止联机被绑架,但是会影响第三方交谈的服务,如MS Media Server)
# bad_tcp_packets chain
iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
# allowed规则链的作用是:允许要求联机封包或响应封包进入,其余丢弃。
# allowed chain
iptables -A allowed -p tcp --syn -j ACCEPT
iptables -A allowed -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A allowed -p tcp -j DROP
# icmp_packets规则链的功能是:允许ping 封包进入,将其余封包丢弃。
# ICMP rules
iptables -A icmp_packets -p icmp -s 0/0 --icmp-type 8 -j ACCEPT
iptables -A icmp_packets -p icmp -s 0/0 --icmp-type 11 -j ACCEPT
# INPUT chain
# 进入防火墙主机的tcp封包必须先进行bad_tcp_packets过滤。但是有时候影响网络性能。
# first bad_tcp_packets filter
iptables -A INPUT -p tcp -j bad_tcp_packets
# 从外网进入防火墙主机的icmp封包必须先进行icmp_packets过滤。这是防止黑客传送不完整的ip封包,系统会响应icmp封包通知对方,导致主机位置被侦测出来。
# second icmp_packets filter
iptables -A INPUT -p icmp -i $INET_IF -j icmp_packets
# 打开信任的服务
# Open trusted ports
echo "Open trusted ports....."
iptables -N services
for PORT in $TRUSTED_TCP_PORT; do
iptables -A tcp_packets -s 0/0 -p tcp --dport $PORT -j allowed
done
iptables -A INPUT -p tcp -i $INET_IF -j tcp_packets
# 拒绝外部使用内网ip欺骗。
# deny local cheat
iptables -A INPUT -i $INET_IF -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i $INET_IF -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i $INET_IF -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i $INET_IF -s 127.0.0.0/8 -j DROP
# 从LAN进入防火墙主机的DHCP封包,予以放行,只有当防火墙担任DHCP时才有用
# allow DHCP_packets from LAN
iptables -A INPUT -p udp -i $LAN_IF --dport 67 --sport 68 -j ACCEPT
# 限制过滤规则的比对频率为每分钟平均流量三个封包(超过上限的封包将暂停比对),并将瞬间流量设定为一次最多处理三个封包(超过上限的封包将丢弃不予处理),这类封包通常是黑客用来进行阻断式攻击
iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level INFO --log-prefix "IPT INPUT packets died:"
# FORWARD chain
# bad_tcp_packets filter
iptables -A FORWARD -p tcp -j bad_tcp_packets
# 从LAN到WAN的封包统统放行
iptables -A FORWARD -o $INET_IF -s $LAN_IP_RANGE -j ACCEPT
# same to above 和上面的规则功能相同
#iptables -A FORWARD -i $LAN_IF -s $LAN_IP_RANGE -j ACCEPT
# 从WAN到LAN的封包仅放行回应封包
iptables -A FORWARD -i $INET_IF -d $LAN_IP_RANGE -m state --state ESTABLISHED,RELATED -j ACCEPT
# 限制过滤规则的比对频率为每分钟平均流量三个封包(超过上限的封包将暂停比对),并将瞬间流量设定为一次最多处理三个封包(超过上限的封包将丢弃不予处理),这类封包通常是骇客用来进行阻断式攻击
iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packets died:"
# 一下是防止PING
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
# 防止DDOS
#iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
# UDP包一律放行
# allow UDP
iptables -A FORWARD -p udp -d $LAN_IP_RANGE -i $EXT_IF -j ACCEPT
echo "Enabling ADSL"
adsl-start
a.b.c.d为拨号后获取的IP地址
用root登陆后输入
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.0.9
iptables -t nat -A POSTROUTING -d 192.168.0.1 -p tcp --dport 80 -j SNAT --to 192.168.0.2
把WEB服务映射到192.168.0.2
apache ACCESS log里面显示
192.168.0.2 - - [17/Oct/2004:21:23:27 +0800] "SEARCH /\x90\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1....后面省略。足足四五页啊。每隔一段时间就有这种记录
生成的accesslog.txt足足2.3MB。才六个小时啊。而且网址没有在网上公布的情况下
谁救救我啊。这是什么攻击啊。该怎么处理才好啊。QQ也不能上了。唉 |
|