禁止用除了堡垒机之外的连接
2026/7/23大约 3 分钟
先测试连接防止关闭连接后堡垒机无法连接到虚拟机引起的断连(在jumpserver的web界面的控制行中操作)

访问路径的转变
- 旧方式(危险): 你的电脑--》 路由器--》 逐个 SSH 访问 130、131、132... (需要记住每个机器的密码,且防火墙要开很多孔)。
- 新方式(JumpServer): 你的电脑 --》浏览器 (80/443)--》JumpServer 界面 --》点击资产--》 自动登录到 DMZ 机器。
关闭其他连接
1. 使用 Firewalld 实现(Rocky Linux 推荐)
你需要按照以下顺序在 Web1/Web2 上执行,确保在开启防护的同时不影响网页访问:
启动并设置开机自启
systemctl start firewalld
systemctl enable firewalld
立刻开放 Web 业务端口 (80)
这一步非常重要,否则一旦防火墙开启,默认会拦截所有外部访问。
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port=80/tcp
开放9100端口,后续的prometheus监控需要用到
firewall-cmd --add-port=9100/tcp --permanent
firewall-cmd --reload
设置堡垒机专属 SSH 通道 (22)
# 只给 136 堡垒机开后门
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.31.136" port protocol="tcp" port="22" accept'
# 移除通用的 SSH 服务(禁止其他所有人)
firewall-cmd --permanent --remove-service=ssh
重载使配置生效
firewall-cmd --reload
检查状态
执行完后,你可以用这个命令确认:
firewall-cmd --list-all
你应该能看到:
services里有http,但没有ssh。rich rules里有一条source address="192.168.31.136" ... accept。
特别提醒(针对 135 网关和 LVS)
- 如果你是在 135 网关上操作,记得还要确保
masquerade(地址伪装)和你的DNAT转发规则依然存在,否则外网流量进不来。 - 如果你是在 LVS (132/133) 上操作,由于它是 DR 模式,它主要处理的是转发,通常建议保持
80端口放行。
2. 使用 iptables 实现(传统方式)
如果你更倾向于使用 iptables,逻辑是:先允许已建立的连接,再允许堡垒机,最后拒绝所有。
清理并设置默认策略
在开始之前,先确保清理旧规则,并允许已建立的连接,否则你当前的 SSH 可能会立即断开。
# 1. 清除所有现有规则
iptables -F
iptables -X
# 2. 允许回环接口(本地通信必开)
iptables -A INPUT -i lo -j ACCEPT
# 3. 允许已建立或相关的连接(防止踢掉当前操作)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
核心规则:业务与管理分流
这是实现你当前 AIOps 实验环境安全要求的关键三步:
# 4. 放行 Web 业务端口 (80)
# 这样你的 LVS 负载均衡和外部用户就能访问网页了
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 5. 核心:只允许堡垒机 (136) 访问 SSH (22)
# 请务必检查你的 JumpServer IP 是否确实是 192.168.31.136
iptables -A INPUT -p tcp -s 192.168.31.136 --dport 22 -j ACCEPT
# 6. 拒绝所有其他人的 SSH 访问
iptables -A INPUT -p tcp --dport 22 -j DROP
保存规则(防止重启丢失)
在 Rocky Linux 中,iptables 命令执行后是立即生效但非永久的。你需要安装工具来保存它:
# 安装 iptables 永久保存工具
yum install -y iptables-services
# 保存当前规则到 /etc/sysconfig/iptables
service iptables save
# 设置开机自启
systemctl enable iptables
systemctl start iptables
