1 iptables
iptables命令用于创建数据过滤与NAT规则,在iptables命令中设置数据过滤或处理数据包的策略叫做规则,将多个规则合成一个链。
1.1 iptables的控制类型
ACCEPT:允许通过
LOG:记录日志信息,然后传给下一条规则继续匹配。
REJECT:拒绝通过,必要时给出提示。
DROP:直接丢弃,不给出任何回应。
1.2 规则链
规则链依据处理数据包的位置不同而进行分类
PREROUTING:在进行路由选择前处理数据包。
INPUT:处理入站的数据包。
OUTPUT:处理出站的数据包。
FORWARD:处理转发的数据包。
POSTROUTING:在进行路由选择后处理数据包。
规则链的先后顺序:
入站顺序:PREROUTINGàINPUT
出站顺序:OUTPUTàPOSTROUTING
转发顺序:PREROUTINGàFORWARDàPOSTROUTING
1.3 规则表
iptables中的规则表是用于容纳规则链,规则表默认是允许状态的,那么规则链就是设置被禁止的规则,而反之如果规则表是禁止状态的,那么规则链就是设置被允许的规则
raw表:确定是否对该数据包进行状态跟踪。
mangle表:为数据包设置标记。
nat表:修改数据包中的源、目的IP地址或端口。
filter表:此表是默认规则表,确定是否放行该数据包。
规则表的先后顺序:rawàmangleànatàfilter
1.4 注意事项
1. 没有指定规则表则默认指filter表。
2. 不指定规则链则指表内所有的规则链。
3. 在规则链中匹配规则时会依次检查,匹配即停止(LOG规则除外),若没有匹配项则按链的默认状态处理。
1.5 iptables命令用法
1.5.1 添加规则
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
1.5.1.1 INPUT规则
# iptables -L -t filter #查看filter表,“-t filter”可省略,因为默认就是filter表
# iptables -L -t nat #查看nat表
#将INPUT链的默认策略设置为丢弃。(此时ssh连接也被拒绝了) -P:policy
# iptables -P INPUT DROP
#允许所有的ping操作,-I:insert在规则链头部加入新规则 -p:protocol -j: jump指令
# iptables -I INPUT -p icmp -j ACCEPT
在INPUT链追加一条规则,允许所有未被其他规则匹配上的数据包通过,“-t filter”可省略,因为默认就是filter表
# iptables -t filter -A INPUT -j ACCEPT
仅允许来自于10.0.0.0/24网段的用户连接本机的ssh服务
# iptables -I INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j REJECT
不允许任何主机访问本机的12345端口
# iptables -I INPUT -p tcp --dport 12345 -j REJECT
# iptables -I INPUT -p udp --dport 12345 -j REJECT
拒绝所有主机通过eth0网卡访问本机的http服务
# iptables -I INPUT -i eth0 -p tcp --dport 80 -j REJECT
1.5.1.2 FORWARD规则
FORWARD规则相当于路由功能
禁止用户访问www.wangning.com
iptables -I FORWARD -d www.wangning.com -j REJECT
禁止IP为10.0.0.66的用户上网
# iptables -I FORWARD -s 10.0.0.66 -j REJECT
1.5.2 删除规则
#删除filter表中INPUT规则的第一条
# iptables -D INPUT 1
1.6 保存iptables配置
# /etc/init.d/iptables save
本文转自 茁壮的小草 51CTO博客,原文链接:http://blog.51cto.com/wn2100/2054541,如需转载请自行联系原作者