昨天ss忽然變慢,一看好多條非法登陸。CentOS下的記錄文件是/var/log/secure。
#root登陸失敗次數 ##ubuntu sudo grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more ##centos sudo grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
#無效用戶登陸失敗次數 sudo grep "Failed password for invalid user" /var/log/auth.log | awk '{print $13}' | sort | uniq -c | sort -nr | more
denyhosts可以防止上面這種攻擊。但是我在ubuntu14的軟件源裏沒找到(12裏有)。於是去搜索,找到http://denyhosts.sourceforge.net/這個主頁,按照說明安裝下來,竟然失敗。後來安裝了denyhost(注意:沒有s了,這是前一個的fork),很順利。下面記一下安裝過程:
#下載denyhost cd /tmp/ && wget http://downloads.sourceforge.net/project/denyhost/denyhost-2.8/denyhosts-2.8.tar.gz #解壓 tar xzf denyhosts*.tar.gz cd DenyHosts* #安裝 sudo python setup.py install #添加到開機啓動 sudo cp /usr/local/bin/daemon-control-dist /etc/init.d/denyhosts #修改配置文件 #將文件中"DENYHOSTS_BIN"的值爲"/usr/local/bin/denyhosts.py" sudo nano /etc/init.d/denyhosts #修改攔截配置文件 sudo nano /etc/denyhosts.conf #這個文件內部註釋很清晰,按需求修改就好,不改也沒關係。 #啓動服務 sudo /etc/init.d/denyhosts start
上面命令參考自How To Install DenyHosts On Ubuntu 14.04 Server。當然,修改下ssh的默認的配置也是很好的。
sudo nano /etc/ssh/sshd_config #Port 12345 #改爲一個5位端口号,不要超過60000 #PermitRootLogin no #禁止root用戶登陸 #重啓ssh服務 sudo /etc/init.d/ssh restart #在/etc/sysconfig/iptables中添加下面一行,打開12345端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 12345 -j ACCEPT #重啟iptables service iptables restart
禁用密碼登陸ssh(使用證書)也是很好的選擇。參考:Centos6.4下使用Denyhosts
用iptables防止ssh暴力破解
#添加如下iptables規則即可防止普通ssh暴力破解 -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --name DEFAULT --rsource -j DROP
時間來到 2022 年,denyhost 已經不再更新,但是我們可以使用它的繼任者——fail2ban。
#安裝 fail2ban yum -y install fail2ban #增加配置文件 nano /etc/fail2ban/jail.d/jail.local #文件內容如下: [sshd] enabled = true filter = sshd action = iptables[name=ssh,port=22,protocol=tcp] logpath = /var/log/secure bantime = 600 maxretry = 3 #啓動服務 systemctl restart fail2ban #添加到開機啓動 systemctl enable fail2ban #查看服務狀態 fail2ban-client status sshd
如果系統是 AlamLinux 可能需要啟動 EPEL 軟件源:
sudo dnf install epel-release /usr/bin/crb enable
本文更新於 2024/08/06。