引言
1 概述
防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。
注意⚠️:当前执行操作类都是在管理员命令下操作,如果非管理员用户下,会提示如下权限信息,firewalld本身并不是防火墙,而是一种防火墙管理工具,通过定义防火墙规则最终交由内核的netfilter进行包过滤实现防火墙功能。
Authorization failed. Make sure polkit agent is running or run the application as superuser.
当然如果是查询状态这种命令,就无需要管理员权限。
2 整体架构
firewalld由d-bus层和core层构成。d-bus层提供api,其它程序(如firewall-cmd、firewall-config、firewall-applet、甚至是你自己编写的程序或守护进程)通过调用api可定义防火墙规则或查询防火墙状态等等。core层为d-bus层提供服务,负责和后端交互。架构图如下:
备注:firewalld提供的firewall-offline-cmd不调用d-bus层,而是直接调用core层中的IO来修改防火墙规则。
3 安装和配置
firewall官方网址:https://firewalld.org/
firewall官方下载地址:https://firewalld.org/download/all.html
firewall支持两种配置,系统默认配置和系统特殊配置。
【系统默认配置】
默认配置的配置路径在/usr/lib/firewalld
【系统特殊配置】
特殊配制的路径在/etc/firewalld。
如果特殊配制路径不存在,那么在启动时,系统会自动查找系统默认配置,配置文件则是firewalld.conf。
实战
1、防火墙系统服务命令
防火墙启动命令:
systemctl start firewalld
防火墙停止:
systemctl disable firewalld
防火墙禁用:
systemctl stop firewalld
查防火墙状态:
systemctl status firewalld
执行上述命令之后,可以查看输出信息中有active (running)
,这表示我们的防火墙已经开启:
2、设置开放端口
- 设置单个端口开放访问
firewall-cmd --zone=public --add-port=12345/tcp --permanentfirewall-cmd --zone=public --add-port=8080/tcp --permanent
执行上述命令之后,可以看到输出success
信息,这个表示我们已经成功设置了端口12345
对外可以访问:
- 设置多个连续个端口开放访问
firewall-cmd --zone=public --add-port=8081-8088/tcp --permanent
同样的,如果我们要设置连续端口对外开放访问,那么执行上述命令之后,也是会输出success
信息,这里的连续端口8081-8088
是指8081、8082、8083、8084、8085、8086、8087、8088
。
3、查看端口防火墙状态
firewall-cmd --zone=public --query-port=80/tcp
4、删除指定端口防火墙
firewall-cmd --zone=public --remove-port=12345/tcp --permanentfirewall-cmd --zone=public --remove-port=8081-8088/tcp --permanent
删除端口对外访问原理同新增端口对外访问一致,执行后的结果如下
5、更新防火墙规则(重新加载)
这个命令主要是让已经设置的防火墙端口生效
firewall-cmd --reload
6、查看所有规则
firewall-cmd --list-all
执行上述命令之后,可以查看输出信息中有ports
,这个便是我们已经开启防火墙状态下且只对外访问的端口: