防火墙---firewalld

一、FIREWALLD简介

   动态防火墙后台程序FIREWALLD提供一个动态管理的防火墙,用以支持网络"zones",以分配对一个网络即相关链接和界面的一定程度的信任。它具备IPV4和IPV6对防火墙设置的支持。它还具备一个通向服务或应用程序以直接增加防火墙规则的接口。

二、FIREWALLD的基本了解

 上层管理工具:iptables(server) ;firewalld(高集成)

 下层管理工具:iptables(在内核中以表格的形式显示)
 firewalld域有以下几种:
   网络区名称          默认配置
   trusted(信任)    可接受所有的网络连接
   home(家庭)    用于家庭网络。仅接受ssh、mdns、ipp-client、samba-client、或dhcpv6-client服务连接
   internal(内部)    用于内部网络,仅接受ssh、mdns、ipp-client、dhcpv6-client服务连接
   work(工作)    用于工作区,仅接受ssh、ipp-client或dhcpv6-client服务连接
   public(公共)    在公共区域内使用,仅接受ssh或dhcpv6-client服务连接,为firewalld的默认区域
   external(外部)    出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接
   dmz(非军事区)    仅接受ssh服务连接
   block(限制)    拒绝所有网络连接
   drop(丢弃)    任何接受的网络数据包都被丢弃,没有任何回复
三、火墙的安装和开启:

  1)防火墙firewalld的安装、开启  (在一个系统中只能有一种防火墙工作)

    yum install  firewalld    -y              ##安装防火墙firewalld

    systemctl  start  firewalld

    systemctl  enable  firewalld

    systemctl status firewalld.service 

     firewall-cmd  --list-all                  ##查看firewalld火墙信息

  2) 防火墙iptables的安装、开启(要是开启iptables的话,必须先关闭firewalld防火墙

    systemctl  stop   firewalld               ##关闭firewalld

    systemctl  mask   firewalld                  ##把firewalld火墙上锁
    yum install  iptables-server  -y         ##安装iptables火墙
    systemctl   start   iptables.server
    systemctl  enable   iptables
    iptables  -nL      ##显示iptables火墙信息
四、使用命令行接口配置防火墙
    firewall-cmd  --state                    ##查看当前火墙的状态
    firewall-cmd  --get-active-zones         ##查看火墙的活跃域
    firewall-cmd  --get-default-zone         ##查看默认域
    firewall-cmd  --get-zones                ##显示所有域
    firewall-cmd  --zone=public --list-all   ##显示域为public的信息
    firewall-cmd  --get-services             ##查看火墙内可开启的所有服务
    firewall-cmd  --list-all-zones           ##列出所有域的详细信息
    firewall-cmd  --set-default-zone=dmz     ##修改默认域为dmz

     

    firewall-cmd  --add-source=172.25.254.21 --zone=public      ##添加ip到public域中   

    firewall-cmd  --add-interface=eth1 --zone=trusted           ##给trusted域添加接口

     

    firewall-cmd  --get-active-zones         ##查看现在可用的域

     

    firewall-cmd  --remove-source=172.25.254.21 --zone=public  从publuc域中移出ip主机  

     

    注意:当默认活跃类型时trusted的时候,所有请求都可以通过。当为public的时候,添加进去允许访问的ip和接口,就可以进行访问!
    当为永久设定的时候,设定完成要使用reload命令重新加载,使其生效。
     修改服务,reload不会立刻中断(会读修改的配置文件);complete会立刻中断

五、火墙端口的修改

   示例:对httpd服务进行测试;http默认端口为80,当修改httpd服务的配置文件之后,要想在浏览器中访问,得改变火墙中允许的端口号。需进行如下修改

   1)vim  /etc/httpd/conf/httpd.conf  

      

   2) systemctl  restart  httpd

   3) firewall-cmd  --permanent  --add-server=http
      firewall-cmd --permanent --add-port=8080/tcp --zone=public   ##永久修改,相当与改写了配置文件/etc/firewalld/zones中的public.xml文件(可以看到有端口信息的存在)

       

      查看/etc/firewalld/zones/public.xml的内容
       

     

   注释:/etc/firewalld/firewalld.conf       ##火墙的主配置文件

 

六、火墙的高级规则
   firewall-cmd  --direct --get-all-rules         ##查看已有的规则

   cat /etc/services |  grep ssh                           ##查看ssh服务的端口协议等信息    

   iptables -nL                                                       ##查看加进去的规则

   1)实验一:不让21的主机访问22端口

     1、 firewall-cmd  --direct --add-rule ipv4 filter  INPUT  1  -s 172.25.254.21  -p tcp --dport 22  -j  REJECT       ##添加一个规则;类型是filter的input列

        

     

 

    2、 测试结果如下:(在21主机上进行)

     


   3、firewall-cmd  --direct --remove-rule ipv4 filter  INPUT  1  -s 172.25.254.21  -p tcp --dport 22  -j  REJECT            ##删除规则

     

   2)实验二:端口转发(当连接121主机的时候,会自动连接到221主机上。)           

   1、 首先修改服务器端(121)的火墙信息:

      firewall-cmd  --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.221               ##添加规则:端口为22;协议tcp;到达端口22;目的地址为221

     firewall-cmd  --add-masquerade    

      firewall-cmd --list-all     会显示目的端口地址
     
       
  2、完成之后,在客户端进行测试。在连接121后的IP为221:(此时要输入的密码为目的地址221的密码)

     

    注释: 在221主机中输入:---  w   -i  --- 可以查看连接本机的情况

  3、规则的删除:

     

  3)实验三:源地址的转换(进行不同网段的连接)
   1、  修改服务端的masquerade为yes;添加两个接口的ip (需要有两个物理网卡)

              [root@desktop121 ~]# firewall-cmd --add-masquerade              ##开启伪装功能

              

              修改后的网络接口信息如下所示:

            

    2、修改服务端配置文件(使两个接口可以进行转换)

            sysctl -a |  grep  forward                                                     ##查看forward相关服务的开

           vim   /etc/sysctl.conf ---->  net.ipv4.ip_forward=1            ##开启接口转换功能   

           

           sysctl   -p                                                                     ##刷新

                  

   3、客户端进行ip和网关的设定

         vim  /etc/sysconfig/network-scripts/ifcfg-eth0                       #此处的网关为服务端中eth1的IP

            

       systemctl  restart  network                                                 ##重启网络服务  

       ifconfig   eth0                                                                  ##查看已修改ip

          

   4、客户端就可以连接其他网段的ip来测试

        

    补充:firewall-cmd   --add-icmp-block=destination-unreachable         ##添加链接时的提示信息

               firewall-cmd    --remoce-icmp-block=destination-unreachable    ##移除规则

               firewall-cmd    --get-icmptypes                                                            ##查看所有可用提示信息

 

posted @ 2018-08-18 11:34  UTHN_B  阅读(386)  评论(0编辑  收藏  举报