Iptables规则管理

简介:

首先,清空centos6的默认规则,使用iptables -F INPUT命令清空filter表INPUT链中规则

清空INPUT链以后,filter表中的INPUT链已经不存在任何的规则,但是INPUT链默认的策略是ACCEPT,会接受所有报文。

此时,我们使用另外一台机器ping本机,查看是否能通;本机IP地址为10.10.10.15,ping命令机器的IP地址为10.10.10.16

增加规则

配置一条规则,拒绝10.10.10.16上的所有报文访问本机;规则由匹配条件和动作组成,那么“拒绝10.10.10.16上的所有报文访问本机”这条规则中,报文的源地址为“10.10.10.16”则属于匹配条件,而“拒绝”这个报文,就属于对应的动作了。

上图,-t指定要操作的表
-I选项,指定将规则插入到哪个链中 insert
-s选项,指定“匹配条件”中的“源地址” source
-j选项,指定“匹配条件”被满足时,所对应的动作,DROP丢弃

此时,再通过10.10.10.16去ping15,已经不能ping通;ping命令一直没有得到回应。

如果,此时在INPUT链中增加一条接受来自10.10.10.16主机中的报文,iptables是否会接受来自16主机的报文呢?

-A选项为append;-A表示在链的尾部追加规则,-I表示在链的首部插入规则

此时,再进行ping操作,发现仍然是不通的

那么试着从头部插入一条规则呢

发现已经能够ping通

由此可见,规则的顺序十分重要
如果报文已经被前面的规则匹配到,iptabels则会对报文执行对应的动作,即使后面的规则也能匹配到当前报文,很有可能也没有机会在对报文执行相应的动作了;以上图为例,报文先被第一条规则匹配到了,于是当前报文被“放行”了,因为报文已经被放行,第二条规则即使能够匹配到刚才放行的报文,也没有机会进行丢弃操作了;这就是iptables的工作机制。

删除规则

想要删除刚才插入filter表中INPUT中的一条规则,应该怎么做?
两种办法
1.可以根据规则的编号去删除
2.可以根据具体匹配的动作删除

查看filter表中INPUT链中的规则:

删除第三条规则:

-D选项表示删除指定链中的某条规则

根据匹配条件和动作删除规则,比如,删除源地址为10.10.10.16,动作为ACCEPT的规则:

-s选项指定源地址为匹配对象;-j选项表示对应的动作

删除指定表中或链中所有规则的命令:iptables -t [表名] -F [链名]

在生产环境中,此条命令慎用!!!

删除规则

如果想把源地址为10.10.10.16作为匹配条件,动作DROP改为ACCEPT,怎么改?
需要使用-R选项修改指定的链中的规则,在修改规则时指定规则对应的编号

如果上述的命令中没有使用-s指定对应规则中原本的源地址,那么在修改完之后,修改的规则中的源地址会自动变成0.0.0.0/0,即匹配所有网段的IP地址。

我们还可以修改指定链的“默认策略”

每张表中的每条链中,都有自己的默认策略,或者说默认动作。
当报文中没有被链中的任何规则匹配到时,防火墙会按照默认动作处理报文。

修改默认策略:

-P选项指定要修改的链

保存配置

在默认情况下,我们对防火墙的配置都是临时的,当重启iptabels服务器或重启服务器后,修改的配置都会消失,为了防止这种清空的发送,我们需要将规则“保存”。

1.centos6:
使用iptables iptables save命令即可保存;默认保存在"/etc/sysconfig/iptables"文件中。

2.centos7:
iptables-save命令,同样适用于centos6
iptables-save >> /etc/sysconfig/iptables

重载规则:

iptables-restore < /etc/sysconfig/iptables

命令总结

1.添加规则

ptables -t 表名 -A 链名 匹配条件 -j 动作
# 在对应链的末尾增加规则
iptables -t 表名 -I 链名 匹配条件 -j 动作
# 在对应链的开头插入规则
iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作
# 在指定位置添加
iptables -t 表名 -P 链名 动作
# 设置表的默认动作

2.删除规则

iptables -t 表名 -D 链名 规则序号
# 按照序号删除规则
iptables -t 表名 -D 链名 匹配条件 -j 动作
# 按照具体的匹配条件与动作删除规则
iptables -t 表名 -F 链名
# 删除指定表的指定链中的所有规则

3.修改规则

# 使用-R选项修改规则中的动作,必须指明原规则中的匹配条件
# 命令语法
iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作

# 其他修改方法:先通过编号方式删除规则,然后在原编号位置插入一条规则

# 修改指定表中指定链的默认动作:
iptables -t 表名 -P 链名 动作

4.保存规则
默认将规则保存至/etc/sysconfig/iptables文件中

service iptables save
# 或
iptables-save > /etc/sysconfig/iptables
iptables-restore < /etc/sysconfig/iptables
目录
相关文章
|
Ubuntu 安全 Unix
Ubuntu内核OverlayFS权限逃逸漏洞(CVE-2021-3493)
Linux Kernel 一般指Linux内核。Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。
453 2
|
Java 数据库
【数据库】starrocks 安装踩坑
【数据库】starrocks 安装踩坑
1126 0
|
6月前
|
JSON API 数据格式
深入研究:淘宝天猫关键词搜索接口详解
淘宝和天猫提供关键词搜索商品的API接口,支持开发者按关键词获取商品列表及相关数据。功能包括通过搜索关键词(q)返回商品基本信息,如ID、标题、价格、图片、销量等。支持排序(sort)、分页(page_no/page_size)、价格区间筛选(start_price/end_price)及分类搜索(cat)。返回JSON格式数据,含商品ID、标题、价格、图片链接、详情页链接和销量等字段。
|
存储 C语言 开发者
【C语言】格式化输出占位符及其标志字符详解(基于ISO/IEC 9899:2024)
在C语言中,格式化输出通过 `printf` 函数等格式化输出函数来实现。格式说明符(占位符)定义了数据的输出方式,标准ISO/IEC 9899:2024(C23)对这些格式说明符进行了详细规定。本文将详细讲解格式说明符的组成部分,包括标志字符、宽度、精度、长度修饰符和类型字符,并适当增加表格说明。
868 6
|
Ubuntu 前端开发 Linux
Ubuntu防火墙命令大集合
【7月更文挑战第13天】
787 1
Ubuntu防火墙命令大集合
|
关系型数据库 MySQL 数据库
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
|
监控 JavaScript 网络协议
Linux系统之安装uptime-kuma服务器监控面板
【5月更文挑战第12天】Linux系统之安装uptime-kuma服务器监控面板
905 1
|
SQL 自然语言处理 测试技术
NL2SQL进阶系列(4):ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL]
NL2SQL进阶系列(4):ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL]
NL2SQL进阶系列(4):ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL]
|
监控 关系型数据库 MySQL
|
存储 缓存 负载均衡
HBase 详细API操作
HBase 详细API操作
329 0