TL;DR
- ssh 換 port 是必要的,可以減少許多低端駭客例行性掃描。
- fail2ban 舊版本不支援 ipv6 ,ipv6 的門是開的。
- fail2ban 要測試是否有確實生效,適時修改設定。
以前覺得換 ssh port 沒有必要,才 6 萬個 port 掃一下就知道了,然後以為 fail2ban 很神。但後來發現,22 port 其實都一直被掃,被試。時間久了,fail2ban 會造成系統很大的負擔。下圖為 linode $5 的機器。換 ssh port 前後的差異。
下列提供換 (root) port 的指令,記得防火牆先 allow 那個 port,不然你會被擋在門外。
ubuntu 16.04 換 sshd port 指令為
sed -i "s/Port 22/Port NEW_PORT/g" /etc/ssh/sshd_configubuntu 18.04 換 sshd port 指令
service sshd restart
sed -i "s/#Port 22/Port NEW_PORT/g" /etc/ssh/sshd_config
service sshd restart
再來討論一下 fail2ban ,它在 ubuntu 16.04 預設的版本是不支援 ipv6 的,也就是說有心人試用 ipv6 就可以慢慢打。所以要去 sshd_config 把 ipv6 關掉。下列為關閉指令。
file=/etc/ssh/sshd_configubuntu 18.04 的 fail2ban 版本支援 ipv6 ,但我還是把它關掉,而且配合 ufw 的話要加上這一段才有用。
if [[ ! $(grep "AddressFamily inet" $file) ]]; then
echo "AddressFamily inet" | sudo tee -a $file
/etc/init.d/ssh restart
fi;
jail=/etc/fail2ban/jail.local
echo "[DEFAULT]" > $jail
echo "banaction = ufw" >> $jail
echo "[sshd]" >> $jail
echo "enabled = true" >> $jail
echo "maxretry = 3" >> $jail
echo "findtime = 3600" >> $jail
echo "bantime = 3600" >> $jail
service fail2ban restart
再來是 fail2ban 是很吃資源的,ubuntu 16.04 開機 267 天後,fail2ban 記憶體用量為 198MB。