Newsgroup: it.comp.os.linux.sys
Titolo: fail2ban regola doppia

Guardando le statistiche degli user che bussano alla porta 22, ho visto (e mi
sembra ovvio) che "root" é stra-grandemente gettonato.
Oltre alla classica regola che sbatte fuori dopo n tentativi, ne volevo
aggiungere una che in caso di utente "root", chiuda le porte al primo
tentativo.
Fattibile?
Se si, come sarebbe meglio scriverla [1]?
 
 
[1]
Oct 12 01:05:59 piripicchio sshd[31961]: Failed password for invalid user root
from 188.190.98.6 port 58077 ssh2
 
-- 
+---------------------------------------------------------------------------+
| ... e come dissero Gargantua e Pantagruel al termine di un lauto pranzo:  |
|     Anche oggi abbiamo contribuito a ridurre la fame nel mondo...         |
+-----#26--------------------Campagna contro le pubblicita` idiote.---------+


 
 
Io direi di disabilitare l' accesso diretto a root se non l' hai fatto
 

 Se si, come sarebbe meglio scriverla [1]?
 
Sarebbe meglio non scriverla proprio. Root non dovrebbe accedere via
SSH, e se realmente serve che possa accedere direttamente allora si
consente solo l'accesso con chiave e non con password.
In /etc/ssh/sshd_config metti:
PermitRootLogin without-password
 
-- 
Flavio Visentin
 
Scientists discovered what's wrong with the female brain: on the left
side, there's nothing right, and on the right side, there's nothing left

 Io direi di disabilitare l' accesso diretto a root se non l' hai fatto
 
Root é disabilitato di default totalmente, si accede solo tramite sudo da un
solo e specifico utente.
Solo che in troppi ci provano e mi trovo chilometrici log!
Sono obbligato a tenere la 22 aperta, purtroppo!
E no, non posso spostare ssh su un'altra porta!
Attualmente, con fail2ban ho lasciato 6 tentativi prima del ban, solo per
alcuni utenti, spalmato su 3 ore.
Per ridurre i log, pensavo di bannare l'accesso a root al primo tentativo, in
quanto, di solito ci provano diverse volte, prima di passare oltre.
 
-- 
+---------------------------------------------------------------------------+
| Non asciugarti le palle col phon! Le bruci e poi ti nascono figli neri... |
| (Sentita nello spogliatoio)                                               |
+-----#27--------------------Campagna contro le pubblicita` idiote.---------+

 PermitRootLogin without-password
 
EHMMM! Root non accede in nessun modo!
Cone dicevo a enoquick, il problema non é l'accesso a root, che non esiste e
non é possibile, ma solo per ridurre i chilometrici log di coloro (bot) che
testardamente si ostinano a provarci!
 
Poi per alcuni pc, ho l'accesso tramite certificato, e solo con un utente
specifico, ma non mi azzardo ad installarlo nel pc portatile che ho in
dotazione in ufficio ed a cui sono autorizzati alcuni miei colleghi ad
utilizzarlo in mia assenza (non li reputo in grado, se non appositamente
istruiti, ad installare un keylogger)!



 
Si, capisco
Ma l' opzione maxretry  del file configurazione 
(/etc/fail2ban/jail.conf) non va bene o non funziona ?
 

 (/etc/fail2ban/jail.conf) non va bene o non funziona ?
 
L'opzione funziona, ed ho bisogno che sia superiore ad almeno 5-6 per poter
accedere col mio utente; in diversi casi mi cade la connessione al login e non
voglio essere sbattuto fuori.
Per contro ho decine e decine di righe (inutili) di log di tentati accessi come
root.
Il supporto di memoria é una schedina sdhc, e meno scritture faccio...
 
 
-- 
+---------------------------------------------------------------------------+
|  Tu DiCi PuttAna A Me QuandO l'uniCa Parte Vergine Del TuO cOrpO è il     |
|  CervellO VistO Che nOn Centra Mai Un CaZzO?!?                            |
+-----#35--------------------Campagna contro le pubblicita` idiote.---------+


 
OK, occorre fare in modo che fail2ban filtri per utente
L' opzione failregex del file filter.d/sshd.conf dovrebbe fare al caso tuo
Puo modificare le espressioni regolari in modo che tengano conto solo di 
root
 
A quel punto puoi impostare maxretry a 1
 

 root
 
Più che altro devi aggiungere un nuovo filtro, chiamato 
p.es
.
/etc/fail2ban/filter.d/sshdroot.conf così fatto:
 
===========================
 
	[INCLUDES]
	before = common.conf
 
	[Definition]
	_daemon = sshd
 
	failregex = ^%(__prefix_line)s[iI](?:llegal|nvalid) user root from
