Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101419849
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-29 23:30:09

作者:kuafoo  

提要:

因为家里的机器是使用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连接前建立和连接后建立

阅读(396) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~