自己用樹莓派搭建了個小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
統計了下,最近一個月有兩萬多條,我錯了,小派:(
如何防止這類閑的蛋疼的人呢?一般來說:
- 配置sshd_config,禁用root登陸
- 使用非常規SSH服務端口
- 使用非常規登陸名
- 盡量使用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/目錄下可以添加配置文件實現。我自己弄了個微信提醒服務,當發現異常是通過微信推送給我,就能第一時間讓我知道誰欺負我小派了,哼~