denyhosts-2.6_7 Script to thwart ssh attacks

Tomáš Drgoň tomas.drgon at truni.sk
Thu Jan 17 15:53:31 CET 2019


Potom pam_af vlastne funguje ako denyhosts. Zo zakazanej IP nie je 
dovolene zadat heslo a prihlasit sa do SSH.   Teda v logu 
/var/log/auth.log to je takto :

Jan 17 15:07:59 mailgw sshd[29032]: Disconnecting invalid user mike 
91.236.116.214 port 58662: Change of username or service not allowed: 
(mike,ssh-connection) -> (monitor,ssh-connection) [preauth]

A teda v logoch (aj messages) su stale viditelne pokusy o prihlasenie 
(tapetovanie pokracuje).

Dik za ponuku pam_af ostanem pri denyhosts. Uz som celkom pokrocil a je 
tu aj ta funkcionalita, ktoru mas v TODO, teda export/synchronizacia 
zakazanych IP. Tiez je tu bohate nastvenie pravidiel a expiracie 
zakazanych IP. Tak dalej IP pojdu do ipfw.

REGEX (python):
(Uz ked ja som bol lenoch, tak napisem ako som to jednoducho poriesil.)

Default hlada a blokuje IP ked pride k samotnemu neuspesnemu zadaniu hesla :
[a|A]uthentication error for (?P<invalid>invalid user |illegal user 
)?(?P<user>.*?) from (?P<host>.*)
najde riadok a vytiahne z neho usera a IP :
Jan 16 20:40:18 mailgw sshd[14683]: error: PAM: Authentication error for 
illegal user admin from 197.248.154.82

a ja som chel blokovat aj neuspesne pokusy /ked uz ta informacia tu je/  :
Jan 16 18:31:25 mailgw sshd[5552]: Failed unknown for invalid user admin 
from 113.215.56.214 port 51163 ssh2
Takze pridal som :
USERDEF_FAILED_ENTRY_REGEX=Failed unknown for invalid user (?P<user>.*) 
from (?P<host>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})

No a nie je dobre sa hrat s regex priamo na serveri, pretoze sa pokazia 
data denyhostu.
Takze  pouzil som program Kiki (Tool for python regular expression 
testing) a potom uz to je jednotuche, zalozka samle text, zalozka 
matches hore zadat regex a moze sa ladit python regex.

S pozdravom
Tomáš Drgoň

On 17. 1. 2019 13:23, Dan Lukes wrote:
> Tomáš Drgoň wrote on 17. 1. 2019 11:13:
>> co pouzivate na blokovanie utokov na SSH ?
>
> Ja pouzivam pam_af - do roku 2012 byl v portech, pak z nich vypadl 
> protoze se nenasel maintainer. Ale je stale funkcni.
>
> V pripade zajmu muzu poskytnout, vcetne puvodniho 
> "/usr/ports/security/pam_af" adresare, takze s tim jde pracovat jako 
> se standardnim FreeBSD portem.
>
> Je to PAM modul, to znamena, ze neresi jen SSH, ale cokoliv co pri 
> prihlasovani pouziva PAM framework.
>
> Jinak je to ale pomerne primitivni nastroj - podle IP, ze ktere pokus 
> o autentizaci prichazi se vybere pravidlo (to abys, napriklad, mohl 
> byt vuci zamestnancum z vnitrni site tolerantnejsi ne vuci externim 
> klientum), a pravidlo rika, kolik neuspesnych pokusu za stanoveny cas 
> muze z konkretni zdrojove IP prijit. Pokud pocet stanovenou mez 
> presahne, je prihlaseni z teto IP na stanovenou dobu zablokovano.
>
> Obvykle dovoluju sedm pokusu za pet minut, ale lze byt jak podstatne 
> prisnejsi, tak benevolentnejsi
>
> Nevyhodou je, ze modu neblokuje moznost spojeni na dany server - jen 
> moznost prihlaseni. Porad je mozny DoS utok (pri kterem se do faze 
> prihlasevani nemusi ani dojit). Na druhou stranu, prakticky se s 
> temihle utoky moc nepotkavam - typicky utocnik chce najit heslo a chce 
> mit klid a dostatek casu an jeho hledani, proto to vetsinou zkousi tak 
> aby sever nepretizil a tim na sebe neupozorni.
>
> Kdesi hluboko v TODO listu mam, ze bych si ho upravil, aby se 
> informace o neuspesnych pokusech o prihlaseni daly ukladat z vice 
> chranenych serveru do jedne databaze a tak by pokusy o utocnika na 
> jednom serveru vedly k zablokovani dane IP na vsech, ale je to v TODO 
> listu opravdu hodne hluboko a tak, prestoze je to uprava spis 
> jednouducha to na brzkou implementaci moc nevypada ...
>
> Dan


More information about the Users-l mailing list