Come promesso eccovi in questo articolo dove parlo di fail2ban, eccovi la mia regola per bloccare i tentativi di utilizzo imporprio del vostro asterisk per usare i vostri provider SIP.
Per prima cosa, se non vi serve l’accesso dall’esterno al vostro asterisk, non fatelo 😀 che vivrete meglio, dato che degli attacchi sono sempre più comuni.
Ho preso un filtro preesitente e lo modificato inserendo le failregex adeguate, io sono partito da postfix
Verificando il chan_sip.c ho notato che tutti i fail sono composti cosi (le mie regole sono per 1.4 potrebbero differire dalla 1.6, quando passero ad asterisk 1.6 o ad asterisk 1.8 le modifichero)
Registration from ‘%s’ failed for ‘%s’ – %s
Failed to authenticate user %s for SUBSCRIBE
# Fail2Ban file di configurazione # # # $Revision: 1 $ # [Definition] # Option: failregex # Notes.: regex to match the password failures messages in the logfile. The # host must be matched by a group named "host". The tag "" can # be used for standard IP/hostname matching and is only an alias for # (?:::f{4,6}:)?(?P\S+) # Values: TEXT # failregex = NOTICE.* .*: Registration from '.*' failed for '' - .* NOTICE.* .*: Failed to authenticate user .*@.* # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
Questo file lo salvo in /etc/fail2ban/filter.d/asterisk.conf
Ora modifico il file jail.conf aggiungendo il blocco seguente
Ho settato il ban time ad 1 ora sono buono 😀
[asterisk-iptables] enabled = true filter = asterisk action = iptables[name=ASTERISK, port=5060, protocol=udp] sendmail-whois[name=ASTERISK, dest=ILTUOEMAIL, sender=fail2ban@ILTUODOMINIO] logpath = /var/log/asterisk/full bantime = 3600 maxretry = 5
La linea
sendmail-whois[name=ASTERISK, dest=ILTUOEMAIL, sender=fail2ban@ILTUODOMINIO]
è facoltativa
Modifichiamo il log di asterisk /etc/asterisk/logger.conf
In general assicuriamoci che la linea dateformat non sia commentata
[general] dateformat=%F %T
Nella sezione logfiles, che la linea full non sia commentata
full => notice,warning,error
Entriamo nella console di asterisk e ricarichiamo il logger
logger reload
Infine ricarichiamo le regole in fail2ban
failban-client reload