作为客户技术经理,建议通过以下步骤使用firewalld限制SSH访问:1. 启用并启动firewalld:systemctl enable --now firewalld;2. 添加IP白名单规则:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'(替换为实际IP段);3. 拒绝其他地址:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="ssh" reject';4. 重载配置:firewall-cmd --reload。注意:操作前需验证白名单IP,避免锁死管理权限。对于生产环境,建议结合跳板机或VPN二次验证,遵循最小权限原则。
如何通过 firewalld 在 Rocky Linux 中设置防火墙规则来限制 SSH 访问?
回答
| 共 5 个
在Rocky Linux中通过firewalld限制SSH访问,建议采用以下架构级方案:
-
服务隔离:将SSH端口(默认TCP/22)分配到独立zone(如'secure'),与默认public zone隔离,实现网络边界控制。
-
源地址限定:使用富规则精准控制访问源:
firewall-cmd --zone=secure --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent -
默认拒绝策略:
firewall-cmd --zone=secure --set-target=DROP --permanent -
双栈防护:同时配置IPv4/IPv6规则,避免协议层漏洞
-
时间维度控制(可选):通过--timeout参数设置临时访问规则,适用于维护窗口
-
审计追踪:启用firewalld日志记录:
firewall-cmd --zone=secure --add-rich-rule='rule service name="ssh" log level="warning" prefix="ssh_attempt" limit value="1/m" accept' --permanent
实施后执行firewall-cmd --reload并验证规则顺序(--list-all-zones)。建议结合NetworkManager实现动态策略调整,并通过ansible等工具固化配置。高可用环境需同步规则至所有节点。
是否考虑过使用TCP Wrappers来限制SSH访问,通过简单的hosts.allow/hosts.deny文件实现IP级控制?
在Rocky Linux中通过firewalld限制SSH访问时,我的实践经验分为五个阶段:
-
基础配置
- 确认firewalld状态:
systemctl status firewalld - 设置默认zone为drop策略:
firewall-cmd --set-default-zone=drop --permanent - 添加SSH服务白名单:
firewall-cmd --add-service=ssh --permanent
- 确认firewalld状态:
-
精细控制(生产环境推荐) 使用rich规则实现IP段限制:
firewall-cmd --permanent --zone=public \ --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'同时添加拒绝规则:
firewall-cmd --permanent --zone=public \ --add-rich-rule='rule family="ipv4" service name="ssh" reject' -
端口混淆策略 修改SSH默认端口后需同步更新规则:
firewall-cmd --permanent --remove-service=ssh firewall-cmd --permanent --add-port=59222/tcp
实践挑战:
- 混合环境冲突:当存在多张业务网卡时,需通过
--zone=明确指定接口归属 - VPN穿透问题:通过OpenVPN连接的用户需额外添加
10.8.0.0/24到白名单 - 规则优先级:确保accept规则在reject之前,可通过
firewall-cmd --list-rich-rules验证顺序
关键建议:
- 实施前在测试环境验证规则
- 通过
nohup保持现有SSH会话 - 使用
--timeout=300参数创建临时规则进行过渡 - 配置版本控制:备份
/etc/firewalld目录
补充安全策略:
- 结合fail2ban自动封禁异常IP
- 强制密钥认证(禁用密码登录)
- 设置SSH连接空闲超时
在Rocky Linux中通过firewalld限制SSH访问的核心步骤如下:
- 启用firewalld:
systemctl enable --now firewalld - 验证默认区域:
firewall-cmd --get-default-zone(通常为public) - 添加富规则限制IP:
firewall-cmd --permanent --zone=public \ --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' - 禁止其他访问:
firewall-cmd --permanent --zone=public \ --add-rich-rule='rule family="ipv4" service name="ssh" reject' - 重载配置:
firewall-cmd --reload
关键注意:
- 执行顺序必须先允许再拒绝,富规则按添加顺序生效
- 使用
--permanent保证重启后生效,但需配合--reload立即应用 - 可通过
firewall-cmd --list-all-zones验证规则层次结构 - 强烈建议在物理控制台操作,避免规则错误导致SSH连接中断
推荐
热门问答
部分内容依据人工智能生成,仅供参考,可能有误请注意甄别