Linux防火墙firewall的使用

使用软件:firewall

作用: 隔离  众多的策略,允许出站,严格控制入站

 firewalld服务基础
• 系统服务:firewalld
• 管理工具:firewall-cmd(命令)、firewall-config(图形化界面)

一、四个基本区域

  根据所在的网络场所区分,预设保护规则集
– public:仅允许访问本机的ssh dhcp ping服务
– trusted:允许任何访问
– block:阻塞任何来访请求(明确拒绝,有回应客户端)
– drop:丢弃任何来访的数据包(没有回应,节省服务端资源)

二、基本命令

  1.查看当前区域

    firewall-cmd --get-default-zone

  2.转换区域

    firewall-cmd --set-default-zone='区域名'

  3.查看区域规则

    firewall-cmd --zone='区域名' --list-all

  4.添加源

   firewall-cmd --zone='区域名' --add-source='ip地址'

三、四个区域的实际应用

   用两台虚拟机做测试(相同网段),server,desktop

  server ip :172.25.0.11

  desktop ip :172.25.0.10

   1.public 

    public默认允许访问本机的ssh服务,ping服务,可以通过命令查看.

   查看区域规则命令:    firewall-cmd --zone=public  --list-all

   看services这一栏,允许dhcpv6-client,ssh服务

    ①ping

       1)server端将区域转为public  

        firewall-cmd --set-default-zone=public

       2)使用desktop ping server 

    ping 172.25.0.11 ,ping 通

    

    ②ssh

   使用desktop ssh server,

   ssh成功,主机名从desktop变为server

  

③通过http和ftp访问

            desktop下访问server服务,

            访问 http: firefox 172.25.0.11 

            访问 ftp:  firefox ftp://172.25.0.11 

            结果都是会被阻拦,也就是说public区域下默认不允许http和ftp访问

2.trusted 

         1)server端将区域转为trusted  

        firewall-cmd --set-default-zone=trusted

         2)将区域转为trusted后允许所有访问,包括ssh,ping,ftp,http等

3. block

        1)server端将区域转为block  

        firewall-cmd --set-default-zone=block

        2)访问测试

             ①ping

              desktop下ping server : ping 172.25.0.11   

              ping通,根据block区域的规则,拒绝访问,但是会给予回应

        

          ②ssh 

           desktop下ssh server :

          可以看到无法连接成功

            [[email protected] /]# ssh [email protected]
            ssh: connect to host 172.25.0.11 port 22: No route to host

          ③通过http和ftp访问

            desktop下访问server服务,

            访问 http: firefox 172.25.0.11 

            访问 ftp:  firefox ftp://172.25.0.11 

            结果都是会被阻拦

  4.drop

     drop和trused形成两个极端,一个允许一切访问,一个拒绝一切访问.

     drop禁止通过ping,ssh,http,ftp等访问.

四、修改防火墙的配置

   

   1.向public添加允许http和ftp服务

  上面说了public默认设置是不允许访问http和ftp服务的(根据本机的情况而定).管理员可以添加允许访问的服务

   两条命令:

   ① firewall-cmd --permanent --zone=public  --add-service='服务名'   #-permanent为永久修改,不加就是临时修改,重启后失效  --zone后跟区域名

   ② firewall-cmd  --reload    #重新加载防火墙所有配置

    [[email protected] ftp]# firewall-cmd --permanent --zone=public --add-service=http
    success
    [[email protected] ftp]# firewall-cmd --permanent --zone=public --add-service=ftp   
    success

    [[email protected] ftp]# firewall-cmd --reload   

    [[email protected] ftp]# firewall-cmd --zone=public --list-all  #显示配置信息

    修改后services下多出http和ftp
     

    看看效果:在desktop下访问server

   ping 172.25.0.11

   ping ftp://172.25.0.11

    

 

2. 单独拒绝访问

 可以通过防火墙设置拒绝单独的访问.比如我想拒绝desktop(172.25.0.10)访问server

①通过block区域设置拒绝访问服务

 在server上输入命令 :firewall-cmd --zone=block --add-source=172.25.0.10

②设置默认访问区域,调整位trusted允许所有访问

 filewall-cmd --set-defaults-zone=trusted

③测试

  desktop下 输入 : firefox 172.168.10

  被拒绝

 ④block拒绝和drop拒绝的区别

 你也可以设置drop拒绝,在server上输入命令 :firewall-cmd --zone=drop --add-source=172.25.0.10

 与block的区别就是drop不能得到服务的响应了,你可以尝试ping 172.25.0.10(服务器ip),无法ping通

3.单独允许访问

  若将zone切换到drop区域,即禁止一切访问,在这种情况下若想允许单独访问,可以将访问者ip添加到trusted区域.

   

①通过block区域设置拒绝访问服务

 在server上输入命令 :firewall-cmd --zone=trusted --add-source=172.25.0.10

②设置默认访问区域,调整位trusted允许所有访问

 filewall-cmd --set-defaults-zone=drop

③测试

  desktop下 输入 : firefox 172.168.10

  允许访问

4.区域ip冲突

   区域ip冲突的意思是指,在两个区域中设置同一ip地址.即在drop中设置172.25.0.10,那么在其他区域就不允许添加这一条ip地址,

[[email protected] ftp]# firewall-cmd --zone=drop --add-source=172.25.0.10
success
[[email protected] ftp]# firewall-cmd --zone=trusted --add-source=172.25.0.10
Error: ZONE_CONFLICT

 所以你想将ip加入到某个区域,就必须在其他区域将其删除

5.修改映射端口

   端口: 协议或程序或服务的编号
   利用root可以改变端口,而且一个程序可以具备多个端口    

   实现本机的端口映射
  • 本地应用的端口重定向(端口1 --> 端口2)

   实现:客户端访问: firefox  172.25.0.11:5423--->172.25.0.11:80

   也就是说当5423端口不工作时,防火墙将访问重定向到80端口上

    基本命令: firewall-cmd --zone=[区域名]  --add-forward-port=port=[被转发端口]:proto=tcp:toport=[转发后端口]   

    [[email protected] /]# firewall-cmd  --permanent  --zone=public --add-forward-port=port=5423:proto=tcp:toport=80

    注意两点:①添加--permanent  参数将其永久修改

                    ②将这条命令添加到常用区域,可以是public或trusted,添加到drop或block区域意义不大