iptables详解(2):iptables管理
iptables管理
本文转载自朱双印个人日志 iptables详解(2):iptables实际操作之规则查询
本文转载自朱双印个人日志 iptables详解(3):iptables规则管理
查看规则
iptables为我们预定义了4张表,它们分别是raw表、mangle表、nat表、filter表,不同的表拥有不同的功能。
查看filter表中的规则
iptables -t filter -L-t 指定要操作的表,
-L 查看-t选项对应的表的规则,不加默认为所有规则
)]
上图中红色框部分为规则,箭头部分为链,INPUT链、FORWARD链、OUTPUT链,每条链中都有自己的规则,INPUT链、FORWARD链、OUTPUT链都拥有”过滤”的能力,所以,当我们要定义某条”过滤”的规则时,我们会在filter表中定义,但是具体在哪条”链”上定义规则呢?这取决于我们的工作场景。比如,我们需要禁止某个IP地址访问我们的主机,我们则需要在INPUT链上定义规则。因为报文发往本机时,会经过PREROUTING链与INPUT链,所以,如果我们想要禁止某些报文发往本机,我们只能在PREROUTING链和INPUT链中定义规则,但是PREROUTING链并不存在于filter表中,换句话说就是,PREROUTING关卡天生就没有过滤的能力,所以,我们只能在INPUT链中定义,当然,如果是其他工作场景,可能需要在FORWARD链或者OUTPUT链中定义过滤规则。
查看其他表中的规则,我们可以省略-t filter,当没有使用-t选项指定表时,默认为操作filter表,即iptables -L表示列出filter表中的所有规则。
iptables -t raw -Liptables -t mangle -Liptables -t nat -L
查看filter表中INPUT链的规则
iptable -L FORWARDiptable -L FORWARD -v
-v : 查看更为详细的信息
上图中只显示了filter表中FORWARD链中的规则(省略-t选项默认为filter表),可以使用-v选项,查看出更多的、更详细的信息
字段:
pkts:对应规则匹配到的报文的个数。
bytes:对应匹配到的报文包的大小总和。
target:规则对应的target,往往表示规则对应的”动作”,即规则匹配成功后需要采取的措施。
prot:表示规则对应的协议,是否只针对某些协议应用此规则。
opt:表示规则对应的选项。
in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则。
out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则。
source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段。
destination:表示规则对应的目标地址。可以是一个IP,也可以是一个网段。
iptables默认为我们进行了名称解析,因此上图中的源地址与目标地址都为anywhere,但是在规则非常多的情况下如果进行名称解析,效率会比较低,所以,在没有此需求的情况下,我们可以使用-n选项,表示不对IP地址进行名称反解,直接显示IP地址
iptable -L FORWARD -vn
使用–line-numbers可显示规则的编号
iptable -L FORWARD -vn --line-number-–line-numbers选项并没有对应的短选项,不过我们缩写成–line时,centos中的iptables也可以识别。
表中的每个链的后面都有一个括号,括号里面有一些信息,如下图红色框位置,那么这些信息都代表了什么呢?我们来看看。
policy表示当前链的默认策略,policy DROP表示上图中INPUT的链的默认动作为ACCEPT。
packets表示当前链(上例为INPUT链)默认策略匹配到的包的数量,0 packets表示默认策略匹配到0个包。
bytes表示当前链默认策略匹配到的所有包的大小总和。
增加规则
将测试机的防火墙filter表的INPUT规则清空
iptables -F INPUT
在另一台机器上去ping该测试机,ping命令可以得到回应,证明ping命令发送的报文已经正常的发送到了防火墙所在的主机
此时,在测试机上面配置一条规则,拒绝另一台机器来访问测试机。
iptables -t filter -I INPUT -s 192.168.236.153 -j DROP-t 指定了要操作的表
-I 指明将”规则”插入至哪个链中 在链的首部插入规则
-s 指明”匹配条件”中的”源地址”
-j 指明当”匹配条件”被满足时,所对应的动作规则由匹配条件与动作组成,那么”拒绝另一台机器上的所有报文访问当前机器”这条规则中,报文的”源地址″则属于匹配条件,如果报文来自该机器,则表示满足匹配条件,而”拒绝”这个报文,就属于对应的动作# 在指定位置插入新规则
iptables -t filter -I INPUT 2 -S 192.168.236.153 -j DROP-I INPUT 2 在INPUT链中新增规则,新增的规则的编号为2
查看规则如下:
再次查看filter表中的INPUT链,发现规则已经被添加了,在iptables中,动作被称之为”target”,所以,上图中taget字段对应的动作为DROP。
此时再ping测试机,看是否能ping通:
如上图所示,ping 154主机时,PING命令一直没有得到回应,说明iptables规则已经生效,ping发送的报文压根没有被154主机接受,而是被丢弃了。
现在INPUT链中已经存在了一条规则,它拒绝了所有来自154主机中的报文,如果此时,我们在这条规则之后再配置一条规则,后面这条规则规定,接受所有来自154主机中的报文,那么,iptables是否会接受来自154主机的报文呢?我们动手试试。
在filter表的INPUT链中追加一条规则,这条规则表示接受所有来自156主机的报文。
iptables -t filter -A INPUT -s 192.168.236.153 -j ACCEPT-A 表示在对应的链中”追加规则 在链的尾部追加规则
此时再ping测试机,看是否能ping通:
发现无法ping通,查看测试机上规则的计数器可以看到,根本没有任何报文被第二条规则匹配到
在这个基础上,在INPUT的前端添加一条允许的规则
iptables -t filter -I INPUT -s 192.168.236.153 -j ACCEPT
此时再ping测试机
发现可以ping通,查看规则可以发现第一条规则的计数器已经显示出了匹配到的报文数量。
结论:
如果报文已经被前面的规则匹配到,iptables则会对报文执行对应的动作,即使后面的规则也能匹配到当前报文,很有可能也没有机会再对报文执行相应的动作了,就以上图为例,报文先被第一条规则匹配到了,于是当前报文被”放行”了,因为报文已经被放行了,所以,即使上图中的第二条规则即使能够匹配到刚才”放行”的报文,也没有机会再对刚才的报文进行丢弃操作了。这就是iptables的工作机制。
删除规则
删除filter表中INPUT中的一条规则,有两种办法
方法一:根据规则的编号去删除规则
方法二:根据具体的匹配条件与动作删除规则
# 使用方法一删除INPUT链中第三条规则
iptables -t filter -D INPUT 3# 使用第二种方法 删除INPUT链中 匹配条件为源地址192.168.236.153,动作为ACCEPT的规则
iptables -t filter -D INPUT -s 192.168.236.153 -j ACCEPT# 删除指定表中某条链中的所有规则
iptables -t 表名 -F 链名# 删除整个表中所有链上的规则
iptables -t 表名 -F-D 表示删除指定链中的某条规则
-F flush,即冲刷指定的链,即删除指定链中的所有规则
修改规则
# 方法一 通过-R参数
iptables -t filter -R INPUT 1 -s 192.168.236.153 -J REJECT
注意:-s选项以及对应的源地址不可省略,即使我们已经指定了规则对应的编号,但是在使用-R选项修改某个规则时,必须指定规则对应的原本的匹配条件(如果有多个匹配条件,都需要指定),如果没有指定原本的源地址,当前规则的源地址自动变为0.0.0.0/0-R 表示修改指定的链 -R INPUT 1 表示修改INPUT链的第1条规则
-j REJECT 表示将INPUT链中的第一条规则的动作修改为REJECT# 方法二 可以先删除,在添加# 修改默认策略
iptables -t filter -P FORWARD DROP
-P 指定要修改的链,-P FORWARD DROP表示将表中FORWRD链的默认策略改为DROP。
保存规则
在默认的情况下,我们对”防火墙”所做出的修改都是”临时的”,换句话说就是,当重启iptables服务或者重启服务器以后,我们平常添加的规则或者对规则所做出的修改都将消失,为了防止这种情况的发生,我们需要将规则”保存”。
centos7
systemctl disable firewalldyum install iptables-services -y # 作为service则需要安装这个包systemctl enable iptables# 保存规则
service iptables save
命令小结
上文已经详细的举例并描述了怎样进行iptables规则管理,为了以后能够快速的回顾,我们把上述命令总结一下。
命令小节
iptables -t 表名 -L # 查看对应表的所有规则
iptables -t 表名 -L 链名 # 查看指定表的指定链中的规则
iptables -t 表名 -v -L # 查看指定表的所有规则,并且显示更详细的信息(更多字段)
iptables -t 表名 -n -L # -n选项表示不解析IP地址
iptables --line-numbers -t 表名 -L # -–line-numbers选项表示显示规则的序号iptables -t 表名 -A 链名 匹配条件 -j 动作 # 指定表的指定链的尾部添加一条规则
iptables -t 表名 -I 链名 匹配条件 -j 动作 # 指定表的指定链的首部添加一条规则
iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作 # 指定表的指定链的指定位置添加一条规则iptables -t 表名 -D 链名 规则序号 # 删除指定表的指定链的指定规则
iptables -t 表名 -D 链名 匹配条件 -j 动作 # 删除指定表的指定链的指定规则
iptables -t 表名 -F 链名 # 删除指定表的指定链中的所有规则
iptables -t 表名 -F # 删除指定表中的所有规则iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作 # 修改指定表中指定链的指定规则
iptables -t 表名 -P 链名 动作 # 设置指定表的指定链的默认策略(默认动作)service iptables save # 保存规则
iptables详解(2):iptables管理相关推荐
- iptables详解(1):iptables概念
防火墙相关概念 此处先描述一些相关概念. 从逻辑上讲.防火墙可以大体分为主机防火墙和网络防火墙. 主机防火墙:针对于单个主机进行防护. 网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务 ...
- Iptables详解之iptables命令的参数
iptables是采用规则堆栈的方式来进行过滤,当一个封包进入网卡,会先检查 Prerouting,然后检查目的IP判断是否需要转送出去,接着就会跳到INPUT 或 Forward 进行过滤,如果封包 ...
- iptables详解--转
出处:http://yijiu.blog.51cto.com/433846/1356254 iptables详解 基本概念: 1.防火墙工作在主机边缘:对于进出本网络或者本主机的数据报文,根据事先设定 ...
- iptables详解之filter
iptables详解之filter iptables令很多小伙伴脑阔疼,下面我们来说说如何使用iptables. 一.iptables格式 1.1.iptables 帮助 通过iptables --h ...
- iptables详解(转)
iptables详解 前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需 ...
- 《iptables详解 》RHEL6
iptables详解 Iptables原理 现在防火墙主要分以下三种类型: 包过滤.应用代理.状态检测 包过滤防火墙:现在静态包过滤防火墙市面上已经看不到了,取而代之的是动态包过滤技术的防火墙哈 ...
- iptables详解【1】: 概念
iptables详解(1):iptables概念 文章目录 一.防火墙相关概念 二.iptables基础 三.链的概念 四.表的概念 五.表链关系 六.数据经过防火墙的流程 七.规则的概念 八.小结 ...
- Iptables 详解与实战案例
目录 一.iptables简介 二.iptables的表tables与链chains 2.1 四种内建表 2.1.1 Filter表 2.1.2 NAT表 2.1.3 Mangle表 2.1.4 Ra ...
- iptables详解及应用(史上最全)
1.1 iptables概念 从逻辑上讲.防火墙可以大体分为主机防火墙和网络防火墙. 主机防火墙:针对于单个主机进行防护. 网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后 ...
- iptables详解以及企业常用案例
iptables详解以及企业常用案例 iptables采用netfilter网络架构实现包过滤防火墙,可以实现硬件防火墙的常用功能,亦可以在应用方案中作为硬件防火墙的替代品.在本文档里我们将详细介绍i ...
最新文章
- OpenCV与FLANN的功能匹配
- php tp5 redis的使用(亲测)
- C/C++中无条件花括号的妙用
- 前端学习(3215):类的编写
- java map的遍历
- go 访问数据库mysql基础
- 同质异质网络——(F(fraud) A(Analytics) UDPSNT(Wylie_2015))
- 74hc595级联c语言程序,74hc595级联程序范例
- pip 安装GDAL
- CSS3动画序列(CSS3)
- 由中国银联主导和推行的“盒子支付模式”正式推出多平台应用
- 14周 上 购物案列
- 西湖论剑 2020 loader
- GNS3实现VPLS实验
- springboot海纳部门人事管理系统毕业设计源码
- 如何下载中文和英文的全文专利
- 互联网+废品回收项目可行性分析报告
- 零基础手把手教你做FMEDA
- 记一次与流氓的战争——卸载360安全卫士之后
- 【stm32c8t6多路舵机PWM输出】