<HOST>\s*$
 
	ignoreregex =
 
===========================
(la regola failregex tutta su una riga)
 
Poi in /etc/fail2ban/jail.conf aggiungerai:
 
	[sshdroot]
	enabled  = true
	port     = ssh
	filter   = sshdroot
	logpath  = /var/log/auth.log
	maxretry = 1


 /etc/fail2ban/filter.d/sshdroot.conf così fatto:
 
[CUT]
 
Non dovresti scriverlo a me, il problema non è mio
 
Comunque aggiungendo un file occorrerebbe sincerarsi dei filtri 
impostati in filter.d/sshd.conf
 

 <HOST>\s*$
 
La regola sopra, non li becca tutti; dato che (era ovvio) ï¿œ estrapolata tra
quelle di default per ssh, ho modificato come segue, e sembra funzionare:
 
failregex = ^%(__prefix_line)sFailed (?:password|publickey) for invalid user
root from <HOST>(?: port \d*)?(?: ssh\d*)?$
            ^%(__prefix_line)sUser root from <HOST> not allowed because not
listed in AllowUsers$
 
Thank!
 
-- 
+----------------------------------------------------------------------------+
|             Due galli in un pollaio senza galline, diventano gay?          |
+-----#41--------------------Diamanti di saggezza.---------------------------+

 impostati in filter.d/sshd.conf
 
Scrivendo una regola estrapolata da quella standard, in questo caso, non
sembrano esserci controindicazioni.
 
-- 
+---------------------------------------------------------------------------+
|  Se fai rifornimento dopo le 22,30 aumentiamo i prezzi di soli            |
|  70 centesimi al litro.                                                   |
+-----#7---------------------Campagna contro le pubblicita` idiote.---------+


 
Puoi darsi,non ho mai approfondito piu di tanto fail2ban
Se lo affermi tu,non ho motivi di dubitare piu di tanto
 
 
 


 
Perfetto !!
 

 testardamente si ostinano a provarci!
 
Io ho creato fail2ban/sshd-root.local con:
 
 [Definition]
 failregex = sshd\[\S*\]: error: PAM: Authentication failure for root from <HOST>
 ignoreregex = 
 
e in jail.local:
 
 [ssh-root]
 enabled = true
 port    = ssh
 filter  = sshd-root
 logpath  = /var/log/auth.log
 maxretry = 2
 findtime = 2419200
 bantime = 604800
 
non ricordo perchè 2, forse con 1 non ti fa manco entrare in chiave.
 
-- 
  ...coraggio liberisti, buttate giu' le carte
  tanto ci sara` sempre chi paghera` le spese
  in questo benedetto assurdo bel paese.		(F. Guccini)

  failregex = sshd\[\S*\]: error: PAM: Authentication failure for root from
 
Facendo il test non mi trova alcun nesso!
 
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshdroot.conf
 
Running tests
=============
 
Use regex file : /etc/fail2ban/filter.d/sshdroot.conf
Use log file   : /var/log/auth.log
 
 
Results
=======
 
Failregex
|- Regular expressions:
|  [1] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?
\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S+\))?[\]\)]?:
(?:\[\d+\])?:)?\s*Failed (?:password|publickey) for invalid user root from
<HOST>(?: port \d*)?(?: ssh\d*)?$
|  [2] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?
\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S+\))?[\]\)]?:
(?:\[\d+\])?:)?\s*User root from <HOST> not allowed because not listed in
AllowUsers$
|  [3] sshd\[\S*\]: error: PAM: Authentication failure for root from <HOST>
|
`- Number of matches:
   [1] 24 match(es)
   [2] 23 match(es)
   [3] 0 match(es)
 
 
 
-- 
+---------------------------------------------------------------------------+
|     Il Pascal e' un linguaggio giocattolo fatto per insegnare la          |
|     programmazione ai matematici.                                         |
+-----#20--------------------Campagna contro le pubblicita` idiote.---------+

 Facendo il test non mi trova alcun nesso!
 
Caspita! Forse è di una vecchia versione di debian, e non ho più verificato.
 
Verifico, grazie. ;)
 
-- 
  Meno male
  che adesso non c'e` Nerone...				(E. Bennato)

 Verifico, grazie. ;)
 
Ecco, la regex che uso ora è:
 
	failregex = ^%(__prefix_line)sFailed (?:password|publickey) for root from <HOST>(?: port \d*)?(?: ssh\d*)?$
 
e sembra funzionare bene. ;-)
 
-- 
  Il ministro dei temporali in un tripudio di tromboni
  auspicava democrazia con la tovaglia sulle mani
  e le mani sui coglioni				(F. De Andre`)