Prevenim “Brute Force”
Ce e Brute Force și cum de luptat cu el?
În cuvinte simple și pe înțelesul tuturor – să presupunem că întâlniți o persoană și nu-i cunoașteți numele, iar ea refuză să vi-l spună, lăsându-vă însă să i-l ghiciți. Veți pierde o grămadă de timp parcurgând întreaga listă de nume existente. Logic este de a începe cu nume des întâlnite, asftfel, mărind șansa de al ghici mult mai repede. Însă, dacă este un nume mult mai mult decât rar – șansele tind spre zero. Așa ar derula procesul:
– Ion?
– Nu
– Vasile?
– Nu
…
-Nu
Și așa poate dura pânâ la infinit…
Respectiv, persoana e tupeistă și nu-și divulgă numele, tu ești insistent și tot încerci. Iar de ai noroc și-i ghicești numele – obții cam tot ce-ți dorești de la acea persoană.
Acum, o modalitate de a lupta cu brute force, adica, ghicitul parolelor, este de ai acorda câteva șanse de a ghici numele (în eventualitatea că persoanele se cunosc, însă pe moment are o scăpare în memorie). Să-i spunem că ai 3 tentative, în mod normal, vei spune numele din prima iar în cauza unui răufăcător – i se va spune “la revedere” după a 3-a tentativă eșuată (cu excepția cazurilor când e vorba de Ion).
Acum, cum arată soluția din punct de vedere tehnic. Deja, fără epitete, vorbim direct de ssh. Deseori văd prin log-uri mesaje de genul:
1 2 3 4 5 6 7 8 9 10 11 12 |
Sep 19 09:36:49 mx sshd[67988]: Bad protocol version identification '�26�03�03' from 216.129.118.139 ... Sep 19 18:22:51 mx sshd[99137]: Invalid user admin from 222.45.235.77 Sep 19 18:22:55 mx sshd[99147]: Invalid user admin from 222.45.235.77 Sep 19 18:22:59 mx sshd[99149]: Invalid user test from 222.45.235.77 Sep 19 18:23:02 mx sshd[99151]: Invalid user test from 222.45.235.77 Sep 19 18:23:06 mx sshd[99163]: Invalid user user from 222.45.235.77 ... Sep 19 18:45:11 mx sshd[1269]: Invalid user jackson from 222.45.235.77 Sep 19 18:45:14 mx sshd[1280]: Invalid user justin from 222.45.235.77 Sep 19 18:45:18 mx sshd[1285]: Invalid user brandon from 222.45.235.77 Sep 19 18:45:21 mx sshd[1287]: Invalid user john from 222.45.235.77 |
Este clar că, nenica de pe IP-ul 222.45.235.77 î-mi încearcă sistemul, încercând diferite nume (frecvent întâlnite) și parole, presupun că-s de genul 123, sau admin, etc.
Atacul durează, în cazul dat 20min și cu o frecvență de ~3sec
Așa cum, nu pot sta mereu cu nasul în log-uri, am pus o aplicație ce face treaba murdară pentru mine și se numește Sshguard (http://www.sshguard.net/)
Pe FreeBSD se pune și pornește foarte simplu
1 2 3 |
# cd /usr/ports/security/sshguard-ipfw/ # make install clean # vi /etc/syslog.conf |
Decomentăm linia
1 |
auth.info;authpriv.info |exec /usr/local/sbin/sshguard |
Restartăm syslog
1 |
# /etc/rc.d/syslogd reload |
Am făcut un test de pe o altă locație (pentru a nu-mi tăia creanga pe care stau) – câteva tentative eșuate prin introducerea greșită a parolei. Iată ce am prins în log:
1 2 3 4 5 6 7 8 |
Sep 20 14:00:56 mx sshd[72753]: error: PAM: authentication error for sz from 89.28.59.169 Sep 20 14:00:57 mx last message repeated 2 times Sep 20 14:00:59 mx sshd[72758]: error: PAM: authentication error for sz from 89.28.59.169 Sep 20 14:01:00 mx last message repeated 2 times Sep 20 14:01:03 mx sshd[72777]: error: PAM: authentication error for sz from 89.28.59.169 Sep 20 14:01:04 mx last message repeated 2 times Sep 20 14:03:41 mx sshd[72944]: error: PAM: authentication error for sz from 89.28.59.169 Sep 20 14:03:41 mx sshguard[72728]: Blocking 89.28.59.169:4 for >420secs: 4 failures over 165 seconds. |
Respectiv, iată și înregistrarea în ipfw:
1 |
55029 37 4084 deny ip from 89.28.59.169 to me |