Buenos días Moises! Ayer estuve revisando logs y encontré algo similar, así que me dí a la tarea de crear un REGEX para captar éstos intentos de hack. Una de las mayores ventajas de Issabel es que nos deja entrar a CLI y eso nos dá muchísimas libertades y una de ellas viene en poder configurar servicios como fail2ban. Como bien comentas, dentro del archivo de configuración del filtrado para asterisk, podemos agregar ó modificar las Expresiones Regulares que servirán para comparar contra los logs del Asterisk. Es bien importante tener cuidado con la sintaxis, dado que como bien apuntas, puede variar entre versiones.
El REGEX quedó como sigue:
%(log_prefix)s SecurityEvent=\"ChallengeSent",EventTV=\"[\d-]+\",Severity=\"[\w]+\",Service=\"[\w]+\",EventVersion=\"\d+\",AccountID=\"sip(:\d+)?[@]+@((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?);transport=UDP\",SessionID=\"0x[\da-f]+\",LocalAddress=\"IPV[46]\/(UD|TC)P\/((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/\d+\",RemoteAddress=\"IPV[46]\/(UD|TC)P\/<HOST>\/\d+\",Challenge=\"\w+\"$
Entendiendo que deben estar resueltos todos los temas del logger de asterisk y el jail de fail2ban, éste REGEX considera lo siguiente:
1. Los peers declarados tanto en SIP como en IAX no deben estar nombrados como extensiones, que de hecho no es buena práctica; hay que nombrarlos con caracteres alfanuméricos.
2. El REGEX tomará todos los registros de tipo "ChallengeSent", que, dentro de la declaración de AccountID tengan una sintaxis de SIP URI y que además soliciten un peer numérico. Así evitamos falsos positivos.
Una vez configurado, antes de reiniciar servicios de fail2ban, les recomiendo correr el comando:
fail2ban-regex /var/log/asterisk/fail2ban2 /etc/fail2ban/filter.d/asterisk.conf
Mismo que reportará las coincidencias encontradas, y podrán saber si hicieron bien su trabajo, en mi caso tengo éstos resultados:
`- Number of matches:
[1] 277 match(es)
[2] 0 match(es)
[3] 0 match(es)
[4] 0 match(es)
[5] 0 match(es)
[6] 0 match(es)
[7] 0 match(es)
[8] 0 match(es)
[9] 0 match(es)
[10] 0 match(es)
[11] 0 match(es)
[12] 0 match(es)
[13] 29 match(es)
[14] 0 match(es)
[15] 266 match(es)
[16] 0 match(es)
[17] 0 match(es)
[18] 272 match(es)
[19] 272 match(es)
[20] 0 match(es)
[21] 88 match(es)
[22] 451 match(es)
Mi última línea, la 22 contiene el REGEX que les compartí. Si ustedes tienen resultados que caigan en su REGEX, entonces si procedan a reiniciar su servicio de fail2ban.
Y si así lo considera la comunidad, podríamos mejorar e incluir ésta regla en Issabel.
Saludos!!