Show HN:基於mitmproxy的出口WAF,限制AI代理和npm惡意軟件
mitmwall是一個基於mitmproxy的出口Web應用防火牆(WAF),通過iptables和mitmproxy確保只有明確允許的HTTP(S)路由可訪問。它可防止數據泄露、後門連接等威脅,並提供實時監控、DNS過濾、憑證注入和Web管理界面。
mitmwall是一個專為Ubuntu設計的出口Web應用防火牆(WAF)。它巧妙地結合了iptables和mitmproxy,確保只有明確允許的HTTP(S)路由可以被訪問。任何不符合允許列表的網絡連接都將被阻止,從而有效防止數據泄露、後門連接等安全威脅。
mitmwall的工作原理是通過systemd服務啓動mitmweb,運行在透明HTTP(S)代理模式和DNS代理模式下。iptables規則將出站TCP 80和443端口流量重定向到HTTP(S)代理,TCP/UDP 53端口流量重定向到DNS代理。同時,僅允許root用户、專用mitmwall用户、systemd-resolve以及已安裝的時間同步服務用户進行必要的上行連接,而root用户被保留用於主機管理和故障排除,其他應用程序無法繞過代理。
安裝過程簡單,可通過curl命令或本地安裝腳本完成。安裝程序會創建系統用户、安裝mitmproxy、生成配置文件、創建規則目錄,並安裝systemd服務。安裝後,可以通過systemctl命令啓動、停止、重啓服務以及查看日誌。
允許列表以TOML文件形式存儲在/etc/mitmwall/rules.d目錄中。每個文件可包含多個[[allow]]表,請求的主機名、HTTP方法和可選的路徑名模式必須至少匹配一個允許規則,否則被阻止。規則文件按文件名順序加載,修改後需重啓服務。
憑證注入功能允許將自定義頭部透明地添加到請求中,避免向不受信任的用户暴露憑證。典型工作流程是:先配置需要憑證的工具,通過mitmweb檢查憑證的使用方式,編寫匹配規則注入憑證頭部,最後用虛擬值替換真實憑證。
mitmwall還提供了Web界面(mitmweb),監聽在58081端口,可用於實時檢查流量並輕鬆創建規則。通過選項界面添加的規則會立即生效並持久化。
DNS過濾功能將普通用户的TCP/UDP 53流量重定向到mitmproxy的本地DNS監聽器。默認情況下,代理插件會應用相同的規則文件來決定DNS查詢是否被允許。如果查詢的主機名不在允許列表中,則返回DNS REFUSED。可以通過配置關閉插件級別的DNS過濾。
在安全性方面,mitmwall依賴於Linux用户權限。只有root和mitmwall用户可自由訪問網絡。如果攻擊者能夠提權到mitmwall用户或root,則可能繞過保護。DNS過濾可防止基於DNS的數據泄露,但允許的域名仍需謹慎選擇。此外,允許的域名仍可能被用於憑證轉儲,尤其是在允許POST、PUT等寫操作的方法時。默認方法策略只允許GET和HEAD,以降低風險。普通非root進程無法使用原始套接字繞過iptables。
總之,mitmwall旨在防禦流氓AI代理和npm倉庫上常見的憑證轉儲惡意軟件,而非針對有目標的攻擊。它是一個實用的出口控制工具。