Ubuntu [Fail2Ban] 安裝紀錄

自己DIY主機環境一定都需要注意資訊安全。
然後最常遇到的就是ssh 被暴力破解,這個時候在主機上安裝Fail2ban就變得很重要和基本。
簡單介紹Fail2Ban


Fail2Ban是一個入侵”檢測”系統的工具,可以保護伺服器免暴力攻擊。
以Python程式語言撰寫,只能安裝在Unix系統上運作。
類似的軟體也有不少,但自己覺得Fail2Ban很多人使用,再找相關資訊時也很方便。
這次我就用Fail2Ban來幫我的網站主機防禦暴力攻擊。

Ubuntu 安裝Fail2Ban 紀錄

這次安裝的環境是Ubuntu 20.04 TLS (CentOs也有差不多的安裝流程)
步驟1、 先更新系統 (這個很重要)

sudo apt update
apt list --upgradable
sudo apt -y upgrade
sudo apt -y autoremove

安裝與設定

$ sudo apt install fail2ban

確認啟動

$ sudo systemctl status fail2ban

編輯設定檔: /etc/fail2ban/jail.local

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log

maxretry = 5
findtime = 600
bantime  = 3600
destmail = 我的mail

因為Linode主機有開啟SSH 、HTTP和HTTPS服務 SSH一定會被攻擊(暴力密碼攻擊)
所以我設定
bantime=3600(秒) 1H封鎖
findtime=600(秒) 10分鐘內
maxretry= 5 嘗試登入錯5次
這組IP就會被列入黑名單,所以一直錯一直鎖。

如果不小心封鎖到自己的IP
fail2ban-client set sshd unbanip x.x.x.x
就可以解開

時不時就檢查一下有多少IP被封鎖
指令: iptables -L -n

root@localhost:~# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
f2b-sshd   tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 22

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain f2b-sshd (1 references)
target     prot opt source               destination         
REJECT     all  --  111.229.251.100      0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  1.116.78.23          0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  104.236.151.120      0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  113.31.112.237       0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  42.192.88.13         0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  81.68.161.14         0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  65.49.206.125        0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  46.101.81.12         0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  142.93.77.117        0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  138.255.148.35       0.0.0.0/0            reject-with icmp-port-unreachable
RETURN     all  --  0.0.0.0/0            0.0.0.0/0