Linux

如何將 Linux 防火牆 IP 白名單與數據庫連接?

  • May 1, 2019

問題是我的專用盒子正在消失。我想設置Linux防火牆,將數據庫中列出的IP地址列入白名單。

基本上這個過程應該是 - 使用者連接到我們的網站。ip 地址被記錄並被發送到應用程序伺服器以列入白名單。

我不知道如何在 Linux 上做的唯一部分是如何實時更新防火牆(我假設是 iptables,我不熟悉不同的解決方案)以阻止或允許特定的 ip

感謝您的幫助!

我認為在您的情況下更好的解決方案是 iptables 和 ipset 的組合。您不需要每次都更改 iptables 規則集,只需執行 ‘ipset add …’ 以允許 IP 地址。

使用預設條目 ttl 3600 秒創建 db_allow ip 列表。進入ttl超時後,IP地址將被刪除。

ipset create db_allow hash:ip counters timeout 3600

在 iptables 規則集中,您需要兩個額外的規則。請記住,規則的順序非常重要。

# pass connections from allowed addresses in db_allow ipset
iptables -A INPUT -p tcp --dport 3306 -m set --match-set db_allow src -j ACCEPT
# block connections from other addresses
iptables -A INPUT -p tcp --dport 3306 -j DROP

內部腳本以允許您剛剛執行的 IP 地址ipset add db_allow <ip> timeout <ttl>。要從允許列表中刪除 IP 地址,請執行ipset -! del db_allow <ip>。執行ipset list db_allow命令列出允許的 IP 地址。

此外,最好使用 iptables-save / iptables-restore / iptables-apply 代替從腳本或手動執行 iptables 命令。ipset 列表不會在重新啟動之間儲存,因此您需要一個啟動腳本來創建/恢復它們,然後再創建/恢復 iptables 規則集。

引用自:https://serverfault.com/questions/963949