Puncte:2

fail2ban nu folosește tipul de bloc DROP

drapel cn

Folosind Ubuntu 20.04 LTS, am asta în /etc/fail2ban/jail.local:

[MOD IMPLICIT]
bantime = 3600
banaction = iptables
blocktype = drop


[sshd]
activat = adevărat
protocol = tcp
port = ssh
filtru = sshd
logpath = /var/log/auth.log
maxretry = 3

Dar asta este ceea ce văd când listez regulile iptables:

â°â# iptables -L f2b-sshd -n -v
Lanț f2b-sshd (1 referințe)
 pkts bytes target prot opt ​​in out source destination
   13 1356 REJECT all -- * * 222.187.232.205 0.0.0.0/0 reject-with icmp-port-unreachable
   18 1516 REJECT all -- * * 221.181.185.153 0.0.0.0/0 reject-with icmp-port-unreachable
   17 1064 RESPINGERE toate -- * * 222.186.180.130 0.0.0.0/0 777 55854 RETURNARE toate -- * * 0.0.0.0/0 0.0.0.0/0

Problema este că folosește REJECT (cu ICMP) în loc de DROP.

Action.d/iptables.conf conține:

# Opțiune: actionban
# Note.: comandă executată la interzicerea unui IP. Ai grijă ca
# Comanda este executată cu drepturi de utilizator Fail2Ban.
# Etichete: vezi pagina de manual jail.conf(5).
# Valori: CMD
#
actionban = <iptables> -I f2b-<nume> 1 -s <ip> -j <tip bloc>

Este fișierul de acțiune iptables implicit, livrat cu pachetul oficial fail2ban apt pentru această versiune a sistemului de operare.

De asemenea, am încercat să adaug „blocktype=drop” sub [sshd], dar nu are niciun efect.

Nu sunt sigur cum să depanez acest lucru, deoarece serviciul fail2ban nu înregistrează comenzile iptables reale.

Ce îmi lipsește?

drapel jp
Dom
Ar trebui să setați DROP în action.d/iptables-common.conf, blocktype
drapel cn
Sunt două probleme cu asta. Prima este că este o configurație globală. Atunci nu voi putea seta diferite tipuri de bloc pentru diferite filtre. A doua problemă este că iptables-common.conf face parte din pachetul fail2ban. Dacă schimb asta și mai târziu apare o nouă versiune de fail2ban, atunci va fi suprascrisă. Nici nu voi observa. Sau poate că nu va fi suprascris, iar asta ar putea rupe acțiunea iptables cu totul.
drapel jp
Dom
Apoi puteți utiliza: action = iptables-multiport[blocktype="DROP", port="22,2222", name=sshd], setat în secțiunea dvs. [sshd]
Puncte:1
drapel il

Pentru a furniza un anumit parametru la acțiunea unei singure închisori, trebuie să setați acțiune cu toți parametrii (de asemenea, furnizați în mod normal în secțiunea implicită a închisoare.conf) sau în cazul acțiunii de interzicere ai putea folosi ceva de genul:

[niva_inchisoare]
banaction = %(cunoscut/banaction)s[blocktype=DROP]

În ceea ce privește tema DROP vs. REJECT, discuția este atât de veche ca subsistemul net-filter în sine, cu multe avantaje/contra pentru ambele părți.
Legat de interzicerea preocupărilor, vezi https://github.com/fail2ban/fail2ban/issues/2217#issuecomment-423248516 pentru detalii.

drapel cn
Da, sunt de acord cu DROP vs REJECT. Am câteva filtre care sunt folosite pentru atacurile de amplificare DNS. Pentru aceștia, DROP este mai bine (deoarece cererile au adrese sursă falsificate, așa că trimiterea înapoi a respingerii ICMP ajută de fapt atacatorul...)
Puncte:0
drapel cn

Am acceptat soluția @sebres, dar aș dori să adaug câteva probleme.

Pentru iptables-allports banaction, tipul de bloc reject poate avea spații în interior. Trebuie să citați asta.

Exemplu:

[sshd]
banaction=iptables_allports[blocktype="REJECT --reject-with icmp-port-unreachable"]

Al doilea lucru interesant: atât banaction cât și jail config au un parametru numit "protocol". Am fost mai întâi confuz când configurația de mai jos nu a aruncat nicio eroare, dar nu a blocat cererile UDP:

[numit-ddos]
banaction=iptables_allports[blocktype=DROP,protocol=all]

S-a întâmplat pentru că îmi lipsea protocolul=toate setarea din închisoare. Trebuie să specificați protocol=all la nivel de închisoare:

[numit-ddos]
banaction=iptables_allports[blocktype=DROP,protocol=all]
protocol=toate

Motivul pentru aceasta este că secțiunea named-ddos creează un nou lanț în iptables, iar ip-urile interzise creează reguli în interiorul acelui lanț. Dacă nu specificați protocol=all la nivel de închisoare, atunci lanțul va fi definit astfel:

INTRARE în lanț (politica DROP 22 pachete, 952 octeți)
 pkts bytes target prot opt ​​in out source destination         
 1371 229K named-ddos tcp -- * * 0.0.0.0/0 0.0.0.0/0           

Este adevărat, că banația va crea reguli cu proto=all în interiorul lanțului, dar lanțul în sine nu va fi folosit pentru pachete non-tcp. Concluzia este că trebuie să specificați protocol=all atât la nivelul închisorii, cât și la banație (dacă îl acceptă), altfel nu va funcționa.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.