防火墙的配置————firewalld

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

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

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




防火墙的配置————firewalld



这篇我们主要讲firewalld服务

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

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

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




一.概述

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

防火墙的配置————firewalld


2.配置文件

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

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

 

3.图形管理


防火墙的配置————firewalld

防火墙的配置————firewalld














二.使用图形管理firewalld


0.准备

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



防火墙的配置————firewalld






(2)动态监控配置火墙时的动态情况
防火墙的配置————firewalld










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


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


(2)在public区域下勾选http服务,可以看到已经立即生效防火墙的配置————firewalld












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



防火墙的配置————firewalld



(2)重新加载

防火墙的配置————firewalld




(3)加载后,可以看到已经生效
防火墙的配置————firewalld









3.更改默认指定区域:修改默认区域
(1)一般情况下,默认的区域是public(2)选择Change Default Zone防火墙的配置————firewalld







(3)以选择trusted为例,点击ok
防火墙的配置————firewalld




(4)可以看到默认区域已经是trusted防火墙的配置————firewalld

























三.命令行参数解析




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.基本配置

查看防火墙管理的设备

[[email protected] ~]# firewall-cmd --get-active-zones

查看防火墙生效的区域

[[email protected] ~]# firewall-cmd --get-default-zone

查看防火墙所有的区域

[[email protected] ~]# firewall-cmd --get-zones

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

[[email protected] ~]# firewall-cmd --zone=public --list-all

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

[[email protected] ~]# firewall-cmd --zone=trusted --list-all

列出可使用的服务

[[email protected] ~]# firewall-cmd --get-services

修改默认区域为trusted

[[email protected] ~]# firewall-cmd --set-default-zone=trusted

修改默认区域为public

[[email protected] ~]# firewall-cmd --set-default-zone=public

防火墙的配置————firewalld









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

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











3.临时:直接将eth1从原来的区域转到trusted这个区域防火墙的配置————firewalld

检验eth1是否在trusted这个区域写入配置
[[email protected] zones]#  vim trusted.xml
防火墙的配置————firewalld





4.永久:直接将eth1从原来的域转到trusted这个区域防火墙的配置————firewalld

检验eth1已经在trusted这个区域[[email protected] zones]# vim trusted.xml防火墙的配置————firewalld


重启服务i使永久配置生效
[[email protected] zones]#  systemctl restart firewalld
防火墙的配置————firewalld




确认两块网卡的IP 再次进行测试
防火墙的配置————firewalld



[[email protected] zones]# yum install links -y[[email protected] yum.repos.d]# links http://172.25.99.1防火墙的配置————firewalld

[[email protected] yum.repos.d]# links http://172.25.254.100

防火墙的配置————firewalld











五. 伪装和端口转发

防火墙的配置————firewalld


地址伪装:
将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)
防火墙的配置————firewalld
路由


[[email protected] yum.repos.d]# firewall-cmd --add-masquerade    ##添加火墙伪装功能
[[email protected] yum.repos.d]# firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.14    ##将连接到本机的主机转接到14主机
防火墙的配置————firewalld





测试
防火墙的配置————firewalld