系统学习-----firewalld概述

动态防火墙后台服务程序:提供一个动态管理的防火墙,用以支持网络“Zone”,来分配对一个网络链接和界面一定程序的信息,它具备对IPv4和Ipv6防火墙设置的支持。

它支持以太网桥,并有分离运行时间和永久配置选项,可以通过服务程序直接增加规则。

  • 图形化配置工具:firewall-config
  • 命令行配置工具:firewall-cmd

用于配置firewalld服务永久性或者非永久性运行时间的改变,它依次用IPtables工具与执行数据包筛选的内核中Netfilter通信。

Firewalld和IPtables的关系:

  1. firewalld和IPtables本身都不具备防火墙功能
  2. 他们都是在用户空间将执行规则放到内核空间的“安全框架”- Netfilter中去实现

Firewalld和IPtables的区别:

  1. iptables 在 /etc/sysconfig/iptables-config中存放IPtables规则设置;Firewalld 在/usr/lib/firewalld/* 中进行系统配置和/etc/firewalld/* 中关于服务xml文件格式的配置。

  2. 在使用IPtables的时候,每去操作一条规则立即生效。

  3. Firewalld不会创建任何新的规则,仅仅运行规则中的不同之处,因此Firewalld可以在运行时间内改变配置而不丢失现有的连接。

Zone区域

不同区域对于网络连接的设置规范不同
- trusted 信任区域:接收所有网络连接
- home 家庭区域:可以信任不会危害自己计算机的其他机器
- internal 内部区域:可以信任不会危害自己计算机的其他机器
- worker 工作区域:用于工作网络
- public 公共区域:用于公共网络
- extenal 外部区域:出去的ipv4网络连接通过此区域的伪装和转发,仅接受ssh服务链接。
- dmz 非军事区域:
- block 限制区域:拒绝所有网络连接
- drop 丢弃区域:任何接受的包都会被丢弃,没有回复。

管理防火墙

  • 每个zone中都有一套规则集,对于接收到的请求具体使用哪个zone,Firewalld通过三种方式来判断:
    1. source 源地址优先级最高
    2. Interface 接收请求的网卡
    3. firewall.config 中配置的默认zone
[root@test ~]# cat /etc/firewalld/firewalld.conf | grep Zone
DefaultZone=public

常用命令

  • 查看默认zone: [root@test ~]# firewall-cmd --get-default-zone

  • 设置默认zone: --set-default-zone=<zone>

  • 查看当前firewalld状态: [root@test ~]# firewall-cmd --state

  • 查看当前活动的zone:[root@test ~]# firewall-cmd --get-active-zones

  • 列出所有可用zone: [root@test ~]# firewall-cmd --list-all-zones

  • 列出piblic所有区域设置:[root@test ~]# firewall-cmd --zone=public --list-all

  • 列出所有预定服务:–get-services
    #所有已经设定好的可直接使用的服务规则

  • 将某个网络地址放置/移除某个zone

--add-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
#设置网络地址到指定区域
--remove-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
#删除指定区域的网络地址

管理操作

  • 列出、添加、删除、改变网络接口到制定域中(域中会有一条规则)
		--list-interfaces
		--add-interface=<interface>
		--change-interface=<interface>
		--remove-interface=<interface>
		--query-interface=<interface>
  • 添加、删除、列出服务
		--get-services
		--delete-service=<service>
		--add-service=<service>
		--list-services
		--remove-service=<service>
		--query-service=<service>
  • 列出、添加、删除端口
--list-ports         List ports added for a zone [P] [Z]
--add-port=<portid>[-<portid>]/<protocol>
--remove-port=<portid>[-<portid>]/<protocol>
--query-port=<portid>[-<portid>]/<protocol>
  • 永久生效: --permanent
  • 重载防火墙: --reload

每个可添加的服务都有对应的xml文件,例如我添加ssh服务,要添加端口22,添加的服务只是将添加端口22打包成一个文件。

实验操作

部署http服务,并在防火墙开启的情况能够正常访问:
1.

[root@localhost ~]# firewall-cmd --add-service=http
Warning: ALREADY_ENABLED: 'http' already in 'public'
success
[root@localhost ~]# cat /usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>WWW (HTTP)</short>
  <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
  <port protocol="tcp" port="80"/>
</service>

<port protocol=“tcp” port=“80”/>每个可添加的服务都有对应的xml文件。

  • 每个服务的xml文件当中都定义了规则(协议+端口)

  • 所以当我们去添加服务到当前zone中,也就意味只 对xml当中的设定的规则生效(允许放行)

[root@test services]# firewall-cmd --add-port=80/tcp 

总结来说:去添加服务的方式最终还是涉及到添加端口的方式(要看对应服务的xml文件如何定义)

发布了49 篇原创文章 · 获赞 6 · 访问量 3687

猜你喜欢

转载自blog.csdn.net/weixin_46097280/article/details/104895491