Linux--firewalld防火墙服务使用

firewalld

  • 防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

  • 动态防火墙后台程序firewalld提供了一个动态管理的防火墙用以支持网络“zones”,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对IPV4和IPV6防火墙设置的支持,它支持以太网桥,并有选择运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。

  • 相较于传统的防火墙管理配置工具,firewalld支持动态更新技术并加入了区域(zone)的概念。区域就是firewalld预先准备的几套防火墙策略集合(策略模板)

  • 用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。例如,我们的笔记本电脑,每天都要在办公室、咖啡厅和家里使用。按常理来讲,这三者的安全性按照由高到低的顺序来排列,应该是家庭、公司办公室、咖啡厅。我们希望为这台笔记本电脑指定如下防火墙策略规则:在家中允许访问所有服务;在办公室内仅允许访问文件共享服务;在咖啡厅仅允许上网浏览。在以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合,然后只需轻点鼠标就可以自动切换了,从而极大地提升了防火墙策略的应用效率。

1.firewalld中常用的区域名称及策略规则

网络区域名称 默认策略规则
trusted 信任 允许所有的数据包
home 拒绝流入的流量,除非与流出的流量相关。如果流量与ssh,mdns,ipp-client,samba-client,dhcpv6-client服务相关,则允许流量
internal 内部网络,等同于home区域
work 拒绝流入的流量,除非与流出的流量相关。仅接受 ssh、ipp-client 与 dhcpv6-client 连接
public 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、dhcpv6-client 服务相关,则允许流量,为firewlld的默认区域
external 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量
dmz 非军事区 拒绝流入的流量,除非与流出的流量相关;仅接受ssh连接
block 限制 拒绝流入的流量,除非与流出的流量相关;拒绝所有外部发起的连接,允许内部发起的连接
drop 丢弃 拒绝流入的流量,除非与流出的流量相关;丢弃所有进入的包,而不给出任何响应

2.安装图形管理

yum install firewalld firewall-config -y
安装管理火墙的图形界面
firewall-config & 后台开启图形界面(需要在防火墙开启的情况下)
runtime临时修改,立即生效 permanent永久更改,重启生效
Linux--firewalld防火墙服务使用_第1张图片

3.firewall-cmd命令中使用的参数以及作用

参数 作用
–state 查看防火墙状态,是否running
–get-default-zone 查询默认的区域名称
–set-default-zone=<区域名称> 设置默认的区域,使其永久生效
–get-zones 显示可用的区域
–get-services 显示预先定义的服务
–get-active-zones 显示当前正在使用的区域与网卡名称
–add-source=IP 将源自此 IP 或子网的流量导向指定的区域
–remove-source=IP 不再将源自此 IP 或子网的流量导向某个指定区域
–add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域
–change-interface=<网卡名称> 将某个网卡与区域进行关联
–list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息
–list-all-zones 显示所有区域的网卡配置参数、资源、端口以及服务等信息
–add-service=<服务名> 设置默认区域允许该服务的流量
–add-port=<端口号/协议> 设置默认区域允许该端口的流量
–remove-service=<服务名> 设置默认区域不再允许该服务的流量
–remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量
–reload 刷新火墙配置(不中断不符合火墙要求但正在进行的操作)
–complete-reload 完全刷新火墙配置(终端修改后不符合的操作将会中断)

4.操作示范

4.1 ip及网络接口控制

firewall-cmd --add-source=172.25.254.100 --zone=trusted
--add-source 是数据包的属性,来自某网段的的主机(可以为某一网段或具体主机)
将172.25.254.200加入到trusted中
furewall-cmd --remove-source=172.25.254.200 --zone=trusted
firewall-cmd --list-interfaces
列出网络接口
firewall-cmd --get-zone-of-interface=eth0
列出接口所在区域
firewall-cmd --change-interface=eth0 --zone=trusted
修改接口所在区域
firewall-cmd --remove-interface=eth0 --zone=trusted
将接口从所在区域移除
firewall-cmd --add-interface=eth0 --zone=public
将接口添加到指定区域
####以上操作都是临时的,重启防火墙或者重新加载防火墙策略时将失效;要永久修改,加--permanent

firewall-cmd --reload
操作如下:

将IP为172.25.254.200的主机添加到trusted域中。
Linux--firewalld防火墙服务使用_第2张图片
客户端主机IP:172.25.254.200 httpd服务进行测试。
下载文本形式的浏览器elinks进行访问:
Linux--firewalld防火墙服务使用_第3张图片
执行 elinks http://172.25.254.100
Linux--firewalld防火墙服务使用_第4张图片
Linux--firewalld防火墙服务使用_第5张图片
用另外一台如172.25.254.61主机访问,访问不到
Linux--firewalld防火墙服务使用_第6张图片
将172.25.254.200从trusted移除
Linux--firewalld防火墙服务使用_第7张图片
对指定域的接口进行操作
Linux--firewalld防火墙服务使用_第8张图片

4.2服务与端口

4.2.1 通过命令行修改服务与端口

 firewall-cmd --add-service=http --zone=public   
 为指定区域添加服务
 firewall-cmd --add-port=8080/tcp --zone=public  
 为指定区域添加端口
 firewall-cmd --remove-service=http --zone=public  
 将服务从指定区域中移除
 firewall-cmd --remove-port=8080/tcp --zone=public 
 将端口从指定区域中移除
                
