Linux-iptables的简单使用总结

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

猜你喜欢

转载自blog.csdn.net/u012918868/article/details/80891691