使用redis來呼叫iptables,封禁惡意IP
阿新 • • 發佈:2019-01-06
話不多說,通常大多數站點都會有被薅羊毛的情況,防護無非也就是業務層做處理,短時內不再響應惡意請求啦.雖然不響應了,可還是會消耗資源的,比如我要從資料庫(當然也可能是記憶體資料庫)去查詢下,你是不是惡意的IP. 那麼能否網路層或應用層去處理呢?在前幾篇文章有寫過應用層方案,今天就寫下網路層方法.
說起iptables 除非是專業人員,像普通開發者是不會使用的,一堆表一堆鏈的一看就頭疼.所以**RedisPushIptables**就應時而生,開發者不須為iptables複雜語法頭疼,只需要像使用redis那樣簡單,就可使用iptables來阻擋惡意IP地址.
該模組可以通過 redis 來操作 iptables 的 filter表INPUT鏈規則的增加和刪除,可以用來動態呼叫防火牆。比如用來防禦攻擊。
但是前提要以 root 來執行,因為 iptables 需要 root 許可權。
git clone https://github.com/limithit/RedisPushIptables.git
cd RedisPushIptables && make
載入模組
MODULE LOAD /path/to/iptablespush.so
語法
accept.insert - Filter table INPUT ADD ACCEPT
accept.delete - Filter table INPUT DEL ACCEPT
drop.insert - Filter table INPUT ADD DROP
drop.delete - Filter table INPUT DEL DROP
127.0.0.1:6379>accept.insert 192.168.188.8
(integer) 13
127.0.0.1:6379>accept.delete 192.168.188.8
(integer) 13
127.0.0.1:6379>drop.delete 192.168.188.8
(integer) 13
127.0.0.1:6379>drop.insert 192.168.188.8
(integer) 13
[email protected]:~# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 192.168.188.8 0.0.0.0/0
ACCEPT all -- 192.168.188.8 0.0.0.0/0
從此普通開發也能像運維那樣,使用防火牆了.其實我不擅長寫作,大夥湊合看吧,就這麼多。
原文連結:https://my.oschina.net/MasterXimen/blog/2990886