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