Slackware-10.1 下 adsl 拨号上网的 iptables 防火墙设置
出自大连开源软件公共开发服务平台
作者:kuafoo
来自:http://slack.linuxsir.org/main/node/158
提要:因为家里的机器是使用adls拨号上网,为了防止家伙们对我的机器作端口扫描,因此设置好防火墙显得比较重要起来。
我尝试了普通方式来设置iptables,发现一般的设置方法并不能很好的满足我的需要,主要是因为ppp的联结建立在放火墙脚本运行(通过手工编写 /etc/rc.d/rc.firewall)后。觉得更好的的方法是用rp-pppoe来调用你的防火墙设置,因为rp-pppoe的配置文件(/etc/ppp/pppoe.conf)中有一个选项,具体可以参考slackware下面/etc/ppp目录下的两个放火墙设置脚本,虽然是针对 ipchains写的,但可以换成iptabes改写。在ppp建立后,iptables的规则就可以生效了。
在 /etc/ppp目录下有两个脚本firewall-masq和firewall-standalone,对应于/etc/ppp/pppoe.conf 中的两个选项 FIREWALL=MASQUERADE 或 FIREWALL= STANDALONE 这两个脚本都是基于ipchains的, 通过 /usr/sbn/adsl-connect 脚本调用(被adsl-start间接调用)。
下面是一个我写的一个基本的/etc/rc.d/rc.firewall示例
#!/bin/sh # Start/stop/restart the firewall ($IPT) IPT="/usr/sbin/iptables" # Start firewall: firewall_start() { $IPT -P INPUT DROP $IPT -P FORWARD DROP $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT # SSHD $IPT -A INPUT -p tcp --dport 22 -i ppp0 -j ACCEPT # Bittorrent $IPT -A INPUT -p tcp --dport 6881:6889 -i ppp0 -j ACCEPT # BitTornado $IPT -A INPUT -p tcp --dport 10000:60000 -i ppp0 -j ACCEPT $IPT -A INPUT -p icmp -j ACCEPT } # Stop firewall: firewall_stop() { $IPT -P INPUT ACCEPT $IPT -P FORWARD ACCEPT $IPT -F $IPT -X } # Restart firewall: firewall_restart() { firewall_stop sleep 1 firewall_start } case "$1" in 'start') firewall_start ;; 'stop') firewall_stop ;; 'restart') firewall_restart ;; *) echo "usage $0 start|stop|restart" esac 下面是用adsl-connect调用的改写后的/etc/ppp/firewall-standalone #!/bin/sh # Start the firewall ($IPT) IPT="/usr/sbin/iptables" $IPT -P INPUT DROP $IPT -P FORWARD DROP $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT # SSHD $IPT -A INPUT -p tcp --dport 22 -i ppp0 -j ACCEPT # Bittorrent $IPT -A INPUT -p tcp --dport 6881:6889 -i ppp0 -j ACCEPT # BitTornado $IPT -A INPUT -p tcp --dport 10000:60000 -i ppp0 -j ACCEPT $IPT -A INPUT -p icmp -j ACCEPT 两种方法都可以对ppp0建立规则,但区别在ppp0连接前建立和连接后建立,那种更好,我也不知道:-P



