В моем журнале я часто вижу такие выпадающие 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
Исходя из вышесказанного, я предполагаю, что это Syn flood, который отбрасывается моими правилами IpTables. Это то, что у меня есть в iptables для 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 я не вижу специального фильтра для атак Syn в filter.d
папка. Мой вопрос по этому поводу:
1) Могу ли я просто игнорировать приведенные выше журналы и не беспокоиться о настройке фильтра Fail2Ban для них, так как это Интернет, и в любом случае постоянно будут скриптовые детишки, делающие это?
2) Поскольку Fail2ban работает на основе журнала iptables, есть ли способ запретить вышеуказанные попытки Syn на моем сервере?
Это моя неудачная попытка использовать фильтр, и он не работает. Не уверен, действительно ли это действительно:
[Definition]
failregex = ^<HOST> -.*IPTables Dropped:.*SYN URGP=0
ignoreregex =
Я использую Debian + Nginx
Я придумал для этого другое решение, и, похоже, оно пока работает. По сути, я написал фильтр, который просматривает журнал и блокирует все мошеннические IP-адреса, которые были отброшены по разным причинам в данном findtime
. Таким образом, этот фильтр будет блокировать IP-адреса, которые были потеряны из-за Syn, Xmas-атак, сканирования портов и т. Д. - все, что указано в ваших правилах 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-drop.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>\]$