| ➔ | SSH是Linux/Unix服务器最重要的远程管理通道,也是黑客暴力破解的首要目标。本文将详细介绍在Ubuntu 24.04系统上对SSH进行安全加固的完整步骤。 |
▶一、安装与基本配置
首先确保OpenSSH服务已安装并运行:
code
apt update && apt install -y openssh-server
# 确认服务状态
systemctl status sshd 或 service sshd status
▶二、修改默认端口
将SSH默认端口22改为高位端口(建议1024-65535),规避自动化扫描攻击:
code
vim /etc/ssh/sshd_config
# 修改以下行
Port 2222
# 注释掉原来的 #Port 22
修改后重启服务并配置防火墙:
code
systemctl restart ssh
ufw allow 2222/tcp
特别注意:在退出当前SSH会话前,务必另开一个终端测试新端口是否能连接,避免把自己锁在服务器外!
▶三、禁用root直接登录
code
# 创建普通管理用户
useradd admin
passwd admin
usermod -aG wheel admin # CentOS/RHEL
# 或 usermod -aG sudo admin # Ubuntu/Debian
# SSH配置中设置
PermitRootLogin no
▶四、配置密钥登录
密钥登录比密码登录安全得多,推荐使用ed25519算法:
code
# 本地生成密钥对
ssh-keygen -t ed25519 -C "admin@example.com"
# 复制公钥到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 admin@服务器IP
# 确认密钥登录正常后,再禁用密码登录
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
▶五、安装Fail2ban防暴力破解
code
# CentOS/RHEL
yum install -y epel-release && yum install -y fail2ban
# Ubuntu/Debian
apt install -y fail2ban
# 配置规则
cat > /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
EOF
systemctl restart fail2ban
▶六、其他安全建议
- ●设置空闲超时:ClientAliveInterval 300、ClientAliveCountMax 0
- ●限制可登录用户:AllowUsers admin user1
- ●仅使用SSH协议版本2:Protocol 2
- ●定期审计:lastb 查看失败登录记录
- ●配置防火墙白名单,仅允许特定IP访问SSH端口
▶七、SSH日志审计配置
code
# 开启SSH详细日志
# /etc/ssh/sshd_config 添加
LogLevel VERBOSE
# 查看SSH登录记录
journalctl -u sshd | grep "Failed password"
journalctl -u sshd | grep "Accepted"
# 实时监控SSH登录
tail -f /var/log/auth.log | grep sshd
# 或
tail -f /var/log/secure | grep sshd
▶八、客户端配置优化
服务端加固后,客户端配置也同样重要:
code
# ~/.ssh/config 配置文件
Host myserver
HostName 服务器IP
Port 2222
User admin
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
ServerAliveCountMax 3
# 使用SSH隧道安全访问内网服务
ssh -L 8080:localhost:80 admin@跳板机IP -p 2222
▶九、多因素认证(MFA)
对于高安全环境,可进一步叠加MFA:
code
# 安装Google Authenticator
# Ubuntu/Debian
apt install -y libpam-google-authenticator
# CentOS/RHEL
yum install -y google-authenticator
# 为用户配置
google-authenticator
# 修改PAM配置
echo "auth required pam_google_authenticator.so" >> /etc/pam.d/sshd
# SSH配置开启Challenge-Response
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
▶十、日常安全检查清单
- ●每日检查 /var/log/auth.log 或 /var/log/secure 中的异常登录
- ●每周检查fail2ban状态:fail2ban-client status sshd
- ●每月审计SSH用户列表:cat /etc/ssh/sshd_config | grep AllowUsers
- ●定期更新系统和openssh软件包
- ●检查SSH密钥有效期,及时轮换