安全第一!为你的openSUSE Tumbleweed SSH服务器做这几件小事(密钥登录+改端口+禁用root)
三招强化openSUSE Tumbleweed的SSH安全防线
每次看到服务器日志里密密麻麻的暴力破解尝试,我都忍不住倒吸一口凉气。上周帮朋友排查一台被入侵的服务器,原因正是默认SSH配置留下的安全隐患——22端口开放、root账号可登录、仅靠密码认证。这就像把家门钥匙挂在门把手上,还贴了张写有"欢迎光临"的纸条。作为openSUSE Tumbleweed的长期用户,我想分享三个简单却极其有效的安全加固措施,让你的SSH服务从"易攻难守"变成"铜墙铁壁"。
1. 密钥登录:告别密码时代的终极方案
密码认证就像用纸糊的锁,而密钥对认证则是银行金库级别的防护。去年某云服务商的统计显示,使用密钥认证的服务器遭受暴力破解的成功率直降99.8%。下面让我们在openSUSE上部署这套安全机制。
1.1 生成专属密钥对
首先在客户端(你的日常使用电脑)生成RSA 4096位密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"执行后会询问保存路径(直接回车用默认位置)和密码短语(建议设置)。生成的id_rsa.pub就是我们要用的公钥。
1.2 部署公钥到服务器
使用ssh-copy-id一键部署(确保先用密码登录一次服务器):
ssh-copy-id -i ~/.ssh/id_rsa.pub username@your_server_ip或者手动操作:
- 查看公钥内容:
cat ~/.ssh/id_rsa.pub - 登录服务器,将公钥内容追加到
~/.ssh/authorized_keys - 设置正确权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
1.3 强制密钥认证
编辑SSH服务端配置:
sudo nano /etc/ssh/sshd_config找到并修改以下参数:
PasswordAuthentication no PubkeyAuthentication yes重启服务生效:
sudo systemctl restart sshd重要提示:在关闭密码认证前,务必先测试密钥登录是否正常工作!建议保持两个终端窗口,一个测试密钥登录,另一个作为备用。
2. 修改默认端口:避开自动化攻击的雷达
22端口就像黑客的自动导航目标。根据Shodan的扫描数据,标准SSH端口接收的攻击尝试是非标准端口的200倍以上。让我们给openSUSE换个"隐形门牌号"。
2.1 选择合适端口
端口选择有讲究:
- 避免使用常见服务端口(如80、443)
- 建议在49152-65535范围内选择
- 避开已知易受攻击的端口
我常用54321,既好记又不易冲突。
2.2 修改SSH配置
继续编辑/etc/ssh/sshd_config:
Port 543212.3 更新防火墙规则
openSUSE使用firewalld管理防火墙:
sudo firewall-cmd --permanent --remove-service=ssh sudo firewall-cmd --permanent --add-port=54321/tcp sudo firewall-cmd --reload2.4 测试新端口连接
使用指定端口连接测试:
ssh -p 54321 username@your_server_ip确认无误后,可以彻底关闭原22端口:
sudo firewall-cmd --permanent --remove-port=22/tcp sudo firewall-cmd --reload3. 禁用root登录:切断最高权限的直接通道
root账户就像服务器的王冠,直接暴露它等于邀请黑客来加冕。统计显示,禁用root远程登录可阻止约65%的自动化攻击尝试。
3.1 创建替代管理员账户
先创建一个具有sudo权限的普通用户:
sudo useradd -m -G wheel adminuser sudo passwd adminuser3.2 配置SSH禁止root登录
编辑/etc/ssh/sshd_config:
PermitRootLogin no3.3 验证配置
重启SSH服务后,尝试用root直接登录应该会被拒绝:
ssh root@your_server_ip而通过普通用户登录后,可以用sudo -i切换root权限。
4. 额外加固:多一层防护多一分安心
除了上述三大措施,还有几个锦上添花的加固建议:
4.1 限制登录尝试频率
编辑/etc/ssh/sshd_config添加:
MaxAuthTries 3 LoginGraceTime 1m4.2 使用fail2ban自动封禁
安装并配置fail2ban:
sudo zypper install fail2ban sudo systemctl enable --now fail2ban创建自定义jail配置:
sudo nano /etc/fail2ban/jail.d/sshd.local添加内容:
[sshd] enabled = true port = 54321 maxretry = 3 bantime = 1h4.3 定期更新系统
保持openSUSE Tumbleweed最新:
sudo zypper refresh sudo zypper update操作后的完整检查清单
实施所有修改后,建议运行以下检查:
密钥登录测试:
ssh -p 54321 adminuser@your_server_iproot登录测试(应失败):
ssh -p 54321 root@your_server_ip密码登录测试(应失败):
ssh -p 54321 -o PreferredAuthentications=password adminuser@your_server_ip检查服务状态:
sudo systemctl status sshd sudo systemctl status fail2ban查看防火墙规则:
sudo firewall-cmd --list-all
记得把这些安全设置记录下来,特别是自定义端口号和新建的管理员账户信息。我在自己的密码管理器中专门建了一个"服务器SSH配置"分类存放这些关键信息。
