防火墙的配置————firewalld

来源:互联网 发布:seo专业知识 编辑:程序博客网 时间:2024/05/29 18:41

FirewallD 是 iptables 的前端控制器,用于实现持久的网络流量规则。它提供命令行和图形界面,在大多数 Linux 发行版的仓库中都有。与直接控制 iptables 相比,使用 FirewallD 有两个主要区别:

  • FirewallD 使用区域和服务而不是链式规则。
  • 它动态管理规则集,允许更新规则而不破坏现有会话和连接

    注意:FirewallD 是 iptables 的一个封装,可以让你更容易地管理 iptables 规则 - 它并不是 iptables 的替代品。虽然 iptables 命令仍可用于 FirewallD,但建议使用 FirewallD 时仅使用 FirewallD 命令。







    这篇我们主要讲firewalld服务

    系统提供了图像化的配置工具firewall-config、

    提供命令行客户端firewall-cmd, 

    用于配置 firewalld永久性或非永久性运行时间的改变




    一.概述

    1.启动服务,并在系统引导时启动该服务



    2.配置文件

    firewalld将配置储存在/usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种XML文件里,除非是非常特殊的配置,你不必处理它们,而应该使用firewall-cmd

    • /usr/lib/FirewallD 下保存默认配置,如默认区域和公用服务。 避免修改它们,因为每次 firewall 软件包更新时都会覆盖这些文件。
    • /etc/firewalld 下保存系统配置文件。 这些文件将覆盖默认配置。


     

    3.图形管理



















  • 二.使用图形管理firewalld


  • 0.准备

  • (1)打开图形化管理火墙界面,并打入后台不影响终端使用










  • (2)动态监控配置火墙时的动态情况












  • 1.临时更改:在runtime下是临时生效,并且是立刻生效


  • (1)可以看到初始化支持的服务有dhcpv6-client ssh


  • (2)在public区域下勾选http服务,可以看到已经立即生效













  • 2.永久更改:permanent下,更改配置文件,重新加载后永久生效
  • (1)在public区域下勾选http服务,可以看到并没有生效







  • (2)重新加载







  • (3)加载后,可以看到已经生效











  • 3.更改默认指定区域:修改默认区域

  • (1)一般情况下,默认的区域是public
  • (2)选择Change Default Zone








  • (3)以选择trusted为例,点击ok





  • (4)可以看到默认区域已经是trusted


























  • 三.命令行参数解析




  • source     
    指定源地址,可以是一个ipv4/ipv6的地址或网段,不支持使用主机名。 


  • destination     
  • 指定目的地址,用法和source相同。 



  • service     

  • 服务名称是 f irewalld 提供的其中一种服务。要获得被支持的服务的列表,输入以下命令: 


  • firewall-cmd --get-services 
  • 命令为以下形式:     service name=service_name 


  • port     
  • 端口既可以是一个独立端口数字,又或者端口范围,例如,5060-5062。协议可以指定为 tcp 或     udp 。命令为以下形式:     port port=number_or_range protocol=protocol 



  • protocol     
  • 协议值可以是一个协议 ID 数字,或者一个协议名。预知可用协议,请查阅 /etc/protocols。命令为以下形式:     protocol value=protocol_name_or_ID 




  • icmp-block     
  • 用这个命令阻绝一个或多个ICMP类型。IC MP 类型是 firewalld支持的ICMP类型之一。要获得被支持的ICMP类列表,输入以下命令: firewall-cmd --get-icmptypes 




  • icmp-block在内部使用 reject 动作,因此不允许指定动作。命令为以下形式:     icmp-block name=icmptype_name




  •  masquerade     
  • 打开规则里的 IP 伪装。用源地址而不是目的地址来把伪装限制在这个区域内。不允许指定动作。 



  • forward-port     
  • 从一个带有指定为 tcp 或 udp 协议的本地端口转发数据包到另一个本地端口,或另一台机器,或另一台机器上的另一个端口。port 和 to-port 可以是一个单独的端口数字,或一个端口范围。而目的地址是一个简单的 IP 地址。不允许指定动作,命令使用内部动作


  • accept  
  • 命令为以下形式:     forward-port port=number_or_range protocol=protocol /     
  •                         
  •                                    to-port=number_or_range to-addr=address 



  • log     
  • 注册含有内核记录的新连接请求到规则中,比如系统记录。你可以定义一个前缀文本,     
  • 记录等级可以是 emerg、alert、crit、error、warning、notice、info 或者 debug 中的一个。命令形式:     log [prefix=prefix text] [level=log level] limit value=rate/duration     (等级用正的自然数 [1, ..] 表达,持续时间的单位为 s 、 m 、 h 、 d 。 s 表示秒, m 表示     分钟, h表示小时, d 表示天。最大限定值是 1/d ,意为每天最多有一条日志进入。) 





  • audit     
  • 审核为发送到 aud i td 服务的审核记录来注册提供了另一种方法。审核类型可以是     ACCEPT、REJECT或DROP中的一种,但不能在 audit命令后指定,因为审核类型将会从规     则动作中自动收集。审核不包含自身参数,但可以选择性地增加限制。审核的使用是可选     择的。选择 accept 所有新的连接请求都会被允许。选择 reject ,连接将被拒绝,连接来源     将接到一个拒绝信息。拒绝的类型可以被设定为使用另一种值。选择 drop , 所有数据     包会被丢弃,并且不会向来源地发送任何信息 















  • 四.使用命令行接口配置防火墙




  • 1.基本配置
  • 查看防火墙管理的设备

    [root@route ~]# firewall-cmd --get-active-zones

    查看防火墙生效的区域

    [root@route ~]# firewall-cmd --get-default-zone

    查看防火墙所有的区域

    [root@route ~]# firewall-cmd --get-zones

    列出关于public区域的服务设置

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

    列出关于trusted区域的服务设置

    [root@route ~]# firewall-cmd --zone=trusted --list-all

    列出可使用的服务

    [root@route ~]# firewall-cmd --get-services

    修改默认区域为trusted

    [root@route ~]# firewall-cmd --set-default-zone=trusted

    修改默认区域为public

    [root@route ~]# firewall-cmd --set-default-zone=public











  • 2.高级配置
  • 临时添加服务(默认的区域)
    [root@route ~]# firewall-cmd --add-service=https
    临时删除服务(默认的区域)
    [root@route ~]# firewall-cmd --remove-service=https  
     
    永久添加服务(默认的区域)
    [root@route ~]# firewall-cmd --add-service=https  --permanent
    永久删除服务(默认的区域)
    [root@route ~]# firewall-cmd --remove-service=https  --permanent
     
    临时添加端口(默认的区域)
    [root@route ~]# firewall-cmd --add-port=8080/tcp
    临时删除端口(默认的区域)
    [root@route ~]# firewall-cmd --remove-port=8080/tcp
     
    永久添加端口(默认的区域)
    [root@route ~]# firewall-cmd --add-port=8080/tcp  --permanent
    永久删除端口(默认的区域)
    [root@route ~]# firewall-cmd --remove-port=8080/tcp  --permanent
     
    添加接口(默认的区域)
    [root@route ~]# firewall-cmd --add-interface=eth1
    删除接口(默认的区域)
    [root@route ~]# firewall-cmd --remove-interface=eth1
     
    临时拒绝主机172.25.254.99的所有网络连接
    [root@route ~]# firewall-cmd --add-source=172.25.254.99 --zone=block
    永久拒绝主机172.25.254.99的所有网络连接
    [root@route ~]# firewall-cmd --add-source=172.25.254.99 --zone=block --permanent
    不中断连接,重启防火墙策略
    [root@route ~]# firewall-cmd --reload
    中断连接,重启防火墙策略
    [root@route ~]# firewall-cmd --complete-reload
    关闭上述
    [root@route ~]# firewall-cmd --remove-source=172.25.254.99 --zone=block
    [root@route ~]# firewall-cmd --remove-source=172.25.254.99 --zone=block --permanent
  • 服务端:临时只拒绝主机99到本机的ssh服务
  • [root@route ~]# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.99 -p tcp --dport 22 -j REJECT
  • 服务端:恢复主机99到本主机的ssh服务
  • 方式一:[root@route ~]# firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.99 -p tcp --dport 22 -j REJECT

  • 方式二:[root@route ~]# systemctl restart firewalld
  • 服务端:临时只允许主机99使用lftp服务
  • [root@route ~]# firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.99 -p tcp --dport 21 -j REJECT











  • 3.临时:直接将eth1从原来的区域转到trusted这个区域


  • 检验eth1是否在trusted这个区域写入配置
  • [root@router-server zones]#  vim trusted.xml






  • 4.永久:直接将eth1从原来的域转到trusted这个区域


  • 检验eth1已经在trusted这个区域
  • [root@router-server zones]# vim trusted.xml



  • 重启服务i使永久配置生效

  • [root@router-server zones]#  systemctl restart firewalld






  • 确认两块网卡的IP 再次进行测试




  • [root@router-server zones]# yum install links -y
  • [root@router-server yum.repos.d]# links http://172.25.99.1


  • [root@router-server yum.repos.d]# links http://172.25.254.100













  • 五. 伪装和端口转发




  • 地址伪装:
    将172.25.99.100主机使用sshd访问172.25.254.100主机时访问的是172.25.254.14主机
  • 思想:
    1、需要一个双网卡的主机充当路由器,此路由器必须与172.25.99.100和172.25.254.99可以进行通信
    2、172.25.99.100主机将可以与他进行通信的路由器的端口设置成网关(172.25.99.1)

  • 路由

  • [root@router-server yum.repos.d]# firewall-cmd --add-masquerade    ##添加火墙伪装功能
  • [root@router-server yum.repos.d]# firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.14    ##将连接到本机的主机转接到14主机






  • 测试






































































































































  • 原创粉丝点击