2008年9月30日星期二

用 iptables 设置个人防火墙,规则实例

By Yaoms -- Fri Oct 3 21:00:21 CST 2008


转载请注明原作者,尊重版权从我做起

需求很简单,服务器上有 mail,http,https,ssh 等若干个服务,允许外来的ping。
配置脚本:

#!/bin/bash
#清除filter表 INPUT链 的所有规则
iptables -t filter -F INPUT
#列出所有需要开通的端口,在这些端口上有对外开放的服务,例如www网站等
openports='22 25 80 110 443'
#允许有RELATED和ESTABLISHED标记的连接进入,对ftp等服务特别重要,还有如果使用ssh管理服务器的话不会把自己意外踢掉
iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#允许任何进入lo的数据包,本机程序访问本机服务使用的通道
iptables -t filter -A INPUT -i lo -j ACCEPT
#允许外网ping
iptables -t filter -A INPUT -p icmp -j ACCEPT
#开通指定端口的访问,默认开通tcp和udp两个协议的指定端口
for i in $openports
do
iptables -t filter -A INPUT -t tcp --dport $i -j ACCEPT
iptables -t filter -A INPUT -t udp --dport $i -j ACCEPT
done
#将filter表INPUT链的策略设置为DROP,即不匹配以上任何规则的数据包,将应用此策略
iptables -t filter -P INPUT DROP

配置后查看现有规则的方法:
iptables -t filter -L INPUT -n --line-numbers -v
*注意,使用iptables 必须具有 root 权限。

没有评论:

发表评论