1.缘由
主机系统:centos7
今天用ssh登录vps的时候显示以下信息:
Last failed login: Sat Sep 1 11:55:01 UTC 2018 from 112.85.42.201 on ssh:notty
There were 594 failed login attempts since the last successful login.
有594次登陆失败,应该是被扫描了。
last
命令用于显示用户最近登录信息。单独执行last命令,它会读取/var/log/wtmp
的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。用last
查看一下,还好,只有自己登录过。
lastb
命令用于显示用户错误的登录列表,此指令可以发现系统的登录异常。单独执行lastb
命令,它会读取位于/var/log
目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来。执行一下:
support ssh:notty 59.41.66.141 Sat Sep 1 12:05 - 12:05 (00:00)
support ssh:notty 59.41.66.141 Sat Sep 1 12:05 - 12:05 (00:00)
paul ssh:notty 132.232.23.12 Sat Sep 1 11:57 - 11:57 (00:00)
paul ssh:notty 132.232.23.12 Sat Sep 1 11:57 - 11:57 (00:00)
root ssh:notty 112.85.42.201 Sat Sep 1 11:55 - 11:55 (00:00)
root ssh:notty 112.85.42.201 Sat Sep 1 11:54 - 11:54 (00:00)
root ssh:notty 112.85.42.201 Sat Sep 1 11:54 - 11:54 (00:00)
root ssh:notty 112.85.42.201 Sat Sep 1 11:54 - 11:54 (00:00)
root ssh:notty 112.85.42.201 Sat Sep 1 11:54 - 11:54 (00:00)
root ssh:notty 112.85.42.201 Sat Sep 1 11:54 - 11:54 (00:00)
root ssh:notty 112.85.42.201 Sat Sep 1 11:54 - 11:54 (00:00)
root ssh:notty 112.85.42.201 Sat Sep 1 11:54 - 11:54 (00:00)
root ssh:notty 112.85.42.201 Sat Sep 1 11:54 - 11:54 (00:00)
可怕,一直在被扫描,查看一下有多少条记录:
# lastb > loginFuailure.log
# wc -l loginFuailure.log
1008 loginFuailure.log
已经有1008次尝试了。
2.常用解决办法
采用如下做法:
- 更换22端口
- 改用密钥和公钥配对登陆SSH,禁止密码登录
- 限制密码出错次数
- 禁止root登陆
2.1 修改22端口
参考:CentOS7增加或修改SSH端口号
1.修改配置文件:
$ vim /etc/ssh/sshd_config
找到 #Port 22
这一行,去除注释,开放22端口,再复制一行修改为其他端口。先保留了22端口,是为了防止之后因为各种权限和配置问题,导致连22端口不能访问,那就玩脱了。等可以使用其他端口登录了,再关闭22端口。
重启后不要急于退出终端去尝试能否登录,新开一个终端去尝试能否登录,我就忘了修改防火墙直接退出了,于是怎么也登录不上,即使端口是对的。还好vultr提供有网页的控制台可以用密码登陆。
2.SELinux
查看SELinux是否开启:
# getenforce
Disabled
我这里是关闭的,不需要做相关的配置。
3.防火墙:
# firewall-cmd --permanent --query-port=xxxxx/tcp
no
# firewall-cmd --permanent --add-port=xxxxx/tcp
success
# firewall-cmd --reload
success
# firewall-cmd --permanent --query-port=xxxxx/tcp
yes
4.重启:
# systemctl restart sshd
# systemctl restart firewalld.service
再用默认端口是登不上的:
#ssh [email protected] -p 22
ssh: connect to host xx.xx.xx.xx port 22: Connection refused
必须要使用修改过后的端口。
2.2 禁止使用密码登录
注意:需要先配置好私钥登录,不然把密码登录禁用了就没有办法登录了。
编辑/etc/ssh/sshd_config
将PasswordAuthentication参数值修改为no: PasswordAuthentication no
重启ssh服务:systemctl restart sshd
2.3 限制密码出错次数
#vim /etc/pam.d/sshd
#%PAM-1.0
auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root
_unlock_time=1000
禁止root登陆:
如有需要可添加用户:
# adduser name
# passwd name
修改配置文件:
编辑/etc/ssh/sshd_config :
PermitRootLogin no //阻止root用户登陆
AllowUsers name //允许制定用户使用SSH登陆,name改为你允许的用户名
重启服务:
#systemctl restart sshd
其他参考
我有个问题:ssh:notty
是什么意思?
参考:
ssh端口更改后无法登录问题