- 更换ssh默认端口
- 禁止root账号远程登陆
- 禁止使用空白密码的用户访问
- 限制密码尝试次数
- 使用密钥对验证登录
vim /etc/ssh/sshd_config
17 Port 22
18 Port 62367
## 在第十七行后添加一行 PORT 指定你想要连接的端口 ## 原有的22暂时不要删除
重启ssh服务,查看是否能正常监听62367端口
systemctl restart sshd
netstat -tunlp | grep ssh
# systemctl 管理服务
# netstat 查看系统监听端口
如图,sshd服务已监听62367端口,经测试,通过62367端口能正常远程连接
# 重新编辑ssh配置文件
vim /etc/ssh/sshd_config
18 Port 62367
# 删除第17行文本
# 而后再次重启服务
systemctl restart sshd
netstat -tunlp | grep ssh
# ssh服务监听端口已更改为只监听62367端口
如图,sshd服务仅监听62367端口
useradd exampleroot
passwd exampleroot
# useradd 创建一个新用户。
# passwd 命令用于为新用户分配密码。为安全性所考虑,我们需要设置一个较为复杂的密码。
并为exampleroot设置sudo提权,以便控制系统
echo "exampleroot ALL=(root) ALL" /etc/sudoers.d/exmapleroot
## 此项可以配置exampleroot用户的sudo提权
编辑ssh配置文件,修改禁止root用户远程登录,重启服务验证
vim /etc/ssh/sshd_config
47 PermitRootLogin no
## 将yes更改为no
systemctl restart sshd
## 重启服务
如图root登录失败
而exampleroot可以远程登录
vim /etc/ssh/sshd_config
73 PermitEmptyPasswords no
## 更改为no
systemctl restart sshd
## 重启服务生效
vim /etc/ssh/sshd_config
49 MaxAuthTries 3
## 取消注释,设置为密码错误3次后则断开连接
systemctl restart sshd
## 重启服务生效
对于更换端口,无论是更换为什么端口,仍然被轻易探测到并疯狂爆破,所以更换端口是一个治标不治本的办法。
而使用密钥对登录才是真正的杀手锏,毕竟普通密码也许可以试出来,私钥试到下下辈子试到沧海桑田也不一定试得出来。
在本地执行以下指令生成使用 ed25519 算法生成的公私密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"
# 执行后需要四次回车,则会成功生成
# ed25519算法,相比 RSA 更安全,密钥反而还更短
# 密钥文件所在位置 ~/.ssh/id_ed25519
最后使用这个指令把公钥复制到需要访问的服务器的~/.ssh/authorized_keys中
ssh-copy-id username@IP
# 当然,也可以手动把公钥复制到对应机器的 ~/.ssh/authorized_keys 里。
总结
除上述的五种方法外,还有一些比较常用的防御手法,比如:配置防火墙相关规则进行封禁、配置白名单IP访问ssh服务、以及Fail2Ban等相关其他工具进行封禁;其他方法的使用技巧我们下回再聊。
想了解更多干货,可通过下方扫码关注
可扫码添加上智启元官方客服微信👇