Como banir ataques Syn Flood usando o Fail2Ban?

1

No meu log, frequentemente vejo ips descartados assim:

> 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

Do acima, estou assumindo que estas são as inundações Syn que estão sendo eliminadas pelas minhas regras do IpTables. Isto é o que eu tenho no iptables para Syn (apesar de não ter certeza de qual destas regras está soltando as que estão acima):

# 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

No Fail2ban, eu não vejo nenhum filtro específico para ataques Syn na pasta filter.d . Minha pergunta para isso é:

1) Eu simplesmente ignoro os logs acima e não me preocupo com a configuração de um filtro Fail2Ban para eles desde a sua Internet e constantemente haverá roteiros fazendo essas coisas de qualquer maneira?

2) Como o trabalho do Fail2ban é baseado no log do iptables, existe uma maneira de banir as tentativas Syn acima no meu servidor?

Esta é a minha tentativa inútil em um filtro e não está funcionando. Não tenho certeza se é mesmo válido:

[Definition]
failregex = ^<HOST> -.*IPTables Dropped:.*SYN URGP=0
ignoreregex =

Estou usando o Debian + Nginx

    
por Neel 30.10.2014 / 14:39

1 resposta

1

Eu criei outra solução para isso e parece estar funcionando até agora. Basicamente, eu escrevi um filtro que varre o log e bloqueia todos os endereços IP não autorizados que foram descartados por várias razões no dado findtime . Portanto, esse filtro bloqueará os IPs que foram descartados devido a ataques Syn, Xmas, varredura de portas, etc. - o que estiver listado em suas regras do iptables. Em outras palavras, bloqueia aqueles que continuam aparecendo na lista de bloqueios do iptables por várias razões.

Jail.local

[iptables-dropped]

enabled = true
filter = iptables-dropped
banaction = iptables-allports
port = all
logpath = /var/log/messages
bantime = 1800
maxretry = 3

FILTER: iptables-dropped.conf

[Definition]
failregex = IPTables Dropped: .* SRC=<HOST>
ignoreregex =

Certifique-se de registrar os IPs perdidos como este nas regras do iptables, para que o filtro acima funcione:

# 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

O acima parece funcionar para mim.

    
por 30.10.2014 / 15:30