Debian
如何使用 Fail2Ban 禁止 Syn Flood 攻擊?
在我的日誌中,我經常看到像這樣丟棄的 ip:
> Oct 30 17:32:24 IPTables Dropped: IN=eth0 OUT= > MAC=04:01:2b:bd:b0:01:4c:96:14:ff:df:f0:08:00 SRC=62.210.94.116 > DST=128.199.xxx.xxx LEN=40 TOS=0x00 PREC=0x00 TTL=244 ID=45212 > PROTO=TCP SPT=51266 DPT=5900 WINDOW=1024 RES=0x00 SYN URGP=0 > > Oct 30 17:29:57 Debian kernel: [231590.140175] IPTables Dropped: > IN=eth0 OUT= MAC=04:01:2b:bd:b0:01:4c:96:14:ff:ff:f0:08:00 > SRC=69.30.240.90 DST=128.199.xxx.xxx LEN=40 TOS=0x00 PREC=0x00 TTL=245 > ID=12842 DF PROTO=TCP SPT=18534 DPT=8061 WINDOW=512 RES=0x00 SYN > URGP=0
從上面,我假設這些是我的 IpTables 規則正在丟棄的 Syn Flood。這就是我在 iptables for Syn 中的內容(儘管不確定這些規則中的哪一個正在刪除上面的規則):
# Drop bogus TCP packets iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP # --- Common Attacks: Null packets, XMAS Packets and Syn-Flood Attack --- iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
在 Fail2ban 中,我沒有在
filter.d
文件夾中看到任何針對 Syn 攻擊的特定過濾器。我的問題是:1)我是否只是忽略上述日誌而不擔心為這些日誌設置 Fail2Ban 過濾器,因為它的網際網路並且總是會有腳本小子在做這些嗎?
2) 由於 Fail2ban 工作基於 iptables 日誌,有沒有辦法在我的伺服器上禁止上述 Syn 嘗試?
這是我對過濾器的蹩腳嘗試,但它不起作用。不確定它是否有效:
[Definition] failregex = ^<HOST> -.*IPTables Dropped:.*SYN URGP=0 ignoreregex =
我正在使用 Debian + Nginx
我為此提出了另一種解決方案,到目前為止它似乎正在工作。基本上,我編寫了一個過濾器,它掃描日誌並阻止在給定的
findtime
. 因此,此過濾器將阻止由於 Syn、Xmas 攻擊、埠掃描等原因而被丟棄的 IP - 無論您的 iptables 規則中列出什麼。換句話說,它會阻止由於各種原因一直出現在 iptables 阻止列表中的那些。本地監獄
[iptables-dropped] enabled = true filter = iptables-dropped banaction = iptables-allports port = all logpath = /var/log/messages bantime = 1800 maxretry = 3
過濾器:iptables-dropped.conf
[Definition] failregex = IPTables Dropped: .* SRC=<HOST> ignoreregex =
確保在 iptables 規則中記錄這樣丟棄的 IP,以便上述過濾器起作用:
# log iptables denied calls (access via 'dmesg' command) to /var/log/messages file iptables -N LOGGING iptables -A INPUT -j LOGGING iptables -A LOGGING -m limit --limit 5/min -j LOG --log-prefix "IPTables Dropped: " --log-level 4 iptables -A LOGGING -j DROP
以上似乎對我有用。