作为一名系统管理员或开发者,你是否曾经被 Linux 防火墙配置搞得头大?在生产环境中,我们经常需要配置防火墙来保护服务器安全,但面对 iptables 和 firewalld 这两个工具,很多人都会觉得无从下手。别担心!这篇文章将用通俗易懂的方式,带你了解 CentOS 中的防火墙配置,并通过一个实际案例,手把手教你如何正确设置防火墙规则。
1.两大防火墙工具
• firewalld:CentOS 7及以后版本的默认防火墙管理工具
• iptables:传统的Linux防火墙管理工具
2.firewalld的特点
• 动态管理防火墙
• 支持网络/防火墙区域(zone)定义网络连接及接口的可信等级
• 运行时配置和永久配置分离
• 支持IPv4、IPv6
• 支持以太网桥接
3.firewalld与iptables的主要区别
• firewalld:
• 动态配置,无需重启服务
• 支持动态更改规则
• 使用区域(zone)管理规则
配置文件存放地址:
/etc/firewalld/ # 系统配置文件目录 /usr/lib/firewalld/ # 默认配置文件目录
注意:
1./etc/firewalld/:优先级高,用户配置目录
2./usr/lib/firewalld/:优先级低,默认配置目录
•
• 系统升级时会覆盖此目录
• 建议在/etc/firewalld/下修改配置
• iptables service:
•
• 静态配置,规则修改后需重启服务
• 规则修改需要先清除旧规则
• 使用链(chain)管理规则
配置文件存放地址:
`/etc/sysconfig/iptables # 规则配置文件`
4.firewalld不同区域
| 区域 | 说明 |
| 信任 | 可接收所有的网络连接 |
| public | 除非与传出流量相关,或与 ssh 或 dhcpv6-client 预定义服务匹配,否则拒绝流量传入 |
| work | 除非与传出流量相关,或与 ssh、ipp-client、dhcpv6-client 预定义服务匹配,否则拒绝流量传入 |
| 家 | 除非与传出流量相关,或与 ssh、ipp-client、mdns、samba-client、dhcpv6-client 预定义服务匹配,否则拒绝流量传入 |
| internal | 除非与传出流量相关,或与 ssh、ipp-client、mdns、samba-client、dhcpv6-client 预定义服务匹配,否则拒绝流量传入 |
| external | 除非与传出流量相关,或与 ssh 预定义服务匹配,否则拒绝流量传入 |
| dmz | 除非与传出的流量相关,或与 ssh 预定义服务匹配,否则拒绝流量传入 |
| block | 除非与传出流量相关,否则拒绝所有传入流量 |
| drop | 除非与传出流量相关,否则丢弃所有传入流量,并且不产生包含 ICMP 的错误响应 |
5.三种配置方法
• firewall-config 图形工具。
• firewall-cmd 命令行工具。
• /etc/firewalld/中的配置文件。
图形化不过多解释 需要的话你搜其他文章
防火墙基础案例
+-------------+ +-------------+ +-------------+ | Client | | Firewall | | Apache | |192.168.14.112| |192.168.14.111| |Linux 服务器 | +-------------+ +-------------+ +-------------+ | | | | | | +--------------------+--------------------+
1. 禁止主机 ping 服务器
2. 只允许 192.168.8.130 主机访问 SSH 服务
3. 允许所有主机访问 Apache 服务
服务器配置
ip地址是192.168.14.111
yum install -y httpd [root@localhost ~]# echo 2024-12-3 > /var/www/html/index.html [root@localhost ~]# systemctl start httpd [root@localhost ~]# curl 127.0.0.1 2024-12-3
配置完成apache服务之后
客户端是可以ping的

禁止Ping防火墙规则
# 启动 firewalld 并设置为开机自启动 systemctlstart firewalld systemctlenable firewalld # 禁止 ping 服务器 firewall-cmd--zone=public --add-icmp-block=echo-request --permanent firewall-cmd--reload # 验证配置 firewall-cmd--list-all
客户端测试

允许SSH登录规则
# 移除默认区域的 SSH 服务 firewall-cmd--zone=public --remove-service=ssh --permanent # 只允许 192.168.8.130 主机访问 SSH 服务 firewall-cmd--zone=work --add-source=192.168.14.112 --permanent firewall-cmd--zone=work --add-service=ssh --permanent firewall-cmd--reload # 验证配置 firewall-cmd--list-all
客户端测试
其他ip的主机远程是拒绝了 因为只有 192.168.14.112可以远程

192.168.14.112 主机可以远程访问

允许apache流量规则
# 允许所有主机访问 Apache 服务 firewall-cmd --zone=public--add-service=http --permanent firewall-cmd --zone=public--add-service=https --permanent firewall-cmd --reload # 验证配置 firewall-cmd --list-all
客户端测试
为开放apache的流量之前
[root@localhost ~]# curl 192.168.14.111 curl: (7) Failed connect to 192.168.14.111:80; 没有到主机的路由
开放之后 所有的主机均可以访问的
[root@localhost ~]# curl 192.168.14.111 2024-12-3
总结
通过这篇文章,我们不仅学习了 firewalld 和 iptables 的基本概念,更重要的是通过一个实际的案例,展示了如何:
1. 轻松配置防火墙规则来阻止 ping 请求
2. 限制特定 IP 地址的 SSH 访问,提高服务器安全性
3. 开放 HTTP 服务,让网站正常对外提供服务
记住,防火墙配置不是一成不变的,你可以根据实际需求随时调整规则。最重要的是理解每个配置背后的原理,这样才能灵活应对各种场景。希望这篇文章能帮助你在实际工作中少走弯路,轻松搞定防火墙配置!
-
Linux
+关注
关注
88文章
11627浏览量
217888 -
服务器
+关注
关注
13文章
10092浏览量
90854 -
防火墙
+关注
关注
0文章
442浏览量
36602 -
CentOS
+关注
关注
0文章
84浏览量
14661
原文标题:Linux防火墙基础部分Firewalld防火墙(小白入门级别)
文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录

如何在CentOS系统中配置防火墙
评论