解密-防火墙linux开放端口-详细网安指南

解密-防火墙linux开放端口-详细网安指南

Linux中的防火墙简介

Linux防火墙这块儿的内容比较多,一直以来,都是一个使用者的角色,最近在看一些防火墙相关的知识,简单列一下,大家也可以了解一下。

01

防火墙简介

防火墙从逻辑上讲,分为主机防火墙和网络防火墙,

主机防火墙针对单个主机进行防护;

网络防火墙处于网络入口或者边缘,针对于网络入口进行防护。

从物理上讲,防火墙分为硬件防火墙和软件防火墙,

硬件防火墙:在硬件级别实现部分防火墙功能,性能高,成本高

软件防火墙:基于软件实现的防火墙,性能低,成本低。

其实说白了讲,Linux中的防火墙就是用于实现Linux下IP访问控制的功能,我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略和规则。

的前身叫 (内核1.x时代),当内核发展到2.x系列的时候,软件更名为,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做,可以将规则组成一个列表,实现绝对详细的访问控制功能。是工作在用户空间中,定义规则的工具,本身并不算是防火墙。我们可以把它理解成一个客户端代理,用户通过这个代理,将用户的安全设定执行到对应的“安全框架”中,这个安全框架才是真正的防火墙,这个框架的名字叫做,定义的规则,可以让在内核空间当中的来读取,并且实现让防火墙工作,所以才是真正的安全框架()。

02

表和链的概念

和组成linux平台下的包过滤防火墙,与大多数的Linux软件一样,他可以完成封包过滤、封包重定向和网络地址转换等功能。在中定义的规则,必须要放入内核中功读取,而放入内核的地方,一共分为五处:

1.内核空间中:从一个网络接口进来,到另一个网络接口出去

2.数据包从内核流入用户空间的

3.数据包从用户空间流出的

4.进入/离开本机的外网接口

5.进入/离开本机的内网接口

这五个位置也被称为五个钩子函数(hook ),也叫五个规则链。

1. (路由前)

2.INPUT (数据包流入口)

3. (转发管卡)

4.(数据包出口)

5.(路由后)

下面我们用一张图来说明防火墙对于网络报文的控制流程:

防火墙linux开放端口_防火墙linux添加白名单_linux防火墙

可以看到,每一个规则链都在网络的不同位置扮演不同的角色,从上面的图不难看出报文的流向如下:

传到本机的报文:-->input

由本机转发的报文:-->-->

由本机的某个进程发出报文:-->

上面介绍了链的概念,下面我们介绍表的概念,表总体分为一下几类:

表:负责过滤功能,防火墙;

nat表: ,网路地址转换功能

表:拆解报文,作出修改,并重新封装

raw表:关闭nat表上启用的链接追踪机制

03

表和链的对应关系

某些链中只包含某些表,并不是每个链都包含上述这几种表,表和链的对应关系如下:

防火墙linux开放端口_防火墙linux添加白名单_linux防火墙

当一个链中同事包含四种表的时候,这四个表的优先级顺序如下:

raw-->-->nat-->

只有链能够同时包含这四种表,这也就是为什么我们的防火墙文件中项比较多的原因。

04

匹配规则

只有满足匹配规则的报文才能被转发

基本匹配条件

源地址 IP和目标地址 IP

上述内容都可以作为基本匹配条件。

扩展匹配规则

这里不展开细说,可以是源端口和目标端口,源地址、目的地址、传输协议、服务协议等,

当规则匹配之后,处理方法如下:

规则所定义的方法:

:允许通过

LOG:记录日志信息,然后传给下一条规则继续匹配。

:拒绝通过,必要时给出提示。

DROP:直接丢弃,不给出任何回应。

匹配规则查看方法:

-t -L 查询表的所有规则

-t raw -L 查看raw表的所有规则

类比一下,其他两种表的查看方法也类似上面。

当我们使用 -L的时候,其默认的表是表,我们可以使用参数v显示更加详细的信息,如下:

代码语言:

复制

[dba_mysql ~]$sudo iptables -vL | grep 192.168
    0     0 ACCEPT     tcp  --  any    any     192.168.18.46        anywhere            tcp spts:1024:65535 multiport dports visicron-vs state NEW 
    0     0 ACCEPT     tcp  --  any    any     192.168.18.49        anywhere            tcp spts:1024:65535 multiport dports visicron-vs state NEW 
    3   156 ACCEPT     tcp  --  any    any     192.168.18.228       anywhere            tcp spts:1024:65535 multiport dports visicron-vs state NEW  
    3   152 ACCEPT     tcp  --  any    any     192.168.0.0/16       anywhere            tcp spts:1024:65535 multiport dports mysql,33306,ms-sql-s,27017,28017 state NEW 
    0     0 ACCEPT     tcp  --  any    any     192.168.0.0/16       anywhere            tcp spts:1024:65535 dpt:rsync state NEW 
    0     0 ACCEPT     tcp  --  any    any     192.168.18.92        anywhere            tcp spts:1024:65535 multiport dports pinghgl,visicron-vs,compx-lockview,dserver,mirrtex,4311 state NEW 

