分類
Linux

在ubuntu14上配置denyhost

昨天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。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *