千家信息网

iptables基础

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Linux系统之上有三种安全防范手段:①包过滤防火墙:iptables②应用程序防火墙:TCP Wrappers③代理服务器防火墙:nginx等iptables程序工作在内核的TCP/IP网络协议栈的
千家信息网最后更新 2026年10月31日iptables基础

Linux系统之上有三种安全防范手段:

①包过滤防火墙:iptables

②应用程序防火墙:TCP Wrappers

③代理服务器防火墙:nginx等

iptables程序工作在内核的TCP/IP网络协议栈的框架上,工作在用户空间;

按用途和功能可分为四表和五链

四表:filter、nat、mangle、raw

优先级:raw、mangle、nat、filter

filter一般的过滤功能
nat地址转换、映射,端口映射等
mangle用于对特定数据包的修改(使用情况很少)
raw一般是为了不再让iptables做数据包的链接跟踪处理,从而提高性能

四表与五链的对应:

filter:INPUT OUTPUT FORWARD

nat:PREROUTING POSTROUTING FORWARD

mangle:INPUT OUTPUT FORWARD PREROUTING POSTROUTING

raw:PREROUTING OUTPUT

iptables的工作流程:传送门

添加规则的时候需要考虑:

1、要实现的功能:判断加载那个表上;

2、不同类规则,匹配报文几率较大的放上面;

3、应该设置默认策略。


iptables的语法格式:

~]# man iptables-extensions

iptables [-t TABLE] SUBCOMMAND CHAIN CRETERIA -j TARGET

SUBCOMMAND

对链的操作

-F清空指定表的指定链上的所有规则;省略链名时,清空表中所有链
-N新建一个用户自定义的链;只能作为默认链的跳转对象,通过被引用生效
-X删除用户自定义的空链;非自定义链和内置链无法删除
-Z将规则的计数器置0
-P设置链的默认处理机制
-E重命名自定义链

注意:被引用中的链无法删除和改名


规则

-A在链尾追加一条规则
-I在指定位置插入一条规则
-D删除指定规则
-R替换指定规则
-L

查看链上所有规则,一般使用格式-vnL

--line-number显示规则编号


CRETERIA:匹配条件

-s检查报文中的源IP地址
-d检查报文中的目标IP地址
-p检查报文中的协议,如:tcp、udp、icmp
-i数据报文的流入接口,通常只用于PREROUTING INPUT FORWARD链上的规则
-o检查报文的流出接口;通常指用于PORWARD OUTPUT POSTROUTING链上的规则


  • icmp协议(ping请求)

iptables -A INPUT -d 192.168.1.1 -s 192.168.1.0/24 -p icmp --icmp-type 8/0 -j ACCEPTiptables -A OUTPUT -s 192.168.1.1 -d 192.168.1.0/24 -p icmp --icmp-type 0/0 -j ACCEPT

8:匹配ping请求报文

0:匹配对ping请求的响应报文

-j :指明采取的动作。REJECT(拒绝)、ACCEPT(接受)、DROP(丢弃)

  • 一次指定多个端口


示例:

iptables -I INPUT 1 -d 192.168.1.1 -p tcp -m multiport --dports 22,80,443 -j ACCEPT


在INPUT链上插入一条新规则,报文的目标IP是192.168.1.1(一般为本机IP):也就是对所有发往本机22,80,443端口的tcp请求都接受,这里一般会设置默认规则为DROP(拒绝没有定义的请求)

 iptables -I OUTPUT 1 -s 192.168.1.1 -p tcp -m multiport --sports 22,80,443 -j ACCEPT


同理:所有本机发出去的响应报文,经过22,80,443端口的tcp协议都放行

-m 模块名称

multiport扩展:以离散定义多端口匹配,最多指定15个端口

-s 192.168.1.1 源IP

--sports ... 源端口,也就是响应报文出口


  • 指定连续的IP地址范围

iptables -A INPUT -d 192.168.1.1 -p tcp --dport 23 -m iprange --src-range 192.168.2.2-192.168.2.100 -j ACCEPT

入栈报文规则

iptables -A OUTPUT -s 192.168.1.1 -p tcp --sport 23 -m iprange --dst-range 192.168.2.2-192.168.2.100 -j ACCEPT

出栈报文规则

  • 对报文中的应用层数据做字符串的匹配

iptables -A OUTPUT -s 192.168.1.1 -p tcp --sport 80 -m string --string "sex" --algo bm -j REJECT

对80端口的出栈报文做匹配,凡是响应报文中带有sex字符的都不予响应

-m string:指明模块为string模块

--string:后面跟要匹配的字符串

--algo:字符串匹配检查算法 bm算法


--hex-string pattern:为了在匹配时性能更好、效率功更高,把字符串作十六进制编码以后,转换格式后再进行匹配

对报文中的某些位置做检查,可以用 -from 从最开始处打算偏移多少字节作为开头,然后到结尾;还有--to选项


  • 基于时间区间做访问控制

