iptables使用
使用iptables命令设置防火墙规则时,其基本的命令格式如下:
iptables [ -t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
iptables 表
表名 包含的链 主要作用
filter INPUT,FORWARD,OUTPUT 对数据包进行过滤
nat PREROUTING,POSTROUTING,OUTPUT 修改数据包的IP地址、端口号等信息
mangle PREROUTING,POSTROUTING, 不常用
INPUT,OUTPUT,FORWARD
raw OUTPUT、PREROUTING 1.2.9新增表不常用
iptables 链
链名 作用
INPUT 入站
OUTPUT 出战
FORWARD 转发
PREROUTING 对数据包作路由选择之前
POSTROUTING 对数据包作路由选择之后
iptables 命令选项
选项名 功能及特点
-A 在指定链的末尾添加(--append)一条新的规则
-D 删除(--delete)指定链中的某一条规则,按规则序号或内容确定要删除的规则
-I 在指定链中插入(--insert)一条新的规则,若未指定插入位置,则默认在链的开头插入
-R 修改、替换(--replace)指定链中的某一条规则,按规则序号或内容确定要替换的规则
-L 列出(--list)指定链中的所有的规则进行查看,若未指定链名,则列出表中所有链的内容
-F 清空(--flush)指定链中的所有规则,若未指定链名,则清空表中所有链的内容
-N 新建(--new-chain)一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链(--delete-chain)
-P 设置指定链的默认策略(--policy)
-n 使用数字形式(--numeric)显示输出结果,若显示主机的IP地址而不是主机名
-v 查看规则列表时显示详细(--verbose)的信息
-V 查看iptables命令工具的版本(--Version)信息
-h 查看命令帮助信息(--help)
--line-number 查看规则列表时,同时显示规则在链中的顺序号
iptables 目标动作或跳转
常用动作 作用
ACCEPT 允许数据包通过
DROP 直接丢弃数据包,不给出任何回应信息
REJECT 拒绝数据包通过,必须时会给数据发送端一个响应信息
LOG 在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则
RETURN 不再根据当前链的其他规则来检查数据包,而是直接返回,继续被发送到其目的地址,或下一个链
通过情况下,只要在规则链中找到一条相匹配的规则,则不再继续检查该链内后面的规则;但使用LOG处理方式的规则是一个特例,因为LOG只是一个辅助动作,并没有真正的处理数据包
常用语句
查看iptables规则
iptables [-t 表名] <-L> <链名> //(后面将链名换为-n表示查看所有该表的所有链规则)
定义规则链的默认策略
iptables [-t 表名] <-P> <链名> <动作>
增加、插入、删除和替换规则
iptables [-t 表名] <-A | I | D | R>链名 [规则编号] [-i | o 网卡] [-p 协议类型] [-s 源IP | 源子网] [--sport 源端口号] [-d 目标IP | 目标子网] [--dport 目标端口号] <-j 动作>
-A:新增一条规则,该规则将增加到规则列表的最后一行,该参数不能使用规则编号
-I:插入一条规则,原来该位置上的规则就会身后顺序移动,如果没有指定规则编号,则在第一条规则前插入
-D:删除一条规则,可以输入完整规则,或直接指定规则编号
-R:替换某条规则,规则被替换并不会改变顺序,必须要指定替换的规则编号
[-i | o 网卡名称]:i是指数据包从哪块网卡输入,o是批数据包从哪块网卡输出
利用iptables过滤URL目标请求
iptables [-t 表名] -A 链名 -m string –string “XXX” –algo bm -j DROP
-m string
使用string功能,string是iptables的一个module,也就是做字符串匹配的。
–string “xxxx”
定义字符串内容,可以是URL里任意字符,如果是需要block下载某些类型的文件或请求,这个有很大的发挥空间,可自由想象喔。
–algo bm
设置字符匹配的查询算法,一般默认使用bm算法效果就可以了,另外还可以设置kmp算法,那是一种更复杂的算法,详细内容可自行参见高等数学里的资料。(bm = Boyer-Moore, kmp = Knuth-Pratt-Morris)
清除规则和计数器
iptables [-t 表名] <-F | Z>
-F:删除指定表中所有规则
-Z:将指定表中数据包计数器和流量计数器归零
记录与恢复防火墙规则
iptables-save > 文件名 (记录当前防火墙规则)
iptables-restore > 文件名 (将防火墙规则恢复到当前主机环境)
新增、删除自定义规则链
iptables -t raw -N <链名>
iptables -t raw -X
网友评论