千家信息网

iptables 规则的应用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,iptables是系统安全必不可少的,对防范外来***,起着巨大的作用.iptables 只是防火墙的通告规则,是系统 netfilter 在内核中完成具体功能实现的.防火墙分两大类.网络层防火墙,应
千家信息网最后更新 2026年10月31日iptables 规则的应用

iptables是系统安全必不可少的,对防范外来***,起着巨大的作用.

iptables 只是防火墙的通告规则,是系统 netfilter 在内核中完成具体功能实现的.

防火墙分两大类.网络层防火墙,应用层防火墙.

防火墙的原理是在报文与主机通讯的必经之路设立通过规则,以实行安全放行.一般主机通讯的必经之路有五个,分别对应五个勾子函数.

hook function

PREROUTING:路由前

INPUT:到达本机内部的报文必经之路

FORWARD:由本机转发的报文必经之路

OUTPUT:由本机发出的报文的必经之路

POSTROUTING:路由后

防火墙,分四大规则功能表raw, mangle, nat, filter

filter: 过滤,定义是否允许通过防火墙

nat: 地址转换,启用connection_track;

SNAT

DNAT

PNAT

mangle:

raw: 目标是关闭nat表上启用的连接追踪功能;

表和链的对应关系:

filter: INPUT, FORWARD, OUTPUT

nat: PREROUTING(SNAT),POSTROUTING(DNAT),OUTPUT

mangle: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING

raw: PREROUTING, OUTPUT


iptables只是用户空间的工具,写规则,并自动发往netfilter,立即生效;所以在编写规则之前,一定要注意的是,写的规则,千万要确保放行自己的连接,以免自己的ssh远程连接都不予放行,将自己挡在外面.

netfilter: 接收并生效规则;


基本语法:

iptables [-t TABLE] COMMAND CHAIN CRETIRIA -j TARGET

iptables [-t TABLE] COMMAND CHAIN CRETIRIA -j TARGET

加在哪个表上 命令选项 链接 匹配标准 处理 处理办法

[以上语法格式,只是比较通用,不同的命令,用法不尽相同]


-t TABLE:

nat, mangle, raw, filter

默认为filter


管理链的命令:

-F:flush, 清空规则链;

-N:new, 自建一条链

-X: delete, 删除一条自定义的空链

-Z:zero,计数器归零

-P:policy,设置默认策略,对filter表来讲,默认规则为ACCEPT或DROP;

-E:重命名自定义链


管理链中的规则

-A :添加

-I :插入

-D : 删除

-R :修改 =>如果要修改一条规则的话,语法顺序要和写的时候对应,所以一般我不使用,通常是新写一条规则在要修改的规则之后,把要改的规则删除


查询规则:

-L

-n: 数字格式显示主机地址和端口;

-v: 详细格式,-vv, -vvv

--line-numbers: 显示规则编号


pkts bytes target prot opt in out source destination

包数 字节数 目标 协议 流入的接口 流出的接口 源地址 目标地址


-x: exactly,不要对计数器的计数结果做单位换算,而显示其精确值


所有命令的使用,如果不带 -t table[指定的表] 则默认使用的是filter表


iptables [-t TABLE] -A 链名 匹配条件 -j 处理目标

匹配条件:

通用匹配

-s 地址:指定报文源IP地址匹配的范围;可以是IP,也可以是网络地址;可使用!取反;

--src, --source

-d 地址:指定报文目标IP地址匹配的范围;

--dst, --destination

-p 协议:指定匹配报文的协议类型,一般有三种tcp, udp和icmp;

-i INTERFACE: 数据报文流入的接口;PREROUTING, INPUT, FORWARD

-o INTERFACE: 数据报文流出的接口;OUTPUT, FORWARD, POSTROUITING


扩展匹配

隐式扩展:当使用-p {tcp|udp|icmp}中的一种时,可以直接使用扩展专用选项;

-p tcp:

--sport PORT[-PORT]: 指定源端口

--dport PORT[-PORT]: 指定目标端口

--tcp-flags

-p udp:

--sport

--dport

-p icmp [-m icmp] =>网络报文探测协议

--icmp-type 0: echo-reply, ping响应 8: echo-request, ping请求

iptables


处理目标:

内置目标:

DROP 一般不给通行的报文悄悄丢弃就好,最好不要使用reject

REJECT

ACCEPT


例,写一条规则,允许接收本机ping其它主机的请求回应

[root@apache_13 ~]# iptables -A INPUT -d 172.16.26.13 -p icmp --icmp-type 0 -j ACCEPT

放行本机对其它主机的ping请求

[root@apache_13 ~]# iptables -A OUTPUT -p icmp -j ACCEPT



显式扩展:必须明确说明使用哪个模块进行扩展,而后才能使用其扩展专用选项;

-m state --state ==>切记,每一个不同的扩展都要使用一次 -m参数

模块:iptables,netfilter各拥有一部分代码

multiport: 多端口匹配

可用于匹配非连续或连续端口;最多指定15个端口;


专用选项:

--source-ports, --sports port[,port,port:port]

--destination-ports, --dports

--ports


[root@apache_13 ~]# iptables -I INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT

放行所有访问22,80端口的报文


iprange: 匹配指定范围内的地址;

匹配一段连续的地址而非整个网络时有用;

专用选项:

[!] --src-ragne IP[-IP]

[!] --dst-range

[root@apache_13 ~]# iptables -I INPUT -p tcp -m multiport --dports 22,80 -m iprange --src-range 172.16.26.1-172.16.26.10 -j ACCEPT

放行172.16.26.1-10访问本机22,80端口的报文



string: 字符串匹配,能够检测报文应用层中的字符串

