RHEL7系统的防火墙管理工具之一——firewalld

一、搭建firwalld的管理环境:

       ## 首先搭建好yum源(本地或者网络都OK)

       ## 搭建防火墙服务firewalld

[root@desktop-foundation ~]# yum install firewalld.noarch -y

[root@desktop-foundation ~]# yum install firewall-config -y

[root@desktop-foundation ~]# systemctl start firewalld.service
[root@desktop-foundation ~]# systemctl enable firewalld.service

二、系统防火墙的窗口化管理:

       ## 用下方命令打开防火墙的管理窗口:

[root@desktop-foundation ~]# firewall-config

       # 这个图形化界面主要有四大部分

第一部分:

      这一部分主要是对防火墙的一些基本管理,如载入配置,改变默认的域,改变接口、端口、ip连接的域。 如下图:

第二部分:

      这一部分主要是设置 防火墙配置为永久生效,或者是暂时生效,Runtime表示暂时生效(关机、重启服务、重新载入配置都能使其失效),Permanent表示永久生效:

第三部分:

     这一部分内容表示配置是基于什么方式的,Zones表示基于域的方式来设置相关策略,Service表示基于服务的方式来设置相关策略:

防火墙的域有下图几种系统默认的类型:

第四部分:

      这一部分是配置的详细内容。

      当第三部分选择基于域的选项时,第四部分内容如下:

而当第三部分的选择基于服务的选项时,第四部分内容如下:

其中最重要当然也最复杂的就是第四部分,下面以几个简单例子来说明图形化设置防火墙策略的方式!

       ##  图形化界面设置策略,使其它主机可以访问本机的apache服务:

[root@desktop-foundation ~]# firewall-config &

[root@desktop-foundation ~]# watch -n 1 firewall-cmd --list-all

开启该主机(ip为172.25.254.113)的apache服务:

在另外一台主机浏览器中测试是否能进入113这台主机的apache测试页,发现不能进入测试页,说明连接不同:

现在用图形界面配置允许其它主机访问113这台主机上的apache服务,如下:

       设置永久生效:

       允许访问本机的http(apache):

       载入该配置:

       监视画面中,该服务已经被载入系统了:

现在用另一台主机再次测试,如下图已经可以连接入apache的测试页了:

       ## 设置默认域为trusted

在“Options“ 选项卡中选择” Change Default Zone“:

然后再选择tusted:

此时发现在众多域中,trusted变成了粗体,这表示trusted成了默认的域,如下图:

三、命令的方式管理防火墙:

        1)防火墙设置与显示域的相关命令:

首先保持防火墙为开启的状态:

[root@desktop-foundation ~]# systemctl stop firewalld.service

[root@desktop-foundation ~]# firewall-cmd  --state             ###  查看防火墙的状态

[root@desktop-foundation ~]# systemctl start firewalld.service

[root@desktop-foundation ~]# firewall-cmd  --get-default-zone       #### 查看防火墙默认生效的域

[root@desktop-foundation ~]# firewall-cmd --get-active-zones   ### 查看防火墙正在生效的域

[root@desktop-foundation ~]# firewall-cmd --get-zones    ### 显示防火墙所有的域类型名字

[root@desktop-foundation ~]# firewall-cmd --list-all-zones   #### 列出防火墙的所有域,以及每个域的详细火墙内容

[root@desktop-foundation ~]# firewall-cmd --set-default-zone=trusted      #### 设置火墙的默认生效域为trusted

[root@desktop-foundation ~]# firewall-cmd --get-services     ####  得到防火墙可以控制的所有服务

       2)将ip为172.25.254.2的主机加入防火墙的信赖域,实现能访问apache服务:

在设置之前先测试能否连通apache服务,发现不能连通:

[root@desktop-foundation ~]# firewall-cmd --list-all --zone=trusted     ### 显示trusted域的防火墙列表

[root@desktop-foundation ~]# firewall-cmd --add-source=172.25.254.2 --zone=trusted   ## 允许ip为172.25.254.2的源主机访问本主机的网络

在172.25.254.2这台主机测试能否连通本机的apache服务:

[root@desktop-foundation ~]# firewall-cmd  --remove-source=172.25.254.2 --zone=trusted  ### 移除ip为172.25.254.2的源主机

       ## 3) 关于接口的火墙设置:

[root@desktop-foundation ~]# firewall-cmd --list-all --zone=public     ####   查看public域的火墙列表,发现允许接口eth0访问主机

[root@desktop-foundation ~]# firewall-cmd --remove-interface=eth0 --zone=public    ##### 移除public域中的接口eth0

[root@desktop-foundation ~]# firewall-cmd --add-interface=eth0 --zone=publicsuccess  ###  添加eth0接口到火墙的public域中

[root@desktop-foundation ~]# firewall-cmd --change-interface=eth0 --zone=trusted   ### 将上一步public域中的接口eth0改变到trusted域中

[root@desktop-foundation ~]# firewall-cmd  --list-all --zone=public

      ## 4)关于服务的火墙设置:

[root@desktop-foundation ~]#  firewall-cmd  --permanent  --add-service=http  ### 开放该主机的httpd服务

