设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 731|回复: 1
收起左侧

Linux安全——iptalbes(二)

[复制链接]
发表于 2017-6-23 13:38:35 | 显示全部楼层 |阅读模式
回顾内容

还记得上次我们聊的 iptables 内容吗?回顾一下上次的内容,Linux 内核通过 netfilter 这个安全框架来实现防火墙机制,iptables 是用户操作 netfilter 实现功能的命令行工具,他们两个组合起来就是 Linux 防火墙 iptables 。
Iptables 包含四表五链,其中四表就好比四个不同的“功能部门”,如:“海关、警察、税务、城管”,五链就好比五个位置的“关卡”,一般情况下一个“部门”要在多个“关卡”派驻人员,一个“关卡”内也会驻守多个部门的人。

                               
登录/注册后可看大图

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

Filter 表——过滤数据包
Nat 表——网络地址转换
Mangle 表——修改数据包服务类型、TTL 值(用来实现 QOS 功能)
Raw 表——数据包状态跟踪
链(关卡)的位置:

                               
登录/注册后可看大图

规则查看

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

                               
登录/注册后可看大图

我们可以使用 iptables -t filter -L 命令来查看 filter 表中的规则,命令选项 -t 是指定要操作的表,-L 是列出表中的规则,这句命令解释起来就是“列出 filter 表在每个链上所制定的所有规则”。
图中绿色括号括起来的就是每个链上的规则内容,蓝色下划线标注的是 filter 表对应的链,有 INPUT、FORWARD、OUTPUT 三个链每个链上都有不同的规则,正如前面所介绍的不同的链位于数据流向上的不同位置,所以需要在不同的链上设置不同规则来达到你所需要的防火墙目的。比如,我们需要禁止某个 IP 地址访问我们的主机,我们则需要在INPUT链上定义规则(明白为什么不?看看前文),又如果我们想要禁止本机往外发数据包我们又该在那个链上写那?所以具体规则制定要结合具体场景和需求。
我们继续看命令,一般情况下我们看数据流向习惯性的是从那个 IP 地址到那个 IP 地址,而大家会发现刚才图中是用 anywhere 来表示的,是对,iptalbes 默认会为我们进行名称解析,名称解析的效率一般会低而且不适合我们的习惯,这时候我们可以使用 -n 选项,表示不对 IP 地址进行名称解析。
同时如果你觉得 -L 展示的信息还不够详细的话我们可以使用-v选项,查看更多更详细的信息内容。

                               
登录/注册后可看大图

是不是展示的内容就多了很多,我们来简单解释下这些内容:
Pkts ——对应规则匹配到底报文个数;
Bytes ——对应规则匹配报文大小;
Target ——规则对应的操作;
Prot ——规则对应的协议;
Opt ——规则对应的选项;
In ——表示数据包由哪个网卡流入,我们可以设置那个网卡来的报文才被匹配;
Out ——表示数据包由哪个网卡流出,我们以设置那个网卡露出的报文才被匹配;
Source ——表示源地址;
Destination ——表示目标地址;
(其实如果觉得内容还不够详细,可以使用 -vv 选项会有更详细的信息展示,当然是不是还有 -vvv 那可以试下)
上图中还有画蓝色线的部分,其中 policy ACCEPT 表示当前链的默认策略,也就是说 INPUT 链上的默认策略是 ACCEPT 放行的。
Packets 表示当前链的默认策略所匹配到的数据包数量,0 就表示默认策略没有匹配到数据包。
Bytes 表示当前链默认策略匹配到数据包的大小(总和)。
(当匹配到的包达到一定数量时,匹配到的包大小会自动转换单位,也就是说会自动转换成 100K bytes、10M bytes)
其实我们是可以省略 -t filter 这个选项的,因为当没有 -t 这个选项时 iptables 默认就是 filter 表,所以当我们直接 iptables -nvL 时就会直接出现上图的内容。
我们还可以只查看指定表中的指定链,比如我们只想查看 filter 表中 INPUT 链上的规则,我们就可以用 iptables -nvL INPUT,这里的链一定要是大写的。
如果规则设置很多那我们就需要查看一个有序号的列表,不然让你统计下现在到底做了多少条规则你都会头疼,使用 iptables --line -nvL INPUT 就可以查看有序列号的规则。

                               
登录/注册后可看大图

我们再用同样的方法来看下其他几张表的内容
Iptables -t raw -nvL

                               
登录/注册后可看大图

Raw 表对应的 PREROUTING 和 OUTPUT 链
Iptables -t mangle -nvL

                               
登录/注册后可看大图



Mangle 表对应所有五个链
Iptalbes -t nat -nvL

                               
登录/注册后可看大图

Nat 表对应 PROROUTING、POSTROUTING、OUTPUT 三个链
其实我们会发现前面看到的 filter 表中是有规则存在的,其实那些规则是系统启动 iptables 时默认设置的规则。为了保持环境的干净我们还是先把这些默认添加的规则清理了吧。
使用 iptables -F 命令清空filter表中的所有规则;

                               
登录/注册后可看大图

总结下这次的命令:
iptables --line -t 表名 -nvL 链名
查看指定表的中指定链上的规则,显示详细信息 -v,不进行地址解析-n,并显示规则的序号。
不加表名默认 filter 表,不加链名默认所有链
iptables -nvL
查看 filter 表对应的所有链上的规则

iptables -F

清空 filter 表上的所有规则

相关阅读:

Linux安全—iptables(一)


                               
登录/注册后可看大图



您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-4-26 23:32 , Processed in 0.062740 second(s), 8 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表