[SSH防爆破解]20170319更行适应centos7—-Centos6-VPS防止SSH暴力登录尝试攻击

2014年12月19日21:07:09 发表评论 2,454 views

    妈蛋,整个17号一直在尝试暴力破解ssh密码,不行又换尝试用户名,真是尼玛比草泥马。不看日志不知道一看真还危险,上网搜索了一下,发现下边的解决办法,效果还有待验证,看了下原理规则,应该是有效的,不过个钟文件名字什么的可能系统不一样有差异,俺用的centos,所以大家举一反三吧。

查看日志文件:

$ grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /var/log/secure | sort | uniq -c

没想到满屏满屏的往下刷,全是

      3 0.0.0.0
      2 103.10.52.83
      3 103.225.89.164
      3 104.130.72.148
      3 107.191.108.111
      8 108.166.85.134
      2 110.175.232.34
    311 116.7.249.3
     71 120.24.215.37
   4880 121.12.118.18
      2 128.204.195.67
      2 144.76.109.171
      2 146.247.126.4
      6 148.251.23.43
      4 149.210.136.234
      2 149.255.110.137
      2 151.1.158.86
      2 153.122.31.7
      2 154.120.82.247
      3 154.120.97.212
      2 159.253.212.16
      3 162.209.11.192
      1 171.109.76.144
      2 173.204.163.136
      6 173.230.149.65
      4 173.230.151.148
      4 173.45.172.139
      2 176.31.105.136
      2 176.9.124.2
      2 176.9.201.220
      3 177.47.30.16
      4 177.71.234.51
      2 178.212.254.231
      2 178.32.28.117
      2 178.32.28.118
      2 178.32.28.120
      1 182.118.54.59
      4 185.17.181.157
      2 185.51.65.226
      2 185.71.8.138
      4 188.132.183.114
      2 188.138.48.200
      2 188.40.74.71
      2 192.241.224.70
     15 193.104.41.58
     49 193.107.17.72
      4 195.154.179.107
      2 195.190.146.21
      8 195.190.28.97
      2 197.242.108.44
      4 197.242.158.150
      4 198.101.250.102
      4 198.144.188.127
      2 198.58.116.195
      2 199.189.248.60
      4 200.29.169.242
      5 201.216.214.13
     10 202.67.220.56
      3 204.154.41.4
      2 205.186.142.72
      3 207.198.106.63
      2 208.109.99.49
      4 208.92.118.192
      4 209.239.112.113
      4 210.245.226.13
      3 210.48.150.106
      4 212.227.141.141
      2 212.239.55.244
      2 216.185.102.20
      2 216.224.167.200
      2 217.160.176.184
      4 217.18.166.107
      2 217.31.81.180
     12 217.70.180.225
      3 218.244.128.77
      2 31.193.177.23
      2 37.120.168.147
      2 37.187.54.189
      2 37.187.93.167
      2 37.58.75.240
      4 37.59.26.52
      2 37.59.31.191
      3 43.23.251.148
      2 46.20.80.46
      4 46.37.13.124
      3 46.37.176.136
      4 49.231.2.88
      2 5.134.122.214
      4 5.135.53.133
      4 5.249.155.18
      3 5.39.9.146
      2 54.229.209.3
      2 54.94.225.180
      2 5.56.61.212
      2 5.79.80.66
      2 62.149.227.150
      4 64.150.178.20
      2 64.226.152.120
      4 68.168.103.33
      2 69.163.166.204
      2 69.64.39.71
      2 70.32.72.87
      2 70.32.79.38
      2 70.32.82.8
      4 72.47.194.40
      2 72.47.255.33
      2 74.208.14.189
      2 74.208.147.47
      6 76.74.252.180
      2 79.99.164.3
      4 80.87.131.74
      2 80.95.29.58
      4 81.169.210.235
      2 82.165.41.105
      2 82.85.93.168
      2 83.96.179.25
      2 84.246.225.149
      3 85.204.241.130
      2 85.214.128.203
      2 85.214.96.214
      2 85.222.231.143
      2 87.106.77.99
      8 91.126.141.131
      2 91.189.102.6
      2 91.211.112.67
      4 91.213.251.158
      2 92.51.129.209
      2 92.61.39.207
      2 92.63.172.83
      2 93.159.201.82
      2 94.23.228.41
      4 95.110.178.70
      2 95.110.193.61
      2 95.130.50.112

       麻辣隔壁,      这么多人,    尝试最多的竟然有4000多次,草泥马真是。

 