[root@desktop-foundation ~]# firewall-cmd --permanent  --remove-service=http  ### 取消开放httpd服务

[root@desktop-foundation ~]# firewall-cmd --reload   ### 载入上条配置

下面我们通过几个系统中的文件来加深对服务的理解:

[root@desktop-foundation zones]# cd  /usr/lib/firewalld/

上图中有两个目录,一个是services,另外一个是zones。

services目录里有许多文件,这些文件便是防火墙能够控制的所有服务的文件,每个文件记录一个服务,如下:

[root@desktop-foundation firewalld]# cd services/

我们挑选ssh这个服务对应的文件查看其内容是什么:

[root@desktop-foundation services]# vim ssh.xml

由上图可知文件记录了该服务的描述、服务名以及端口号。

再看看zones目录里面的内容:

[root@desktop-foundation firewalld]# cd zones/

由上图可知,该目录记录了我们系统所有类型的域文件。

[root@desktop-foundation zones]# vim public.xml

我们设置将http服务永久加入public域时,其时就是在上图的文件中加入对应配置。

       5)关于端口的火墙配置:

[root@desktop-foundation zones]# firewall-cmd --add-port=8080/tcp --permanent   ### 开放本机的tcp协议的8080端口

[root@desktop-foundation zones]# firewall-cmd --reload

[root@desktop-foundation zones]# firewall-cmd --permanent --remove-port=8080/tcp   ### 取消上面配置的开放tcp协议的8080端口

[root@desktop-foundation zones]# firewall-cmd --reload

四、高级火墙设置:

       火墙的高级配置,主要是针对三表五链的设置; 我们依旧使用firewall-cmd命令工具,但要加上 --direct 选项,即直接端口模式,该模式适用于程序或者服务,以便在运行时间内添加特定的防火墙规则,直接端口添加的规则优先级高,所以优先使用。

       防火墙的三表五链如下图:

  INPUT OUTPUT FORWARD POSTROUTING PREROUTING
FILTER            *         *         *    
NET             *          *              *              *
MANGEL            *          *          *             *               *

1)防火墙FILTER表的配置:

这里我们以设置一条input链为例,让172.25.254.2这台主机能够连通本机的apache服务:

在配置之前172.25.254.2这台主机不能在浏览器中访问本机的apache服务:

[root@desktop-foundation zones]# firewall-cmd   --direct   --add-rule ipv4 filter  INPUT 1 -s 172.25.254.2 -p tcp --dport 80 -j ACCEPT     ####在直接端口模式下,添加ipv4的filter表的input链,链的内容是:当来自172.25.254.2的主机来访问本机的端口为80的tcp协议时,接受它。

[root@desktop-foundation zones]# firewall-cmd --direct --get-all-rules    ###显示设定的高级路由规则

现在再在172.25.254.2这台主机的浏览器中访问本机的apache服务:

[root@desktop-foundation zones]# firewall-cmd --direct --remove-rule ipv4 filter  INPUT 1 -s 172.25.254.2 -p tcp --dport 80 -j ACCEPT         #####  删除上方添加的INPUT链   

   2)防火墙NET表的配置:

##例1:你若访问我,我把你的访问转到了另外一台主机,从进来的时候进行net转换

[root@desktop-foundation zones]# firewall-cmd --add-forward-port=proto=tcp:port=22:toport=22:toaddr=172.25.254.213

[root@desktop-foundation zones]# firewall-cmd --add-masquerade     #### 开启内核的伪装功能

测试:

使用ip为 172.25.254.2这台主机使用ssh远程连接添加火墙策略的ip为172.25.254.113这台主机:

当连接进入时,发现连接的不是172.25.254.113这台主机,而是172.25.254.213这台主机

而由于伪装功能的开启,在172.25.254.213这台主机上显示的是 172.25.254.113这台主机正在通过远程登陆访问自己:

[root@desktop-foundation zones]# firewall-cmd --remove-forward-port=proto=tcp:port=22:toport=22:toaddr=172.25.254 .213    ####  移除上面设置的火墙规则

## 例2:当1.1.1.1主机访问另172.25.254.2主机时,明显他们不在同一个网段,172.25.254.113主机将1.1.1.1转换为另外一个网段的ip你就可以访问了; 在172.25.254.113主机上转换的时候,是在出端口进行转换的。

         下面为172.25.254.113主机的相关设定:

[root@desktop-foundation ~]# vim /etc/sysctl.conf

[root@desktop-foundation ~]# sysctl -a |grep ip_forward     ###   查看出接口的转发功能是否开启,1表示开启,0表示不开启

172.25.254.113主机由两块网卡,下图为这两块网卡的信息:

下图为1.1.1.1主机的网络信息:

现在用1.1.1.1主机通过ssh远程连接172.25.254.2主机,如下图:

连接成功后,在172.25.254.2主机上用 w -i 命令查看登陆当前主机的是谁,发现是172.25.254.113这台主机:

猜你喜欢

转载自blog.csdn.net/qq_40628106/article/details/84255644
今日推荐