前言
今天同事说他前几天买的xx云的服务器,被暴力破解了。然后我偷偷看了下我自己买的云服务器,不看不知道,一看吓一跳。
lastb
lastb
用于列出登入系统失败的用户相关信息。
# 显示前10行,显示的行数可以通过参数 -n 指定
$ lastb | head
我们可以通过ip地址查询,查询到登录失败的ip地址信息
如何防止别人暴力破解
修改ssh
端口
$ vim /etc/ssh/sshd_config
把端口22
修改成其他端口,保存:wq
,然后重启sshd
服务
$ systemctl restart sshd.service
重新连接服务器的时候,需要修改连接端口
$ ssh root@host -p port
禁用密码登录,用RSA
公钥登录
所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个:
$ ssh-keygen
运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。
运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。
这时再输入下面的命令,将公钥传送到远程主机host上面:
$ ssh-copy-id user@host
好了,从此你再登录,就不需要输入密码了。
如果还是不行,就打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行前面"#"注释是否取掉。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然后,重启远程主机的ssh服务。
$ systemctl restart sshd.service
测试用密钥登录
$ ssh -i .ssh/id_rsa root@host -p port
登录成功后,可以关闭密码登录
$ vim /etc/ssh/sshd_config
打开远程主机的/etc/ssh/sshd_config
这个文件,将 PasswordAuthentication yes
修改为 PasswordAuthentication no
PasswordAuthentication no
重启sshd
服务
$ systemctl restart sshd.service
小结
其实也不用上面的操作,把密码设置复杂一点也行。