IT课程

学员服务第一

IT技术专业学习平台
IT人才专业服务提供商

 

全国热线:400-004-8626

Linux安全——iptalbes(二)

首页    技术博文    Linux    Linux安全——iptalbes(二)

回顾内容

还记得上次我们聊的 iptables 内容吗?回顾一下上次的内容,Linux 内核通过 netfilter 这个安全框架来实现防火墙机制,iptables 是用户操作 netfilter 实现功能的命令行工具,他们两个组合起来就是 Linux 防火墙 iptables

Iptables 包含四表五链,其中四表就好比四个不同的功能部门,如:海关、警察、税务、城管,五链就好比五个位置的关卡,一般情况下一个部门要在多个关卡派驻人员,一个关卡内也会驻守多个部门的人。

http://www.yeslab.net/Uploads/201706/594c975416261.jpg

上图中我们可以看到mangle“部门在每个关卡都派驻了人员,而OUTPUT“关卡则每个部门都派人蹲守。

表(部门)功能:

Filter ——过滤数据包

Nat ——网络地址转换

Mangle ——修改数据包服务类型、TTL 值(用来实现 QOS 功能)

Raw ——数据包状态跟踪

链(关卡)的位置:

http://www.yeslab.net/Uploads/201706/594c977fe9e11.jpg

规则查看

理论说多了就睡着了,我们先来操作下看看 iptables 到底长什么样吧。因为 iptables 是防火墙功能,而实现防火墙功能的主要是 filter 表,我们就从 filter 表开始看。

http://www.yeslab.net/Uploads/201706/594c97a193eb7.jpg

我们可以使用 iptables -t filter -L 命令来查看 filter 表中的规则,命令选项 -t 是指定要操作的表,-L 是列出表中的规则,这句命令解释起来就是列出 filter 表在每个链上所制定的所有规则

图中绿色括号括起来的就是每个链上的规则内容,蓝色下划线标注的是 filter 表对应的链,有 INPUTFORWARDOUTPUT 三个链每个链上都有不同的规则,正如前面所介绍的不同的链位于数据流向上的不同位置,所以需要在不同的链上设置不同规则来达到你所需要的防火墙目的。比如,我们需要禁止某个 IP 地址访问我们的主机,我们则需要在INPUT链上定义规则(明白为什么不?看看前文),又如果我们想要禁止本机往外发数据包我们又该在那个链上写那?所以具体规则制定要结合具体场景和需求。

我们继续看命令,一般情况下我们看数据流向习惯性的是从那个 IP 地址到那个 IP 地址,而大家会发现刚才图中是用 anywhere 来表示的,是对,iptalbes 默认会为我们进行名称解析,名称解析的效率一般会低而且不适合我们的习惯,这时候我们可以使用 -n 选项,表示不对 IP 地址进行名称解析。

同时如果你觉得 -L 展示的信息还不够详细的话我们可以使用-v选项,查看更多更详细的信息内容。

http://www.yeslab.net/Uploads/201706/594c97be9891b.jpg

是不是展示的内容就多了很多,我们来简单解释下这些内容:

Pkts ——对应规则匹配到底报文个数;

Bytes ——对应规则匹配报文大小;

Target ——规则对应的操作;

Prot ——规则对应的协议;

Opt ——规则对应的选项;

In ——表示数据包由哪个网卡流入,我们可以设置那个网卡来的报文才被匹配;

Out ——表示数据包由哪个网卡流出,我们以设置那个网卡露出的报文才被匹配;

Source ——表示源地址;

Destination ——表示目标地址;

(其实如果觉得内容还不够详细,可以使用 -vv 选项会有更详细的信息展示,当然是不是还有 -vvv 那可以试下)

上图中还有画蓝色线的部分,其中 policy ACCEPT 表示当前链的默认策略,也就是说 INPUT 链上的默认策略是 ACCEPT 放行的。

Packets 表示当前链的默认策略所匹配到的数据包数量,0 就表示默认策略没有匹配到数据包。

Bytes 表示当前链默认策略匹配到数据包的大小(总和)。

(当匹配到的包达到一定数量时,匹配到的包大小会自动转换单位,也就是说会自动转换成 100K bytes10M bytes

其实我们是可以省略 -t filter 这个选项的,因为当没有 -t 这个选项时 iptables 默认就是 filter 表,所以当我们直接 iptables -nvL 时就会直接出现上图的内容。

我们还可以只查看指定表中的指定链,比如我们只想查看 filter 表中 INPUT 链上的规则,我们就可以用 iptables -nvL INPUT,这里的链一定要是大写的。

如果规则设置很多那我们就需要查看一个有序号的列表,不然让你统计下现在到底做了多少条规则你都会头疼,使用 iptables --line -nvL INPUT 就可以查看有序列号的规则。

http://www.yeslab.net/Uploads/201706/594c97eb6c441.jpg

我们再用同样的方法来看下其他几张表的内容

Iptables -t raw -nvL

http://www.yeslab.net/Uploads/201706/594c98044e703.jpg

Raw 表对应的 PREROUTING OUTPUT

Iptables -t mangle -nvL

http://www.yeslab.net/Uploads/201706/594c982209a31.jpg


Mangle 表对应所有五个链

Iptalbes -t nat -nvL

http://www.yeslab.net/Uploads/201706/594c986ec694a.jpg

Nat 表对应 PROROUTINGPOSTROUTINGOUTPUT 三个链

其实我们会发现前面看到的 filter 表中是有规则存在的,其实那些规则是系统启动 iptables 时默认设置的规则。为了保持环境的干净我们还是先把这些默认添加的规则清理了吧。

使用 iptables -F 命令清空filter表中的所有规则;

http://www.yeslab.net/Uploads/201706/594c9896f0f93.jpg

总结下这次的命令:

iptables --line -t 表名 -nvL 链名

查看指定表的中指定链上的规则,显示详细信息 -v,不进行地址解析-n,并显示规则的序号。

不加表名默认 filter 表,不加链名默认所有链

iptables -nvL

查看 filter 表对应的所有链上的规则

iptables -F

清空 filter 表上的所有规则

2018年8月14日 14:56
浏览量:0
收藏
本网站由阿里云提供云计算及安全服务 Powered by CloudDream