字符匹配检查高效算法

kmp, bm


专用选项:

--algo {kmp|bm}

--string "STRING"

--hex-string "HEX_STRING": HEX_STRING为编码成16进制格式的字串;


# iptables -I OUTPUT -m string --algo kmp --string "sex" -j DROP

如,不允许字串里包含有 admin

[root@apache_13 ~]# iptables -A OUTPUT -m string --string 'admin' --algo kmp -j DROP


time: 基于时间做访问控制

专用选项:

--datestart YYYY[-MM][-DD[Thh[:mm[:ss]]]]

--datestop

例如,在8-19 至8-20不许访问

[root@apache_13 ~]#iptables -A INPUT -m time --datestart 2014-08-19 --datestop 2014-08-20 -j DROP


--timestart hh:mm[:ss]

--timestop hh:mm[:ss]

例如,在12:00 至 14:00 不许访问

[root@apache_13 ~]# iptables -A OUTPUT -m time --timestart 12:00 --timestop 14:00 -j DROP

--weekdays day[,day]

Mon, Tue,

例如,周一,二不许访问

[root@apache_13 ~]# iptables -A OUTPUT -m time --weekdays Mon,Tue -j DROP


connlimit: 连接数限制,对每IP所能够发起并发连接数做限制;

专用选项:

[!] --connlimit-above [n]


例如,限制176主机,最大只能有3个ssh连接

[root@apache_13 ~]# iptables -I INPUT 1 -s 172.16.26.176 -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP


limit: 速率限制

专用选项:

--limit n[/second|/minute|/hour|/day]

--limit-burst n


例子:每个ip每分钟只能ping 我20下,而且每次只能并发5个ping包

[root@apache_13 ~]# iptables -A INPUT -d 172.16.100.7 -p icmp --icmp-type 8 -m limit --limit 20/minute --limit-burst 5 -j ACCEPT


state: 状态检查

专用选项:

--state

[root@apache_13 ~]# iptables -I INPUT 3 -s 172.16.10.0/24 -d 172.16.26.13 -p tcp -m multiport --destination-ports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -I OUTPUT 1 -m state --state ESTABLISHED # 对于所有established状态的包全部放行,那么OUTPUT链上的其他的放行的规则都可以删除了


连接追踪中的状态:

NEW: 新建立一个会话

ESTABLISHED:已建立的连接

RELATED: 有关联关系的连接

INVALID: 无法识别的连接


综合练习1

限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机;

iptables -A OUTPUT -m time --weekdays Mon -m limit --limit 100/s -m string --string 'admin' --algo kmp -j DROP

限速 限制每秒100个 过滤字串 过滤 admin 使用 kmp算法



调整连接追踪功能所能容纳的连接的最大数目:

/proc/sys/net/nf_conntrack_max


当前追踪的所有连接

/proc/net/nf_conntrack


不同协议或连接类型追踪时的属性:

/proc/sys/net/netfilter目录:


放行被动模式下的FTP服务:

1、装载模块/lib/modules/KERNEL_VERSION/kernel/net/netfilter/

模块:nf_conntrack_ftp


2、放行请求报文:

(1)放行NEW状态对21端口请求的报文;

(2) 放行ESTABLISHED以及RELATED状态的报文


3、放行响应报文:

(1) 放行ESTABLISHED以及RELATED状态的报文


综合案例

配置apache_13有ssh,httpd服务的路由规则

-A INPUT -p tcp -m tcp --dport 80 -m time --weekdays Tue --datestop 2038-01-19T11:14:07 -m string --string "admin" --algo kmp --to 65535 -j DROP

-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP

-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP

-A INPUT -d 172.16.26.13/32 -p udp -m udp --sport 53 -j ACCEPT

-A INPUT -d 172.16.26.13/32 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

-A INPUT -s 172.16.26.14/32 -j ACCEPT

-A INPUT -s 172.16.26.16/32 -j ACCEPT

-A OUTPUT -s 172.16.26.13/32 -p udp -m udp --dport 53 -j ACCEPT

-A OUTPUT -p tcp -m state --state ESTABLISHED -j ACCEPT

-A OUTPUT -p icmp -j ACCEPT

-A OUTPUT -p tcp -m multiport --sports 22,80 -j ACCEPT

-A OUTPUT -d 172.16.26.14/32 -p tcp -m tcp --dport 9000 -j ACCEPT



iptables的规则保存与读取

service iptables save ==>规则保存到了/etc/sysconfig/iptables

还可以保存到自定义的位置

iptables-save > /tmp/iptables.cnf .

哪天想读进来了,可以 iptables-restore < /tmp/iptables









规则 报文 地址 端口 专用 目标 主机 本机 状态 防火墙 防火 限制 必经之路 之路 必经 服务 功能 命令 字符 接口 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技 互联网科技网 蓝思科技飞鸽互联网 互联网核心科技是什么 上海互联网科技有限公司 科技服务与互联网 互联网科技logo设计 互联网前沿科技 互联网科技公司名称 佩信高科技互联网 蓝色互联网科技 银川新华互联网科技学校地址 银川新华互联网科技职业技术培训学校图片 智腾互联网科技有限公司 允成互联网科技有限公司融资 锡山区互联网智能科技产品供应 互联网第三次科技革命特征 城市宝互联网科技有限公司 本届互联网大会上的黑科技 优雇互联网科技有限公司 广州万易互联网科技有限公司 郑州华宇互联网科技 互联网科技公司有哪些 农村开互联网科技讲堂 深圳前海聚择互联网科技有限公司 青岛科技大学互联网大赛研究生 互联网科技大奖都有哪些公司 互联网行业科技股 美国互联网科技实力 互联网科技自媒体灵感
0