--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 从什么时间开始

--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 到什么时间结束

--timestart hh:mm[:ss] 每天的什么时间开始

--timestop hh:mm[:ss] 每天的什么时间结束

--monthdays day[,day...] 每月的哪几天

--weekdays day[,day...] 每周的哪几天

示例:

iptables -R INPUT 1 -d 192.168.1.1 -p tcp --dport 80 -m time --timestart 08:30 --timestop 18:30 --weekdays Mon,Tue,Wed,Thu,Fri -j REJECT

PS:星期首字母要大写或者写成1,2,3,4,5,6,7也是可以的

此条命令的作用:

请求本服务器80端口的进栈报文,在周一到周五的每天8:30-18:30之间是不被允许的

  • 基于发包速率做限制

connlimit:根据每客户端IP做并发请求连接限制,,即限制单IP可同时发起的连接请求;

--connlimit-upto n:连接数小于等于阈值;

--connlimit-above n:连接数超出阈值;

示例:

每客户端发起的ssh请求不能超过2个

iptables -I INPUT -d 192.168.1.1 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT


  • 限制用户每分钟发起的ping请求不能超过20个

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

--limit-burst number 令牌桶的大小,默认为5个(峰值速率)

iptables -I INPUT -d 192.168.1.1 -p icmp --icmp-type 8 -m limit --limit-burst 3 --limit 20/minute -j ACCEPTiptables -A OUTPUT -s 192.168.1.1 -p icmp --icmp-type 0 -j ACCEPT

状态监测机制

iptables能够在内核当中的某段内存上用一个哈希表记录每个连接的源IP、目标IP;源端口、目标端口,什么时候与本机建立的连接,已经持续多长时间…

当再有一个新的请求到达时,会根据这个表中记录的信息作比较,看是否有记录,如果没有则记录

当并发访问数量大于可记录的内存空间时会导致请求被拒绝,

查看可存储的最大请求追踪数:

cat /proc/sys/net/nf_conntrack_max

注意:主机为调度器,本身要承载非常大的并发请求链接数,那么开启这个功能会瞬间由大量服务请求被拒绝,这是致命的!!!

状态:

NEW:新连接

ESTABLISHED:已建立的连接

INVALID:无法识别的连接

UNTRACKED:未被追踪的连接

RELATED:相关联的连接(例如:ftp的命令连接和数据传输连接)


现在假设有这么一种情况:

服务器的其他端口都是关闭的,只有80端口是对外开放的。突然有个从80端口出去的请求,说明有人在的服务器上种了个小程序,偷偷的去连接它的控制端去了。

所以要设置状态监测:所有通过80 端口的报文,只允许进来为NEW的请求,而出去的只能是ESTABLISHED

~]# iptables -A INPUT -d 192.168.1.1 -ptcp -m multiport --dports 22,23,80 -m state --state NEW,ESTABLISHED -j ACCEPT~]# iptables -R OUTPUT 1 -m state--state ESTABLISHED -j ACCEPT

默认策略为DROP



恩,基本就这些了,还有就是日志信息记录,以及如何保存规则和重载规则

保存:iptables-save > /PATH/TO/SOME_RULE_FILE

重载:iptables-restore < /PATH/FROM/SOME_RULE_FILE

-n, --noflush:不清除原有规则

-t, --test:仅分析生成规则集,但不予提交;

注意:重载文件中的规则,会清除已有规则;

规则优化的思路:

(1) 优先放行双方向状态为ESTABLISHED的报文;

(2) 服务于不同类别的功能的规则,匹配到报文可能性更大的放前面;

(3) 服务于同一类别的功能的规则,匹配条件较为严格的放前面;

(4) 设置默认策略:白名单机制

(a) 可使用iptables -P设定默认策略;

(b) 建议在规则链的最后定义规则做为默认策略;


规则 报文 端口 服务 功能 时间 检查 字符 数据 地址 字符串 服务器 状态 用户 目标 策略 本机 限制 机制 格式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 互联网新科技 广东万易互联网科技有限公司惠州分公司 科技平台互联网 互联网中国科技 沃里互联网科技 居家互联网科技有限公司 互联网巨头投资的硬核科技 上海电发互联网科技有限公司 新华互联网科技2019 互联网为啥属于高科技 崇明区互联网教育科技诚信经营 科技类公司包括互联网吗 山东星卡互联网科技有限公司官网 广东工业互联网大赛深圳学泰科技 宇信科技在杭州互联网排第几 互联网高科技行业有哪些企业 互联网科技博主张洲 广东猫王互联网科技有限公司电话 知域互联网科技有限公司官网 互联网科技集团 掌上梦互联网科技 互联网科技创新企业排名 江苏南京365互联网科技 晓花互联网科技有限公司网址 996高科技互联网公司 深圳艾果互联网通讯科技 科技信息时代互联网发展 科技和互联网行业的特点 保山浩联互联网科技有限公司
0