ログに、次のようなドロップされた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フラッドであると想定しています。これは私がSynのiptablesに持っているものです(これらのルールのどれが上記のものを落としているのかわかりませんが):
# 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
でさまざまな理由でドロップされたすべての不正なIPアドレスをブロックするフィルターを作成しました。したがって、このフィルターは、Syn、Xmas攻撃、ポートスキャンなどのためにドロップされたIPをブロックします-iptablesルールにリストされているものは何でも。つまり、さまざまな理由でiptablesブロックリストに表示され続けるものをブロックします。
Jail.local
[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 =
上記のフィルターが機能するように、ドロップしたIPを次のようにiptablesルールに記録してください。
# 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
上記は私にとってはうまくいくようです。
スーパーfail2banフィルター!!それは魅力のように働きます。どうもありがとう!
とにかく、私はこの方法で正規表現を変更するfail2banフィルターを編集することをお勧めします:
failregex = ^%(__prefix_line)slost connection after .*\[<Host>\]$
^%(__prefix_line)stoo many errors after .*\[<Host>\]$