这里我们之过滤192.168网段的数据,这样数据会相对少一些。

清除防火墙内容:

-F INPUT 清空表input链中的规则

防火墙linux添加白名单_linux防火墙_防火墙linux开放端口

05

匹配规则测试

下面我们用192.168.197.136和192.168.197.137两台机器做个测试,他们的分别对应和:

1、清理136防火墙,

2、137--->136 ping命令

首先我们从137往136发送一个ping命令

代码语言:

复制

[root@work_NAT_4 ~]# ping 192.168.197.136
PING 192.168.197.136 (192.168.197.136) 56(84) bytes of data.
64 bytes from 192.168.197.136: icmp_seq=1 ttl=64 time=0.155 ms
64 bytes from 192.168.197.136: icmp_seq=2 ttl=64 time=0.216 ms
^C
--- 192.168.197.136 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1288ms
rtt min/avg/max/mdev = 0.155/0.185/0.216/0.033 ms

可以看到这个是可以ping通的,然后我们给136上面添加一定的规则,命令和执行结果如下:

代码语言:

复制

iptables -t filter -I INPUT -s 192.167.197.137 -j DROP
[root@work_NAT_5 ~]# iptables -t filter -I INPUT -s 192.168.197.137 -j DROP
此时发现137已经无法ping 通了
[root@work_NAT_4 ~]# ping 192.168.197.136
PING 192.168.197.136 (192.168.197.136) 56(84) bytes of data.
^C
--- 192.168.197.136 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1950ms

其中参数-I表示添加一条规则,-s表示源目标

这个时候,我们去思考,如果添加一条,另外一条是DROP到底哪一条生效呢?目前防火墙中的内容如下:

代码语言:

复制

[root@work_NAT_5 ~]# iptables -t filter -I INPUT -s 192.168.197.137 -j DROP
[root@work_NAT_5 ~]# iptables -t filter -A INPUT -s 192.168.197.137 -j ACCEPT
[root@work_NAT_5 ~]# iptables -nvL INPUT
Chain INPUT (policy ACCEPT 40 packets, 2880 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    6   504 DROP       all  --  *      *       192.168.197.137      0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       192.168.197.137      0.0.0.0/0
我们发现DROP在ACCEPT的上面,此时我们ping一下:
[root@work_NAT_4 ~]# ping 192.168.197.136
PING 192.168.197.136 (192.168.197.136) 56(84) bytes of data.
^C
--- 192.168.197.136 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1798ms
发现还是无法ping通,查看197.136服务器,发现又多了两个DROP的包,也就是说,刚才我们发的那两个包被丢弃了!!!

查看136的input链:

防火墙linux添加白名单_防火墙linux开放端口_linux防火墙

此时我们换一下,这两个规则的顺序,如下:

代码语言:

复制

136
[root@work_NAT_5 ~]# iptables -F INPUT
[root@work_NAT_5 ~]# iptables -t filter -I INPUT -s 192.168.197.137 -j ACCEPT
[root@work_NAT_5 ~]# iptables -t filter -A INPUT -s 192.168.197.137 -j DROP
[root@work_NAT_5 ~]# iptables -nvL INPUT
Chain INPUT (policy ACCEPT 40 packets, 2880 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      *       192.168.197.137      0.0.0.0/0           
0     0 DROP       all  --  *      *       192.168.197.137      0.0.0.0/0 
137:
[root@work_NAT_4 ~]# ping 192.168.197.136
PING 192.168.197.136 (192.168.197.136) 56(84) bytes of data.
64 bytes from 192.168.197.136: icmp_seq=1 ttl=64 time=0.281 ms
64 bytes from 192.168.197.136: icmp_seq=2 ttl=64 time=0.280 ms
64 bytes from 192.168.197.136: icmp_seq=3 ttl=64 time=0.239 ms
^C
--- 192.168.197.136 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2541ms
rtt min/avg/max/mdev = 0.239/0.266/0.281/0.027 ms

已经可以ping通了,说明规则顺序会对数据报的传输产生影响

关于防火墙的参数还有很多,包含表规则修改、修改默认策略等等,后续将详细说明具体规则的用法。

~

网络安全学习,我们一起交流

~

  • 28
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值