在服务器运维中,限制特定IP段访问是保障系统安全的基础操作之一,通过精细化控制访问来源,可以有效降低来自恶意网络的攻击风险,保护关键服务和数据,在CentOS系统中,这一功能主要通过其内置的防火墙工具实现,本文将详细介绍如何使用CentOS默认的firewalld
防火墙来限制IP段访问。
理解firewalld
与区域概念
firewalld
(Dynamic Firewall Manager)是CentOS 7及以上版本默认的防火墙管理工具,它支持动态更新而无需重启服务,其核心概念是“区域”,不同的区域预设了不同的安全级别和规则集。public
区域适用于公共网络,默认只允许SSH和DHCPv6客户端流量;而trusted
区域则信任所有网络连接,我们的操作通常是在指定区域(如public
)内添加规则。
使用富规则限制IP段
firewalld
提供了“富规则”功能,允许我们定义非常复杂和精细的防火墙规则,这是限制IP段访问的最佳方式。
操作步骤:
检查防火墙状态
确保firewalld
服务正在运行。systemctl status firewalld firewall-cmd --state
确定活动区域
查看当前网络接口所在的区域,通常为public
。firewall-cmd --get-active-zones
添加允许特定IP段的规则
假设我们只允许168.1.0/24
这个网段访问服务器的HTTP(80)端口,并拒绝其他所有IP访问,我们需要先添加允许规则。firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="80" accept'
--permanent
: 表示规则永久生效。--zone=public
: 指定在public
区域操作。--add-rich-rule
: 添加一条富规则。family="ipv4"
: 指定IPv4协议。source address="192.168.1.0/24"
: 指定源IP地址段。port protocol="tcp" port="80"
: 指定目标端口和协议。accept
: 表示接受(允许)该流量。
移除服务默认的公开访问
如果之前已经开放了80端口给所有IP,需要移除它。firewall-cmd --permanent --zone=public --remove-service=http
重新加载防火墙
使所有永久规则立即生效。firewall-cmd --reload
通过以上步骤,就实现了仅允许168.1.0/24
网段访问80端口的目的,如果需要拒绝某个IP段,只需将accept
改为drop
或reject
即可。
常用命令速查表
为了方便日常操作,下表小编总结了firewalld
限制IP段的核心命令:
功能描述 | 命令示例 |
---|---|
允许IP段访问特定端口 | firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="IP/子网掩码" port protocol="tcp" port="端口号" accept' |
拒绝IP段所有访问 | firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="IP/子网掩码" drop' |
移除富规则 | firewall-cmd --permanent --zone=public --remove-rich-rule='...' |
查看所有富规则 | firewall-cmd --list-rich-rules |
重新加载防火墙 | firewall-cmd --reload |
相关问答FAQs
问题1:如何查看当前防火墙所有已配置的规则?
解答: 您可以使用以下命令来全面了解防火墙的当前状态。firewall-cmd --list-all
会显示指定区域(默认为当前活动区域)的所有规则,包括允许的服务、端口、富规则等,如果想只查看富规则,可以使用firewall-cmd --list-rich-rules
,这两个命令对于排查问题和验证配置是否生效非常有帮助。
解答: 不加--permanent
参数的命令(运行时模式)会立即生效,但一旦防火墙服务重启或服务器重启,这些规则就会丢失,而加上--permanent
参数(永久模式)的命令会将规则写入配置文件,但不会立即生效,需要执行firewall-cmd --reload
来重新加载配置,使其永久生效,最佳实践是,在测试时先不加--permanent
,确认无误后,再带上--permanent
执行并reload
。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复