利用 fail2ban 幫自己的 Linux 伺服器加上一個簡單的守門員

跟 4C 相關的話頭都可以在這邊討論

版主: lincy

回覆文章
lincy
文章: 16
註冊時間: 2020年 4月 14日, 11:39

利用 fail2ban 幫自己的 Linux 伺服器加上一個簡單的守門員

文章 lincy »

架設伺服器之後總是會有一些多多少少的煩惱,其中一個煩惱就是隨著架設的時間久了,慢慢的會有一些莫名其妙的機器或是人來進行各種各樣的嘗試,像是嘗試著登入你的機器看看是否有破綻,嘗試登入你的網頁、嘗試執行壹些莫名其妙的程式看看這些程式是否存在,這邊介紹一個簡單的工具,當然這是比較被動的工具,但卻是最簡單易用的一個工具

fail2ban

這是一個簡單卻很有用的工具,它的原理是分析系統的記錄 (*.log),找出錯誤的嘗試 (就是試著登入你系統,但卻失敗),然後根據所設定的條件來阻擋這些來源下次繼續嘗試,換個方式說,就是分析系統紀錄,看那些錯誤的嘗試超過指定的次數,然後把那些錯誤的來源 IP 阻擋一段所設定的時間,在這段時間內禁止它們再次嘗試

所以利用這個工具,我們可以用來過濾像是某個 IP 來嘗試利用 ssh 試著要登入我們的伺服器,我們可以設定他失敗多少次之後,在多久時間內就不接受該 IP 連進來,當然,次數跟阻擋時間都是我們可以自由定義的

安裝這個工具也很簡單,先更新套件清單之後,使用以下指令

代碼: 選擇全部

apt-get install fall2ban
這樣就可以安裝 fall2ban 在你的伺服器上,安裝後就會立刻生效,不過套件內定的防護只打開了 ssh,如果你還有其他的服務也要進行保護,那就必須修改設定檔,例如我的伺服器上還有網頁服務,使用了 apache,所以我要修改設定檔將 apache 的防護開,編輯 /etc/fail2ban/jail.conf

找到 [apache] 段落,將 enabled 打開,並視需要修改 maxretry 的參數,我的設定是這樣

代碼: 選擇全部

[apache]

enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache*/*error.log
maxretry = 10
另外,如果你想收到 fail2ban 的系統報告電子郵件的話,記得也要修改設定檔內的 destemail 及 sendername 參數,你可以改成像這樣

代碼: 選擇全部

# 收件人地址
destemail = myname@mydomain.com
# 寄件人名稱 (如果你有很多台伺服器的話,這個寄件人名稱可以讓你辨識是哪台伺服器寄出來的)
sendername = fail2ban@myserver
最後,還有一個地方你可以考慮修改,那就是系統內定的阻擋時間以及失敗嘗試次數,我是這樣設定的

代碼: 選擇全部

# 阻擋時間 (以秒為單位),60秒 x 60分 x 6小時 = 21600秒禁止該 IP
bantime = 21600
# 掃描間隔 (以秒為單位),60秒 x 10分 = 600秒掃描一次
findtime = 600
# 最大嘗試錯誤次數
maxretry = 10
改好之後,重新啟動 fail2ban 服務

代碼: 選擇全部

service fail2ban restart
好了,現在伺服器可以阻擋一些騷擾分子的嘗試了

lincy
文章: 16
註冊時間: 2020年 4月 14日, 11:39

Re: 利用 fail2ban 幫自己的 Linux 伺服器加上一個簡單的守門員

文章 lincy »

如果你在新的伺服器版本上安裝 fail2ban,那麼裝的 fail2ban 也應該會是比較新的版本,安裝方式都一樣,差別在設定檔不同罷了,所以要修改的設定檔也不同,以我在 Ubuntu Server 20.04 LTS 上安裝的 fail2ban 為例,掃描週期、阻擋時間等設定依然在 jail.conf 裡面修改

不過現在時間單位除了秒以外,還可以用時間修飾字

代碼: 選擇全部

years?, yea?, yy?
months?, mon?
weeks?, wee?, ww?
days?, da, dd?
hours?, hou?, hh?
minutes?, min?, mm?
seconds?, sec?, ss?
例如要禁止10分鐘,可以寫成 10m,或者原本的 600 (秒),禁止一天半可以寫成 1d12h,喔,還有一個之前未提及的,永久禁止可以寫成 -1

所以我在 Ubuntu Server 20.04 LTS 上安裝的 fail2ban jail.conf 設定為

代碼: 選擇全部

bantime = 6h
findtime = 10m
maxretry = 10
然後各項服務的阻攔設定現在放在 /etc/fail2ban/jail.d 目錄裡面,系統內定是打開 sshd ,要加上網頁伺服器的守護服務,修改 /etc/fail2ban/jail.d/defaults-debian.conf

代碼: 選擇全部

[sshd]
enabled = true
[apache-auth]
enabled = true
當然,修改過設定檔之後,別忘了重啟服務

代碼: 選擇全部

service fail2ban restart
祝使用愉快...

回覆文章