Linux中iptables基础命令

防火墙(Firewalld)是一种隔离工具,防范与非授权的访问,使主机更安全。它主要工作与网络或主机的边缘,对于进出本网络或主机的通信报文根据事先定义好的规则进行匹配检测;对于能够被规则所匹配到的报文做出相应的处理。
防火墙的分类:
主机防火墙:工作范围是单个主机

网络防火墙:工作范围是整个网络;网络防火墙中还可以包含主机防火墙
防火墙的实现方式:
硬件防火墙:NetScreen、CheckPoint
软件防火墙:iptables

本文所介绍的iptables就是Linux的软防火前的实现。
iptables最主要的特点就是4表5链,以及每种不同的表所对应不同的链; 

5链:prerouting、input、output、forward、postrouting
4表:filter、mangle、nat、raw
filter:主要功能是过滤;对应的链为:input、output、forward
mangle:主要功能是拆解报文、做出修改、重新封装;对应的链为:prerouting、input、output、forward、postrouting
nat:主要功能是网络地址转换;对应的链为:prerouting、postrouting、output
raw:在限定的时间范围内,关闭在nat表上的启用的连接追踪机制;对应的链为:output、prerouting
同一链上的不同表的应用优先级:raw、mangle、nat、filter


报文在主机内的流向示意图:

iptables的规则:根据规则匹配条件尝试匹配检查报文,对成功匹配的报文做出相应的处理
组成部分:匹配条件、处理动作
匹配条件:基本匹配、扩展匹配
处理动作:基本处理动作、扩展处理动作、自定义处理动作
注意:添加规则时的考量点;
(1)要实现什么样的功能;判断添加至那个表上
(2)报文流经的位置;判断添加至那个链上
(3)同类的规则,匹配范围小的放在前面,用于特殊处理
(4)不同类的规则,匹配范围大的放在前面
(5)将那些可由一条规则描述的多个规则合并为一个
(6)设置默认策略

iptables的相关命令: 

iptables [-t table] {-A|-C|-D} chain rule-specification

iptables [-t table] {-A|-C|-D} chain rule-specification

iptables [-t table] -I chain [rulenum] rule-specification

iptables [-t table] -R chain rulenum rule-specification

iptables [-t table] -D chain rulenum

iptables [-t table] -S [chain [rulenum]]

iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]

iptables [-t table] -N chain

iptables [-t table] -X [chain]

iptables [-t table] -P chain target

iptables [-t table] -E old-chain-name new-chain-name


rule-specification = [matches...] [ -j target]


实现对链管理:管理一整条链
-N:新增一条自定义链
-X:删除一条自定义链(删除时要确保链下没有规则)
-P:设置链的默认策略
-E:重命名于未被引用的自定义链(引用计数为0,即references为0)

实现对规则管理:管理链上的某条规则
-A:追加一个规则;默认为末尾
-I:插入一个规则;默认为最开始处
-D:删除某条规则
-R:指明修改第几条规则
-F:清空所有的规则

查看某表上的规则:
-L:列出规则
-n:以数字格式显示地址个端口
-v:显示详细信息
--line-numbers:显示链上的规则和编号
-x:显示计数器的精确值

扩展匹配:经由扩展模块引入的匹配机制;-m  matchname
隐式扩展:无需指明,可以不适用-m选项专门加载响应模块;前提要使用-p选项可匹配何种协议
显示扩展:需要指明,必须由-m选项专门加载响应模块


隐式扩展:           

tcp:隐含指明了“-m  tcp",有专用选项:
[!]  --source-port,--sport  port[:port]:匹配报文中的tcp首部的源端口;可以是端口范围
[!] --destination-port,--dport  port [:port]:匹配报文中的tcp首部的目标端口;可以是端口范围
[!] --tcp-flags  mask comp:检查报文中mask指明的tcp标志位,而要这些标志位comp必须为1
例如:--tcp-flags  syn,fin,ack,rst  syn
此时: syn必须为1


显示扩展:           

注意:要求越严格的越要放在前面;之所以使用“OUTPUT”是因为在接受了报文之后才能够响应输出;如果直接是“INPUT”使用“DROP”,则报文会被直接拒绝,根本不会流入本机内部


(7)state扩展(conntrack的子集):用于对报文的根据”连接追踪机制“去检查连接的状态(但是对服务的连接数量会有很大的影响)
连接模板:占用内存空间中的一段空间(内核空间)
[!] --state state
conntrack机制:追踪本机上的请求和响应之间的关系;状态有如下几种:
NEW:新发出请求;连接追踪模板中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求;
ESTABLISHED:NEW状态之后,连接追踪模板中为其建立的条目失效之前期间内所进行的通信状态;
RELATED:相关联的连接;如ftp协议中的数据连接与命令连接之间的关系;
INVALID:无法识别的连接(一般不会放行)
UNTRACKED:未进行追踪的连接(在连接模板中没有相关记录)             

开放主/被动模式的ftp服务:
主动:

处理动作:
(1)LOG:匹配报文中的日志功能
--log-level  level:(emerg, alert, crit, error, warning, notice,info or debug.)
--log-prefix  prefix:说明报文的日志信息是由谁产生的

(3)SNAT(本地主机请求远程服务器):源地址转换;发生在postrouting
修改IP报文中的源IP地址
使用场景:本地网络中的主机可使用统一地址与外部主机通信,从而实现地址伪装
请求:由内网主机发起,修改源IP,如果修改则由管理员定义
响应:修改目标IP,由nat自动根据会话表中追踪机制实现相应的修改

更多iptables相关教程见以下内容

猜你喜欢

转载自www.linuxidc.com/Linux/2016-07/132922.htm
今日推荐