使用redis來調用iptables,封禁惡意IP
話不多說,通常大多數站點都會有被薅羊毛的情況,防護無非也就是業務層做處理,短時內不再響應惡意請求啦.雖然不響應了,可還是會消耗資源的,比如我要從資料庫(當然也可能是內存資料庫)去查詢下,你是不是惡意的IP. 那麼能否網路層或應用層去處理呢?在前幾篇文章有寫過應用層方案,今天就寫下網路層方法.
說起iptables 除非是專業人員,像普通開發者是不會使用的,一堆表一堆鏈的一看就頭疼.所以**RedisPushIptables**就應時而生,開發者不須為iptables複雜語法頭疼,只需要像使用redis那樣簡單,就可使用iptables來阻擋惡意IP地址.
RedisPushIptables是一個redis模塊
該模塊可以通過 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
root@debian:~# 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
打開今日頭條,查看更多圖片※程序員紋身被拍引網友熱議,代碼身上紋,我是社會人!
※scala學習-泛型、界定、形變、this.type、複合類型、抽象類型
TAG:程序員小新人學習 |