您的位置:首页 > 运维架构 > Linux

iptables/netfilter防火墙介绍与使用

2015-12-24 22:03 597 查看
一、iptables/netfilter的基本介绍
iptables/netfilter是Linux主机上的一个防火墙软件组合,其中iptables是一个防火墙规则定义软件,netfilter是内核中的一个功能(规格实施模块),负责所编写的规则的生效使用。
netfilter将报文的流进流出路径分为五个链,所有的报文都必须流经这五个链中的其中几个。五个链分别是:
PREROUTING路由前,报文进入本机将要做路由分析之前流经的位置。
POSTROUTING路由后,报文已经路由分析完毕并将要发送(流出)的位置。
INPUT数据报文进入用户空间流经的位置。
OUTPUT数据报文流出用户空间流经的位置。
FORWARD作为转发报文流经的位置。
除了基本的五个链外,用户还可以根据需求创建自定义链,不过自定义链需要由上面的五个链调用才能生效。
为了便于管理,iptables提供了四个不同功能的表,根据表功能的不同,每个表提供不同的链,则定义在对应功能表的链上。
raw表如果开启了连接追踪,可以使用此表对某种连接不做追踪,支持的链:
POSTROUTING链
OUTPUT链
mangle表可以对数据报文进行修改,支持的链:
POSTROUTING链
PREROUTING链
OUTPUT链
INPUT链
FORWARD链
nat表做IP地址转换,支持的链:
PREROUTING链
POSTROUTING链
OUTPUT链
filter表
做过滤,支持的链:
INPUT
OUTPUT
FORWARD
iptables/netfilter可以将策略类型分为"通"、"堵"。"通"类型默认规则是拒绝,只有明确定义允许的报文才让其通过;"堵"类型默认规则是允许,只有明确定义拒绝的报文才阻塞。通堵类型正好相反。
iptables/netfilter是一个四层防火墙,所以只能对四层及以下(三层)进行匹配。例如源IP、目标IP、源端口、目标端口、ICMP类型。
二、iptables/netfilter的规则:
iptables的命令比较简单,man帮助也比较明晰,唯一需要注意的就是规则之间的关系,以及规则的排列顺序,一个防火墙的性能高低,有很大一部分取决于你的规则排序。规则排序一般遵从匹配范围小的优先,匹配几率高的优先。
iptables定义规则的方式大概是这种格式:
iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-t 表名:指定要操作的表
COMMAND:定义策略
chain:指定要操作的链
CRETIRIA:定义匹配的标准(分为多个标准)
-j Target:策略进行的动作
1.COMMAND格式介绍:
新增规则:
iptables [-t table] -A chain rule-specification
删除规则:
iptables [-t table] -D chain rulenum
插入一条规则:
iptables [-t table] -I chain [rulenum] rule-specification
替换一条规则:
iptables [-t table] -R chain rulenum rule-specification
显示某规则的定义语法:
iptables [-t table] -S [chain [rulenum]]
查看表、链中的规则(指定第几条):
iptables [-t table] -L [chain [rulenum]] [options...]  #options一般为-n和-v
清空表或链规则:
iptables [-t table] -F [chain [rulenum]] [options...]
清空链的包计数器和字节计数器:
iptables [-t table] -Z [chain] [options...]
定义默认进行的动作:
iptables [-t table] -P chain target
创建一条自定义链:
iptables [-t table] -N chain
删除一条自定义空链:
iptables [-t table] -X [chain]
修改自定义链名字:
iptables [-t table] -E old-chain-name new-chain-name
2.CRETIRIA格式介绍:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息