在 centos 中,修改 SSH 默认端口并配置防火墙限制 SSH 访问来源是提升系统安全性的重要措施。以下是详细的操作步骤:
1. 修改 SSH 默认端口
默认情况下,SSH 使用 22 端口,这容易被攻击者扫描和攻击。修改为其他端口可以减少被扫描的风险。
操作步骤:
编辑 SSH 配置文件 /etc/ssh/sshd_config:
sudo vi /etc/ssh/sshd_config
找到以下行(默认是注释的):
#Port 22
取消注释并修改端口号(例如改为 2222):
Port 2222
注意:端口号范围是 1-65535,避免使用常见端口(如 80、443 等)。
保存并退出编辑器。
重启 SSH 服务使配置生效:
sudo systemctl restart sshd
验证新端口是否生效:
sudo ss -tuln | grep 2222
如果看到类似以下输出,说明配置成功:
LISTEN 0 128 0.0.0.0:2222 0.0.0.0:*
重要:在关闭当前 SSH 会话之前,先测试新端口是否可以连接:
ssh -p 2222 username@your_server_ip
确保可以正常登录后再关闭当前会话。
2. 配置防火墙限制 SSH 访问来源
通过防火墙限制 SSH 访问来源,可以只允许特定的 IP 地址或 IP 段访问 SSH 服务,进一步提升安全性。
操作步骤:
确保防火墙(firewalld)已启用并运行:
sudo systemctl enable firewalld
sudo systemctl start firewalld
添加新的 SSH 端口到防火墙:
sudo firewall-cmd --permanent --add-port=2222/tcp
移除默认的 SSH 端口(22):
sudo firewall-cmd --permanent --remove-service=ssh
限制 SSH 访问来源(例如只允许 192.168.1.0/24 网段访问):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="2222" protocol="tcp" accept'
如果需要允许单个 IP 地址(如 203.0.113.10):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port port="2222" protocol="tcp" accept'
重新加载防火墙配置:
sudo firewall-cmd --reload
查看防火墙规则,确认配置是否生效:
sudo firewall-cmd --list-all
输出应包含类似以下内容:
ports: 2222/tcp
rich rules:
rule family="ipv4" source address="192.168.1.0/24" port port="2222" protocol="tcp" accept
3. 测试配置
从允许的 IP 地址尝试连接 SSH:
ssh -p 2222 username@your_server_ip
确保可以正常登录。
从不允许的 IP 地址尝试连接 SSH:
ssh -p 2222 username@your_server_ip
应该无法连接,提示超时或拒绝连接。
4. 其他注意事项
备份配置文件:在修改 SSH 或防火墙配置之前,建议备份相关文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo cp /etc/firewalld/zones/public.xml /etc/firewalld/zones/public.xml.bak
多端口支持:如果需要同时支持多个 SSH 端口(如 22 和 2222),可以在 /etc/ssh/sshd_config 中添加多行 Port 配置:
Port 22
Port 2222
SELinux 配置:如果启用了 SELinux,需要允许新端口:
sudo semanage port -a -t ssh_port_t -p tcp 2222
总结
通过修改 SSH 默认端口和配置防火墙限制访问来源,可以显著提升 CentOS 系统的安全性,减少 SSH 服务被攻击的风险。建议定期审查防火墙规则和 SSH 配置,确保系统安全。