CentOS SSH服务与防火墙
CentOS 9 防火墙与SSH服务安全配置实战 远程管理Linux 服务器 SSH是最常用的协议 CentOS 9 默认 firewalld 防火墙
1. 基础环境验证
首先检查SSH服务是否已安装并运行
systemctl status sshd启动并设置开机自启
systemctl enable --now sshd
接下来验证firewalld防火墙状态
firewall-cmd --state返回"running" 说明防火墙已启用
常见问题排查 如果 ifconfig 命令不可用, 安装net-tools包
yum install net-tools -y2. firewalld 核心配置
2.1 开放SSH默认端口
允许22端口的入站连接是最基础的一步
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload验证规则是否生效
firewall-cmd --list-services | grep ssh
注意
–permanent 参数使规则永久生效 必须配合 --reload 才能立即应用
2.2 源IP访问限制(企业级安全实践)
为提高安全性 允许SSH连接的源IP范围 假设只允许192.168.1.0/24网段访问
firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.0/24” service name=“ssh” accept’
firewall-cmd --reload验证富规则
firewall-cmd --list-rich-rules
2.3 自定义SSH端口配置
修改默认SSH端口是常见的安全加固措施 编辑SSH配置文件
vim /etc/ssh/sshd_config找到 #Port 22 行,取消注释并修改为
Port 2222
然后添加新端口到防火墙
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload重启SSH服务使更改生效
systemctl restart sshd
3. 高级安全加固策略
3.1 密钥认证配置
密码认证存在被暴力破解的风险,推荐使用更安全的密钥认证方式
在客户端生成密钥对
ssh-keygen -t rsa -b 4096
将公钥 上传至服务器
ssh-copy-id -p 2222 user@server_ip
然后在服务器上禁用密码认证
vim /etc/ssh/sshd_config
修改以下参数
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
3.2 会话超时与登录限制
为防止闲置会话长期占用连接,设置客户端存活检测
ClientAliveInterval 300
ClientAliveCountMax 2
限制单个IP的最大并发连接数
firewall-cmd --permanent --add-rich-rule=‘rule service name=“ssh” accept limit value=“3/m” log’
3.3 SELinux与防火墙协同工作
当修改SSH端口后 需要更新 SELinux 策略
semanage port -a -t ssh_port_t -p tcp 2222
验证端口映射
semanage port -l | grep ssh
4. 故障排查与日常维护
4.1 连接问题诊断流程
当SSH连接失败时,建议按以下顺序排查 网络连通性
ping server_ip
telnet server_ip 22
服务状态检查
systemctl status sshd
journalctl -u sshd -n 30
防火墙规则验证
firewall-cmd --list-all
SELinux审计日志
ausearch -m avc -ts recent
4.2 配置备份与恢复 定期备份防火墙规则
firewall-cmd --runtime-to-permanent
firewall-cmd --backup > firewall_backup.xml
恢复配置
firewall-cmd --restore=firewall_backup.xml
4.3 性能优化建议
对于高并发SSH访问场景 可调整以下参数
MaxStartups 10:30:60
MaxSessions 10在firewalld中启用连接追踪可提升性能
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
通过以上配置 解决 SSH连接问题 实际运维中 定期审查防火墙规则和SSH访问日志 发现并阻断异常连接尝试