FreeSWITCH系統部署在公網,大概率會碰到惡意註冊,今天整理下debian12環境下使用mod_fail2ban + fail2ban + nftables來提升系統安全性的筆記,並提供使用示例及相關資源下載。
相關資源可從如下渠道獲取:
一、原理説明
二、模塊安裝及配置
1、添加模塊編譯項
event_handlers/mod_fail2ban
2、編譯及安裝
源碼目錄執行如下命令:
autoreconf -fiv make clean ./devel-bootstrap.sh && ./configure && make && make install
説明:
1)會編譯mod_fail2ban模塊;
2)如果配置文件沒有找到,可以從源碼目錄複製過去;
cp src/mod/event_handlers/mod_fail2ban/fail2ban.conf.xml /usr/local/freeswitch/conf/autoload_configs/
3、加載mod_fail2ban模塊
編輯 conf/autoload_configs/modules.conf.xml 文件,添加如下內容:
<load module="mod_fail2ban"/>
重啓FreeSWITCH或執行重新load操作:
load mod_fail2ban
如果加載不報錯,則添加mod_fail2ban 模塊成功。
4、配置模塊
配置文件路徑:
/usr/local/freeswitch/conf/autoload_configs/fail2ban.conf.xml
配置文件內容如下(默認):
<configuration name="fail2ban.conf" description="fail2ban log configs"> <bindings> <config name="settings" desription="configs"> <param name="logfile" value="$${log_dir}/fail2ban.log"/> </config> </bindings> </configuration>
5、模塊運行效果
模塊啓動後,會自動創建日誌文件,並寫入相關日誌。
默認日誌路徑:/usr/local/freeswitch/log/
日誌效果如下:
三、安裝fail2ban軟件
dpkg -i fail2ban_1.1.0-1.upstream1_all.deb
配置文件目錄: /etc/fail2ban
四、使用示例
1、配置防火牆
apt install nftables
2、配置fail2ban軟件使用nftable
/etc/fail2ban/action.d目錄默認有nttables的動作配置:
/etc/fail2ban/jail.conf文件默認有freeswitch配置,默認未啓用:
為了方便演示,這裏不使用默認的配置文件,修改後的 jail.conf 文件內容可從如下渠道獲取:
3、添加freeswitch過濾規則
文件: filter.d/freeswitch-fail2ban.conf
文件內容可從如下渠道獲取:
fail2ban-client status freeswitch-fail2ban
4、開啓nftable服務
需要開啓nftables服務:
systemctl start nftables
5、使用分機模擬註冊失敗
分機: 1009
填寫錯誤的註冊密碼,執行註冊操作。
連續10次註冊失敗,會自動拉黑,運行效果如下:
到時間後,會自動解除:
如需提前解除黑名單,可使用如下命令:
/usr/bin/fail2ban-client set freeswitch-fail2ban unbanip 192.168.137.1
運行效果如下:
五、模塊源碼説明
源碼只有一個文件: mod_fail2ban.c
1、函數説明
該模塊有4個函數:
mod_fail2ban_do_config : 模塊配置解析函數
fail2ban_logger : 生成fail2ban日誌
fail2ban_event_handler : 模塊事件處理回調函數
mod_fail2ban_load : 模塊加載函數
mod_fail2ban_shutdown : 模塊關閉函數
2、關鍵函數説明
模塊的加載、關閉及配置解析沒什麼説的,這裏描述下該模塊的fail2ban_event_handler函數。
六、資源下載