很明显我禁用了 root 登录,人家也不是那么笨,开始暴力猜用户名

$ sudo grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | sort | uniq -c | sort -nr | more
 
   3190 218.28.79.228
    646 222.122.52.150
    172 123.15.36.218
     65 177.8.168.48
      4 222.76.211.149

某个人尝试了 3000 多次,为了防范于未然,我们可以做些配置,让 VPS 服务器更加安全。

1、修改 SSH 端口,禁止 root 登陆

修改/etc/ssh/sshd_config文件

$ sudo vi /etc/ssh/sshd_config
Port 4484 #一个别人猜不到的端口号
PermitRootLogin no
 
$ sudo /etc/init.d/ssh restart

2、禁用密码登陆,使用 RSA 私钥登录

Amazon EC2 服务器本来就是只允许使用私钥登录的,但是这样的话我如果想在别的电脑上临时 SSH 上来,又没带私钥文件的情况下,就很麻烦。所以我又手动开启了密码验证登录。不管怎样,这一条还是先列出来吧

# 在客户端生成密钥
$ ssh-keygen -t rsa
# 把公钥拷贝至服务器
$ ssh-copy-id -i .ssh/id_rsa.pub server
# 也可以手动将.shh/id_rsa.pub拷贝至服务器用户目录的.ssh中,记得修改访问权限
# $ scp .shh/id_rsa.pub server:~/.ssh
# 在服务器中
$ cd ./.ssh/
$ mv id_rsa.pub authorized_keys
$ chmod 400 authorized_keys
$ vi /etc/ssh/sshd_config
RSAAuthentication yes #RSA认证
PubkeyAuthentication yes #开启公钥验证
AuthorizedKeysFile .ssh/authorized_keys #验证文件路径
PasswordAuthentication no #禁止密码认证
PermitEmptyPasswords no #禁止空密码
UsePAM no #禁用PAM
 
# 最后保存,重启
$ sudo /etc/init.d/ssh restart

3、安装denyhosts

这个方法比较省时省力。denyhosts 是 Python 语言写的一个程序,它会分析 sshd 的日志文件,当发现重复的失败登录时就会记录 IP 到 /etc/hosts.deny 文件,从而达到自动屏 IP 的功能。这和我之前介绍的 自动屏蔽扫描的脚本 是一个思路。如果靠人工手动添加的话还不把人累死。现今 denyhosts 在各个发行版软件仓库里都有,而且也不需要过多配置,傻瓜易用。

安装:

# Debian/Ubuntu:
$ sudo apt-get install denyhosts
 
# RedHat/CentOS
$ yum install denyhosts
 
# Archlinux
$ yaourt denyhosts
 
# Gentoo
$ emerge -av denyhosts

默认配置就能很好的工作,如要个性化设置可以修改 /etc/denyhosts.conf

$ vi /etc/denyhosts.conf
SECURE_LOG = /var/log/auth.log #ssh 日志文件,它是根据这个文件来判断的。
HOSTS_DENY = /etc/hosts.deny #控制用户登陆的文件
PURGE_DENY = #过多久后清除已经禁止的,空表示永远不解禁
BLOCK_SERVICE = sshd #禁止的服务名,如还要添加其他服务,只需添加逗号跟上相应的服务即可
DENY_THRESHOLD_INVALID = 5 #允许无效用户失败的次数
DENY_THRESHOLD_VALID = 10 #允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT = 1 #允许root登陆失败的次数
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts #运行目录
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES #是否进行域名反解析
LOCK_FILE = /var/run/denyhosts.pid #程序的进程ID
ADMIN_EMAIL = root@localhost #管理员邮件地址,它会给管理员发邮件
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report
AGE_RESET_VALID=5d #用户的登录失败计数会在多久以后重置为0,(h表示小时,d表示天,m表示月,w表示周,y表示年)
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
RESET_ON_SUCCESS = yes #如果一个ip登陆成功后,失败的登陆计数是否重置为0
DAEMON_LOG = /var/log/denyhosts #自己的日志文件
DAEMON_SLEEP = 30s #当以后台方式运行时,每读一次日志文件的时间间隔。
DAEMON_PURGE = 1h #当以后台方式运行时,清除机制在 HOSTS_DENY 中终止旧条目的时间间隔,这个会影响PURGE_DENY的间隔。

查看我的 /etc/hosts.deny 文件发现里面已经有 8 条记录。

$ cat /etc/hosts.deny | wc -l
8

以上内容针对centos6配置,Centos 7的denyhosts安装和配置请猛击我查看

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: