Puncte:0

Valoarea de utilizare a din expresia regex fail2ban

drapel es

Încerc să trimit e-mail mie și utilizatorului că cineva a încercat să se conecteze la ssh-ul lor și nu a reușit - IP-ul a fost interzis. Dar nu înțeleg cum pot folosi variabila în e-mailul pe care încerc să-l trimit.

Sendmail este configurat corect deoarece e-mailurile sunt trimise fără probleme.

Aici este configurația mea jail.local

[sshd]
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
acțiune = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="% (lanţuri"]
             %(mta)s-whois-lines-ssh[name=%(__name__)s, sender="%(sender)s", dest="%(destemail)s", logpath=%(logpath)s, chain= "%(lanţuri"]

Și aici este acțiunea mea.d/sendmail-whois-lines-ssh.conf

[INCLUSE]

înainte = sendmail-common.conf
         helpers-common.conf

[Definiție]

norrestored = 1
actionban = ( printf %%b „Subiect: [Fail2Ban] <nume>: interzis <ip> de la <fq-hostname>
            Data: `LC_ALL=C data +"%%a, %%d %%h %%Y %%T %%z"`
            De la: <sendername> <<sender>>
            Către: <dest>, <F-USER>@mydomain.cz\n
            Bună,\n
            IP-ul <ip> tocmai a fost interzis de Fail2Ban după
            <eșecuri> încercări împotriva <nume>.\n\n
            Iată mai multe informații despre <ip> :\n
            `/usr/bin/whois <ip> || echo lipsește programul whois`\n\n
            Linii care conțin eșecuri ale <ip>\n";
            %(_grep_logs)s;
            printf %%b „\n
            Cu respect,\n
            Fail2Ban" ) | /usr/sbin/sendmail -f <sender>.mydomain.cz <dest> <F-USER>@mydomain.cz

[Init]
nume = implicit
logpath = /dev/null

E-mailul trimis mie este în regulă, deoarece este preluat corect din configurare, dar <F-USER> nu are valoare, așa că este trimis la @mydomain.cz

Cum pot obține valoarea astfel încât să pot trimite e-mailul utilizatorului?

EDITAȚI | × Expresia regex care este lovită pe SSH este aceasta:

^pam_unix\(sshd:auth\):\s+erec de autentificare;\s*logname=\S*\s*uid=\d*\s*euid=\d*\s*tty=\S*\s *ruser=<F-USER>\S*</F-USER>\s*rhost=<HOST>\s.*%(__suff)s$
drapel es
Asta nu contează în acest context, de fapt este gol, deci dacă e-mailul nu este trimis în niciun fel
Puncte:1
drapel il

Încerc să trimit e-mail mie și utilizatorului că cineva a încercat să se conecteze la ssh-ul lor și nu a reușit

Am puține îndoieli legate de această abordare, de exemplu de o anumită „vulnerabilitate” posibil introdusă prin aceasta - RE <F-USER>\S*</F-USER> ar potrivi orice până la primul spațiu, deci, de exemplu, dacă se potrivește „nume de utilizator” va fi [email protected],test e-mailul dvs. va fi trimis și către [email protected], care poate să nu fie utilizatorul domeniului dvs. De asemenea, mi-aș putea imagina alte scenarii, deoarece încercați să utilizați intrare străină (din jurnal) în acțiunea de e-mail - deci mai bine asigurați-vă că acest lucru nu este afectat de o posibilitate de injectare (de asemenea, rețineți GHSA-m985-3f3v-cwmm de exemplu).

Expresia regex care este lovită pe SSH este aceasta...

Fairegex-ul trebuie să conțină și <F-USER>...</F-USER> pentru a captura valoarea care va fi stocată ca nume de utilizator și trebuie să se potrivească cu ceva.

Aici este un exemplu de cum arată în versiunea curentă (rețineți că nu este o eroare RE din cauza <F-NOFAIL> etichetă, este doar un ajutor pentru a găsi IP pentru mesajele fără IP, vezi issues/3189#issuecomment-999571654 pentru detalii).

Astfel <F-ALT_USER> este un nume de utilizator alternativ și îl va stoca în F-USER grup capturat în bilet, dacă face parte <F-USER>...</F-USER> s-ar potrivi cu valoarea goală.

Poate (ca în problemele/3189 de mai sus) aveți și backend greșit, așa că treceți la systemd te-ar ajuta să-l potriviți folosind un alt sshd-regex.

Legat de expresia regulă, poate fi schimbată ca aici (back-portat de la filtrul sshd actual):

- ^pam_unix\(sshd:auth\):\s+erec de autentificare;\s*logname=\S*\s*uid=\d*\s*euid=\d*\s*tty=\S*\ s*ruser=<F-USER>\S*</F-USER>\s*rhost=<HOST>\s.*%(__suff)s$
+ ^pam_unix\(sshd:auth\):\s+erec de autentificare;(?:\s+(?:(?:logname|e?uid|tty)=\S*)){0,4}\s+ ruser=<F-ALT_USER>\S*</F-ALT_USER>\s+rhost=<HOST>(?:\s+user=<F-USER>\S*</F-USER>)?%( __suff)s$

Dar acesta este mai degrabă un RE al pam-generic filtru/închisoare, așa cum sa spus deja în probleme/3189, deci nu este corect să folosiți acest lucru pentru închisoarea sshd (în mod normal, veți vedea mesaje diferite în jurnal sau auth.log).

Oricum, pentru a investiga mai profund, este nevoie de exemplu de mesaj (sau mai bine de fragmentul de jurnal cu toate mesajele sshd-session care au cauzat ban).

drapel es
Vă mulțumesc foarte mult pentru răspunsul dumneavoastră exhaustiv!

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.