SSH弱密码分析报告

放在公网中的服务器总免不了被各种漏洞扫描工具扫描,比如每次登录服务器都能看到几千到几万次的ssh登录记录。
本次实验通过在服务器上架设SSH蜜罐,收集了三百万条登录记录。

简介

几乎每次登录服务器的时候,都会看到这样的提示:

There were 91 failed login attempts since the last successful login.

从上次登录成功后,共有91次失败的登录。登录失败的记录大多来源于恶意扫描脚本,这些恶意脚本一旦发现存活的主机,将不停地猜测主机的密码。

这些登录失败的记录可以使用命令sudo lastb查看,其中包含了用户名、登录IP和登录时间等信息,如下:

guest    ssh:notty    120.131.0.201    Fri Jun  7 13:21 - 13:21  (00:00)    
root     ssh:notty    218.92.0.185     Fri Jun  7 13:21 - 13:21  (00:00)    
root     ssh:notty    218.92.0.185     Fri Jun  7 13:21 - 13:21  (00:00)    
root     ssh:notty    218.92.0.185     Fri Jun  7 13:21 - 13:21  (00:00)    
root     ssh:notty    218.92.0.185     Fri Jun  7 13:21 - 13:21  (00:00)    
root     ssh:notty    218.92.0.185     Fri Jun  7 13:21 - 13:21  (00:00)    
root     ssh:notty    218.92.0.185     Fri Jun  7 13:21 - 13:21  (00:00)    
ftptest  ssh:notty    112.64.34.165    Fri Jun  7 13:21 - 13:21  (00:00)   

安全起见,上述登录记录没有记录下登录密码。要想把尝试登录服务器的密码记录下来,可以搭建一个ssh蜜罐系统,例如 ssh-honeypot(注:蜜罐系统可能存在后门、漏洞,谨慎使用)。

本次实验在公网服务器上搭建ssh蜜罐系统,运行大概2个月时间,记录下大约350多万条登录记录,登录密码去重后有77532个,攻击源IP有4170个。

用户名统计

在尝试登录的所有用户名中,root用户占比大约99%,稳居第一,其次是admin。排序前30的依次是:

    频次 => 用户名
3538394 => root
   6602 => admin
   1689 => test
   1409 => user
   1330 => ubnt
    792 => oracle
    619 => guest
    605 => support
    433 => nbpt
    388 => ubuntu
    388 => postgres
    373 => nagios
    351 => pi
    351 => ftpuser
    325 => git
    309 => ftp
    302 => adm
    291 => 1234
    277 => temp
    263 => default
    245 => usuario
    228 => mysql
    221 => 111111
    206 => manager
    204 => user1
    203 => operator
    203 => administrator
    200 => butter
    199 => hadoop
    186 => super

除root之外用户名中,大部分来自应用程序默认创建的用户,例如git, oracle, postgres, mysql, hadoop, ftp等。如果这些用户没有被禁止登录ssh,则可能被恶意用户利用,以登录到主机。

密码统计

如果你在网上搜索”弱密码榜单“,你会发现123456这个密码总是排在第一位。在本此实验中,123456也意料之中地排在第一位。频次排序前30的密码分别是:

频次 => 密码
6184 => 123456
4745 => password
3983 => root
3242 => root123
3214 => ubuntu
2896 => centos6svm
2889 => passwrod
1689 => admin
1443 => 1234
1126 => 123
1122 => 12345
 750 => test
 719 => wubao
 642 => ubnt
 590 => user
 565 => qwerty
 548 => 1
 545 => 111111
 527 => admin123
 504 => raspberry
 475 => default
 469 => 12345678
 467 => support
 464 => abc123
 455 => a
 430 => 1qaz2wsx
 412 => 123123
 409 => oracle
 405 => guest
 404 => toor

从上述密码中可以看出,部分密码可能为系统安装后的默认密码,例如rootubuntucentos6svmraspberrytoor等。

ssh安全建议

  1. 系统安装完成后,如有默认密码,请立即修改;
  2. 修改ssh服务端口;
  3. 禁用root登录,或禁止root使用密码登录(99%的登录记录使用root用户);
  4. 禁止应用创建的用户登录bash shell,例如git、mysql等用户;
  5. 使用强度高的密码;
  6. 不与其它系统使用相同的密码,防止撞库攻击;
  7. 设置密码过期时间,定期修改密码。