以上操作是临时的,在重启防火墙,或者重新加载防火墙时将会失效
永久修改信息,在命令前添加 --permanent
操作如下:

Linux--firewalld防火墙服务使用_第9张图片

4.2.2 通过配置文件修改服务与端口号

防火墙的配置文件在/etc/firewalld/中,可通过直接修改配置文件来进行对防火墙的操作

vim /etc/firewalld/zones/public.xml   public区域的配置文件

  1 
  2 
  3   Public
  4   For use in public areas. You do not trust the other
   compu    ters on networks to not harm your computer. Only selected 
   incoming conne    ctions are accepted.
  5   
  6   
  7     #添加 http 服务
  8 

将http 服务添加到 public 区域中,重新加载防火墙,或者重启防火墙后,
可通过 firewall-cmd --list-all --zone=public 进行查看

操作如下:

Linux--firewalld防火墙服务使用_第10张图片
Linux--firewalld防火墙服务使用_第11张图片

防火墙的属性信息在 /usr/lib/firewalld/中,火墙限制服务是通过端口来限制而不是服务本身,防火墙中添加服务;若是单纯修改服务端口号,就算允许服务,也无法进行操作。

 查看 /usr/lib/firewalld/services/http.xml 
 内容如下:
  1 
  2 
  3   WWW (HTTP)
  4   HTTP is the protocol used to serve Web pages. If you 
  plan     to make your Web server publicly available, enable this 
  option. This op    tion is not required for viewing pages locally or 
  developing Web pages.<    /description>
  5     #端口号为 80
  6 

防火墙中规定以 http 服务来映射 80 端口 若是修改 http 服务的配置文件,将 http 的端口修改为
8080 重启httpd 服务后,将无法访问 httpd 服务。由此可知火墙限制服务是通过端口来限制而不是服务本身
Linux--firewalld防火墙服务使用_第12张图片
防火墙策略增加80端口时,可以访问172.25.254.100主机
Linux--firewalld防火墙服务使用_第13张图片
防火墙策略中移除80端口时,不可以访问
Linux--firewalld防火墙服务使用_第14张图片

5.Firewalld的direct rules 与 rich rules

5.1 direct rules

  • 直接选项,可以更直接的访问防火墙。这些选项要求用户了解基本的iptables概念,直接选项只能做为最终选择。当–add-service或–add-rich-rile不能使用时,才用direct options。
    通过firewall-cmd工具,可以使用–direct选项在运行时间里增加或移除链。如果不熟悉iptables,使用直接接口十分危险,因为可能会无意间导致防火墙被入侵。直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优先应用。

本机filter表(是否经过内核)的INPUT链中添加内容,允许172.25.254.200主机访问本机的80端口

 firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.200 -j ACCEPT
  filter: iptables 的 filter 表
  INPUT: INPUT 链
  ipv4: 互联网协议 
  -p: 协议
  -dport: 目的地端口
   -s: 数据来源
   -j: 参数   ACCEPT 允许  (必须大写)
              REJECT 直接拒绝,有回应
              DROP   直接丢弃,无回复
通过此操作,允许172.25.254.200 主机访问本机的 80 端口

设置前,由于防火墙的原因,172.25.2.54.200无法访问本机
Linux--firewalld防火墙服务使用_第15张图片
操作后
在这里插入图片描述
可以172.25.254.200访问本机:
Linux--firewalld防火墙服务使用_第16张图片

5.2 rich rules

Rich Riles

  • 通过“rich languages”语法,可以用比直接接口方式更易理解的方法建立复杂防火墙规则。此外,还能永久保留设置。这种语言使用关键词值,是iptables工具的抽象表示。这种语言可以用来配置分区,也仍然支持现在的配置方式。

5.2.1 端口转发

firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.200

进行伪装,当通过22端口访问本机时,将请求转发到172.25.254.200主机上;
借本机的身份去访问172.25.254.200主机。
还要开启masquerade

Linux--firewalld防火墙服务使用_第17张图片
ssh 访问172.25.254.100时,转发到访问172.25.254.61;输入的时172.25.254.61的用户密码。
Linux--firewalld防火墙服务使用_第18张图片

5.2.2地址伪装

通过对主机的防火墙进行配置,实现主机的路由功能
实际是客户端借防火墙主机身份去访问外界

步骤如下:

客户端主机地址为 172.25.254.200 ,通过连接 ip 为 172.25.254.100 的主机进行不同网段的访问。
1.设定防火墙主机的一张网卡IP为172.25.254.100,另一张网卡 ip 为 192.168.10.11。开启防火墙主机的防火墙伪装功能,masqueade以及编辑配置文件,开启内核路由功能 。
2.设定客户端主机的IP为172.25.254.200,网关为防火墙主机的网卡 ip 172.25.254.100。
3.客户端主机 ping 192.168.10.11。

操作如下:

Linux--firewalld防火墙服务使用_第19张图片
Linux--firewalld防火墙服务使用_第20张图片
Linux--firewalld防火墙服务使用_第21张图片
w 查看哪些主机登陆过本机,并且有哪些操作,-i 显示IP

你可能感兴趣的:(Linux)