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