树莓派保卫战--防止SSH暴力破解

时间:2023-12-15 11:06:56

  自己用树莓派搭建了个小server,用了很长时间了,最近查看log发现有很多SSH登陆失败,瞬间心就碎了,一直没关心小派的安全问题,怪我咯!

  马上行动,首先研究下log:/var/log/auth.log记录了SSH登陆等权限安全信息,如何知道自己被攻击了呢?

# grep sshd.\*Failed /var/log/auth.log | less

Nov 16 11:26:44 raspberrypi2 sshd[4876]: Failed password for root from 61.160.222.53 port 1323 ssh2
...
Nov 17 01:14:49 raspberrypi2 sshd[8791]: Failed password for root from 222.186.15.160 port 2670 ssh2
...
Nov 16 14:31:23 raspberrypi2 sshd[9343]: Failed password for invalid user admin from 61.160.222.53 port 1782 ssh2
...

  这里显示的是尝试通过SSH登陆失败的记录,描述里有IP和端口描述。一般如果遇到暴力破解的话,会尝试用root,admin等常用用户名,而且会出现很多失败记录。

  另外一种失败记录一般是端口扫描。如下:

# grep sshd.*Did /var/log/auth.log | less

Nov 15 12:09:49 raspberrypi2 sshd[14252]: Did not receive identification string from 198.20.69.98
Nov 16 12:28:37 raspberrypi2 sshd[6351]: Did not receive identification string from 61.160.222.53

  统计了下,最近一个月有两万多条,我错了,小派:(

  如何防止这类闲的蛋疼的人呢?一般来说:

  1.   配置sshd_config,禁用root登陆
  2.   使用非常规SSH服务端口
  3.   使用非常规登陆名
  4.   尽量使用key登陆

  以上四条条我都注意了,但防止不了暴力破解,接下来只能通过一些工具实现了。

  Googling,发现两个工具DenyHosts和Fail2Ban,两个工具的作用是监视log,发现异常,屏蔽IP(iptables),也可同时执行发邮件等操作,都是Python写的。DenyHosts是针对SSH服务的,Fail2Ban可以适用多种服务如HTTP,FTP等,我选了Fail2Ban虽然我只用到SSH。

  安装很简单:

# sudo apt-get install fail2ban

  修改配置(可以不修改,默认是启动SSH保护的):

# ls /etc/fail2ban/
action.d/ fail2ban.conf filter.d/ jail.conf jail.local
# jail.local是jail.conf的override配置文件
# vim /etc/fail2ban/jail.local
[ssh] enabled  = true
# 设置了非标准端口,需要修改为对应端口
port     = ssh
filter   = sshd
action   = wechat[name=SSH]
logpath  = /var/log/auth.log
bantime  = 1200
maxretry = 3

  发现异常后,屏蔽IP时fail2ban默认使用sendmail发邮件提醒,这个action是可以自定义的,在/etc/fail2ban/action.d/目录下可以添加配置文件实现。我自己弄了个微信提醒服务,当发现异常是通过微信推送给我,就能第一时间让我知道谁欺负我小派了,哼~

[via]  [via]  [via]