SSH服务安全配置:从端口到密钥认证
服务器安全加固的第一道防线是SSH服务。默认SSH配置存在多项安全隐患:22端口被自动化扫描工具持续探测,root密码登录暴露暴力破解面,密码认证方式容易被字典攻击击穿。生产环境必须对SSH进行多层防护配置。
修改SSH配置文件/etc/ssh/sshd_config,关键参数如下:
# 修改默认端口
Port 58922
# 禁止root直接登录
PermitRootLogin no
# 禁止密码认证,仅允许密钥登录
PasswordAuthentication no
PubkeyAuthentication yes
# 限制最大认证尝试次数
MaxAuthTries 3
# 空闲超时自动断开
ClientAliveInterval 300
ClientAliveCountMax 0
# 限制登录用户白名单
AllowUsers deploy admin
# 禁止X11转发
X11Forwarding no
# 限制允许的加密算法
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
密钥对生成与部署流程:在客户端执行ssh-keygen -t ed25519 -b 521生成密钥对,将公钥写入服务器~/.ssh/authorized_keys文件,设置权限为600。建议为不同运维人员分配独立密钥对,便于审计追溯。密钥添加密码短语(passphrase)增加一层保护,即使私钥泄露攻击者也无法直接使用。
配置修改后执行systemctl restart sshd重启服务。务必保持当前SSH会话不断开,另开终端验证新配置可用后再关闭旧连接,避免配置错误导致无法远程登录。
iptables防火墙规则配置:端口访问控制
iptables是Linux内核级防火墙,通过规则链对网络包进行过滤。服务器安全加固的核心策略是默认拒绝所有入站流量,仅放行必要端口。
基础规则配置脚本:
# 清除现有规则
iptables -F
iptables -X
iptables -Z
# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 放行SSH端口(限制来源IP)
iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 58922 -j ACCEPT
# 放行Web服务端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 防止SYN Flood攻击
iptables -A INPUT -p tcp --syn -m limit --limit 20/s --limit-burst 40 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
# 防止Ping洪水
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
# 记录被拒绝的连接
iptables -A INPUT -j LOG --log-prefix "iptables-dropped: " --log-level 4
# 保存规则
iptables-save > /etc/iptables/rules.v4
使用iptables-persistent包实现规则持久化,避免重启后规则丢失:
apt install iptables-persistent -y
netfilter-persistent save
netfilter-persistent reload
fail2ban配置:自动封禁暴力破解IP
fail2ban通过监控日志文件自动封禁异常IP,是服务器安全加固的重要补充。当某个IP在短时间内触发多次认证失败,fail2ban自动调用iptables将其封禁。
安装与配置:
apt install fail2ban -y
创建本地配置文件/etc/fail2ban/jail.local:
[DEFAULT]
# 封禁时间(秒)
bantime = 86400
# 检测时间窗口
findtime = 600
# 最大失败次数
maxretry = 3
# 封禁动作
banaction = iptables-multiport
[sshd]
enabled = true
port = 58922
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 7200
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
logpath = /var/log/nginx/error.log
maxretry = 5
bantime = 3600
启动并设置开机自启:systemctl enable fail2ban && systemctl start fail2ban。使用fail2ban-client status sshd查看SSH防护状态,包括当前被封禁的IP列表和失败统计。
Linux内核参数安全加固
内核参数调优既能提升性能也能增强安全性。修改/etc/sysctl.conf文件:
# 禁用IP转发(非路由器场景)
net.ipv4.ip_forward = 0
# 禁用源路由
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# 启用反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# 禁用发送ICMP重定向
net.ipv4.conf.all.send_redirects = 0
# 忽略ICMP广播请求(防止Smurf攻击)
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 启用SYN Cookie防护
net.ipv4.tcp_syncookies = 1
# 增加文件描述符上限
fs.file-max = 655350
# TCP连接相关参数
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_tw_reuse = 1
# 内存参数
vm.swappiness = 10
vm.overcommit_memory = 1
执行sysctl -p使配置生效。修改前建议备份原配置文件cp /etc/sysctl.conf /etc/sysctl.conf.bak,便于回滚。
文件系统权限与审计配置
高可用集群中的服务器需要严格的文件权限管理。关键系统文件权限检查清单:
# 设置关键文件权限
chmod 600 /etc/passwd-
chmod 600 /etc/shadow-
chmod 600 /etc/group-
chmod 600 /etc/gshadow-
chmod 644 /etc/passwd
chmod 644 /etc/group
# 禁止SUID权限的二进制文件
find / -perm -4000 -type f 2>/dev/null
# 移除不必要的SUID
chmod u-s /usr/bin/chage
chmod u-s /usr/bin/chfn
chmod u-s /usr/bin/chsh
chmod u-s /usr/bin/gpasswd
# 设置/home目录权限
chmod 700 /home/*
启用auditd审计服务监控关键文件变更:
apt install auditd -y
# 监控/etc/passwd修改
auditctl -w /etc/passwd -p wa -k identity
# 监控/etc/shadow修改
auditctl -w /etc/shadow -p wa -k identity
# 监控sudoers文件
auditctl -w /etc/sudoers -p wa -k actions
# 查看审计日志
ausearch -k identity
定期使用lynis audit system进行安全扫描,该工具输出详细的安全评分和加固建议清单。将扫描结果纳入服务器故障排查和运维巡检流程,确保安全基线持续达标。
系统自动更新与漏洞修复
服务器安全加固是持续性工作,系统补丁及时安装至关重要。配置unattended-upgrades实现安全更新自动安装:
apt install unattended-upgrades apt-listchanges -y
dpkg-reconfigure -plow unattended-upgrades
编辑/etc/apt/apt.conf.d/50unattended-upgrades,配置仅安装安全更新:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
对于IDC数据中心的生产服务器,建议先在测试环境验证补丁兼容性,再通过自动化工具(如Ansible Playbook)批量推送更新。算力资源规划时预留维护窗口,避免更新操作影响业务连续性。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-an-quan-jia-gu-checklist-ssh-fang-hu-yu/