悠悠楠杉
Linux日常运维:SSHD安全配置指南(一)
一、为什么需要关注SSHD配置?
作为Linux运维工程师,每天最常打交道的服务莫过于SSHD(Secure Shell Daemon)。这个看似简单的远程管理工具,却直接关系到服务器的"生死存亡"。记得去年某企业就因默认22端口暴露,遭遇了暴力破解导致的数据泄露。今天我们就从实战角度,聊聊如何给SSHD穿上"防弹衣"。
二、基础配置篇:三步建立安全基线
1. 修改默认端口(最立竿见影的措施)
打开/etc/ssh/sshd_config
文件,找到这一行:
```bash
Port 22
```
去掉注释并更换端口(建议选择1024-65535之间的高位端口):
bash
Port 58234
注意:
- 修改后需同步更新SELinux策略:semanage port -a -t ssh_port_t -p tcp 58234
- 防火墙务必放行新端口
- 建议保留22端口1周作为过渡
2. 禁用root直接登录
找到以下配置项:
```bash
PermitRootLogin yes
改为:
bash
PermitRootLogin no
```
之后新建普通用户并授予sudo权限,这样即使攻击者猜到密码,也无法直接获取最高权限。
3. 密码策略双重加固
组合以下两个参数效果更佳:
bash
MaxAuthTries 3 # 限制尝试次数
PasswordAuthentication no # 强制使用密钥登录
三、密钥登录实战:比密码更安全的方案
```bash
客户端生成密钥对(执行后连续回车)
ssh-keygen -t ed25519
将公钥上传至服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server -p 58234
```
服务器端需确认配置包含:
bash
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
实用技巧:
给密钥加上密码短语更安全:
bash
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/work_key
四、容易被忽视的细节配置
日志监控:
/var/log/secure
里藏着重要信息,建议每天检查失败登录:
bash grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c
超时控制:
防止闲置连接占用资源:
bash ClientAliveInterval 300 ClientAliveCountMax 2
版本控制:
禁用老旧协议:
bash Protocol 2
五、典型问题排查
Q:修改配置后无法连接?
A:四步救命法:
1. ssh -v
查看详细错误
2. 本地测试sshd -t
检查语法
3. 通过控制台检查服务状态systemctl status sshd
4. 临时启用telnet作为备用通道
Q:大量暴力破解尝试怎么办?
推荐组合方案:
- fail2ban自动封禁
- 更改端口+密钥登录
- 云服务器建议启用安全组白名单
下期预告:我们将深入探讨SSH隧道、端口转发等高级功能,以及如何通过LDAP实现集中化管理。欢迎在评论区留下你的具体应用场景,说不定会成为下期的典型案例哦!
运维心得:安全配置没有"一劳永逸",建议每季度复查SSH配置,同时关注CVE安全公告。最近OpenSSH 8.8版本就修复了多个漏洞,你的服务器升级了吗?
```