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
--
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem