|
楼主 |
发表于 2005-10-26 11:53:48
|
显示全部楼层
谢谢各位兄弟,我再修改了一下,大家看看如何?
不过有个问题,我的ftp连上一段时间后,没用,然后再传东西上去,提示断开(不是超时断开)。我是使用proftpd+mysql,一直查不到原因,不知是bug,还是防火墙有问题。
新的防火墙如下:
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Start FireWall for this server..."
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT DROP
/sbin/modprobe ip_conntrack_ftp
#drop all invalid incoming packets.
/sbin/iptables -A INPUT -m state --state INVALID -j DROP
#accept all input from the loopback device.
/sbin/iptables -A INPUT -i lo -p all -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -p all -j ACCEPT
/sbin/iptables -A OUTPUT -o eth1 -j ACCEPT
#Accept ftp
/sbin/iptables -A INPUT -p tcp -i eth1 --dport 21 -j ACCEPT
#accept traffic from all other interfaces only if it's already established
#or related to an existing connection
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Accept ssh
/sbin/iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
#This is allow visit ssh from this ips,but it does not work.
#/sbin/iptables -A INPUT -p tcp -s 213.85.0.0 --dport 22 -i eth1 -j ACCEPT
#/sbin/iptables -A INPUT -p tcp -s 213.5.0.0 --dport 22 -i eth1 -j ACCEPT
#/sbin/iptables -A INPUT -p tcp -s 212.79.0.0 --dport 22 -i eth1 -j ACCEPT
#/sbin/iptables -A INPUT -p tcp -s 53.57.0.0 --dport 22 -i eth1-j ACCEPT
#/sbin/iptables -A INPUT -p tcp -s 66.154.0.0 --dport 22 -i eth1 -j ACCEPT
#/sbin/iptables -A INPUT -p tcp -s 277.160.0.0 --dport 22 -i eth1 -j ACCEPT
#/sbin/iptables -A INPUT -p tcp -s 51.61.0.0 --dport 22 -i eth1 -j ACCEPT
#/sbin/iptables -A INPUT -p tcp -s 211.76.0.0 --dport 22 -i eth1 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth1 --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth1 --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -p udp -j ACCEPT
/sbin/iptables -A INPUT -p icmp -i eth1 -m limit --limit 1/s --limit-burst 10 -j ACCEPT
#对不管来自哪里的ip碎片都进行限制,允许每秒通过100个ip碎片,该限制触发的条件是100个ip碎片
/sbin/iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
#SYN
/sbin/iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "NEW not syn"
/sbin/iptables -A INPUT -p tcp ! --syn -m state --state NEW -j REJECT --reject-with tcp-reset
#drop port scan
# NMAP FIN/URG/PSH
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
# Xmas Tree
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL ALL -j DROP
# Another Xmas Tree
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
# Null Scan(possibly)
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL NONE -j DROP
# SYN/RST
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# SYN/FIN -- Scan(possibly)
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
sleep 2
echo "Firewall start success!"
上面有个地方我本想只允许几个网段的ip能访问ssh,不过好象不行,查了语法好象没错。
作为基本的防护,这样应该差不多了吧! |
|