最近有朋友在使用其云否主机时,发现SSH一直在被人暴力扫描,虽然说SSH账号和密码始终没有被猜出来,但是老是被人盯着恐怕迟早要出事。于我帮他设置了S-S-H登录白名单,即只允许自己的IP登录访问,其它的IP一概拒绝。

其实,要保证S-S-H不被破解,最简单的方法就是修改默认的22端口,例如我们用的经典VPS,VPS在创建时就默认修改了22端口。最彻底的方法,是禁止使用账号密码登录,而是改用密钥登录,只要保证密钥安全,服务器也没有人能进入了。

本篇文章就来分享一下Linux VPS主机和服务器安全防护一些基本的方法,例如修改SSH的端口;给SSH登录添加白名单,仅允许自己的IP访问;也可设置密钥登录,禁止密码登录,这样破解者就“无门可入”了。

当然,有经验的朋友还可以直接关闭S-S-H登录,如果已经安装了像宝塔BT面板WDCP面板,则可以直接在面板的后台选择关闭S-S-H,或者手动关闭它们。有些商家例如阿里云腾讯云等还自带了安全组,你也可以在安全组中选择临时屏蔽22等端口,等到自己要用的时候再手动去开启端口,虽然有点麻烦,但是却是比较简单方便的方法。

Linux VPS主机和服务器安全防护:SSH修改端口,添加白名单和设置密钥登录

更多的关于服务器安全以及建站教程,这里有:

  1. 改进网站站内搜索-百度,Google自定义搜索和Elasticsearch自建搜索
  2. 十个你可能不知道的CloudFlare免费CDN加速技巧-SSLDDOSCache
  3. WordPress开启Nginx fastcgi_cache缓存加速方法-Nginx配置实例

PS:2020年3月19日更新,如果你的网站已经被黑了,可以参考如下方法来解决:网站挂木马和服务器被黑排查分析-VPS主机和服务器强化安全方法

一、修改默认端口

默认的端口是22,这样很容易被人破解,我们可以修改端口号为其它的。命令:

#SSH服务的启动与停止
service sshd status        # 状态
service sshd start         # 启动
service sshd stop          # 暂停
service sshd restart       # 重启

#改完端口后记得在防火墙放行,例如
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
#保存防火墙规则并重启
/etc/init.d/iptables save
service iptables restart

#修改端口号
#主配置文件:/etc/ssh/sshd_config

Port 22

5.1  生成公钥与私钥

最简单的方法就是直接在Linux VPS主机上使用命令快速生成:

# 生成 SSH 密钥对
[root@wzfoume ~]# ssh-keygen -t rsa  
Generating public/private rsa key pair.
# 建议直接回车使用默认路径 
Enter file in which to save the key (/root/.ssh/id_rsa): 
# 输入密码短语(留空则直接回车)
Enter passphrase (empty for no passphrase): 
# 重复密码短语 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
e3:62:aa:0f:28:87:8f:2e:dd:fb:f0:59:fb:24:07:4a root@wzfoume
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|                 |
|      E S        |
| o   . o o       |
|+.o.. + + o      |
|o+...= + =       |
|+.oo+o+ ...      |
+-----------------+
[root@wzfoume ~]#

生成的密钥你可以在root下的.ssh文件下找到。

配置修改如下图:

5.3  禁用密码登录

现在你在使用Xshell或者Putty连接时就可以选择使用密钥了。

确认密钥连接没有问题时,就可以禁用密码登录,仅限密钥登录了。方法是:修改/etc/ssh/sshd_config文件,将PasswordAuthentication yes 修改成 PasswordAuthentication no;最后,重启sshd。

六、总结

对于S-S-H安全的问题,我们一定要引起足够的重视,最简单的操作就是设置一个复杂一点的密码+修改默认的S-S-H端口,这个操作可以阻止一大部分的暴力扫描。

选择关闭S-S-H也会给自己造成不便,稳妥一点的方法就是禁止密码登录,改用密钥登录。同时,公钥与私钥分开存放,一旦发生泄露也很容易被人识破。