Proteggi Asterisk e FreePBX dalle frodi VoIP e dagli attacchi di forza bruta
In questa guida, ti mostrerò come proteggere la tua configurazione Asterisk e FreePBX impostando un'efficace lista nera VoIP utilizzando il filtro della geolocalizzazione. Al giorno d'oggi ci sono molti attacchi di forza bruta e tentativi di frode VoIP che prendono di mira Asterisk, FreePBX e qualsiasi altro sistema PBX su Internet.
È compito di qualsiasi amministratore di sistema garantire che il tasso di successo di tali tentativi sia ridotto al minimo, vicino allo zero. Un modo per proteggere Asterisk e FreePBX da tali tentativi è utilizzare Fail2ban e VoIP Blacklist.
Ciò ti farà risparmiare larghezza di banda e proteggerà la tua attività. Per semplificare il nostro lavoro, utilizzeremo VoIPBL, una lista nera VoIP distribuita che ha lo scopo di proteggere dalle frodi VoIP e ridurre al minimo l'abuso di una rete che dispone di PBX accessibili pubblicamente.
Questa guida fa parte della creazione di un sistema VOIP aziendale open source su Linux. Se non hai installato Asterisk o FreePBX, controlla:
Per Ubuntu e Debian: Come installare Asterisk 16 con FreePBX 14 su Ubuntu/Debian
Come installare Asterisk 16 LTS su CentOS 7/Fedora
Quanto è sicuro il VoIPBL?
La funzionalità di geolocalizzazione VoIPBL ti consente di bloccare tutto il traffico di rete proveniente da paesi con cui una rete non ha bisogno di comunicare o che sono noti all'origine di attività dannose. Dal loro sito puoi verificare se il tuo indirizzo IP è sulla lista nera.
Come installare VoIPBL
La lista nera VoIP dipende da Fail2ban per effettuare la lista nera sul tuo server PBX. Assicurati di avere un pacchetto fail2ban
installato e un servizio in esecuzione:
sudo yum install epel-release
sudo yum install fail2ban fail2ban-systemd
Per Ubuntu e altre famiglie Debian, esegui:
sudo apt-get -y install fail2ban ufw
Se utilizzi CentOS 6 o qualsiasi altra famiglia RHEL 6, installa iptables-services
e fail2ban senza fail2ban-systemd
sudo yum install iptables-services fail2ban
Le impostazioni predefinite per Fail2ban sono configurate su./etc/fail2ban/jail.conf
Una configurazione fail2ban di base avrà il monitoraggio SSH. Aggiungiamolo al file /etc/fail2ban/jail.local
.
$ sudo vim /etc/fail2ban/jail.local
Aggiungi il seguente contenuto:
[postfix]
enabled = true
port = smtp
filter = postfix
logpath = /var/log/mail.log
maxretry = 3
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
[vsftpd]
enabled = false
port = ftp
filter = vsftpd
logpath = /var/log/auth.log
maxretry = 5
[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3
Quindi avvia e abilita il servizio fail2ban:
sudo systemctl enable fail2ban.service
sudo systemctl start fail2ban.service
Scarica lo script voipbl.sh
e posizionalo in /usr/local/bin/
wget http://www.voipbl.org/voipbl.sh -O /usr/local/bin/voipbl.sh
Rendi eseguibile lo script:
chmod +x /usr/local/bin/voipbl.sh
Quanto sopra utilizza iptables. Se il tuo sistema supporta ipset, puoi utilizzare invece il seguente script:
#!/bin/bash
URL="http://www.voipbl.org/update/"
set -e
echo "Downloading rules from VoIP Blacklist"
wget -qO - $URL -O /tmp/voipbl.txt
echo "Loading rules..."
# Check if rule set exists and create one if required
if ! $(/usr/sbin/ipset list voipbl > /dev/null 2>&1); then
ipset -N voipbl iphash
fi
#Check if rule in iptables
if ! $(/sbin/iptables -w --check INPUT -m set --match-set voipbl src -j DROP > /dev/null 2>&1); then
/sbin/iptables -I INPUT 1 -m set --match-set voipbl src -j DROP
fi
# Create temporary chain
ipset destroy voipbl_temp > /dev/null 2>&1 || true
ipset -N voipbl_temp iphash
cat /tmp/voipbl.txt |\
awk '{ print "if [ ! -z \""$1"\" -a \""$1"\" != \"#\" ]; then /usr/sbin/ipset -A voipbl_temp \""$1"\" ;fi;"}' | sh
ipset swap voipbl_temp voipbl
ipset destroy voipbl_temp || true
echo "Done! Rules loaded"
Quindi aggiungi una nuova jail Fail2ban su /etc/fail2ban/jail.conf
:
[asterisk-iptables]
action = iptables-allports[name=ASTERISK, protocol=all]
voipbl[serial=XXXXXXXXXX]
Ora definisci le azioni della Blacklist VoIP per Fail2ban su /etc/fail2ban/action.d/voipbl.conf.
sudo vim /etc/fail2ban/action.d/voipbl.conf
Aggiungere :
# Description: Configuration for Fail2Ban
[Definition]
actionban = <getcmd> "<url>/ban/?serial=<serial>&ip=<ip>&count=<failures>"
actionunban = <getcmd> "<url>/unban/?serial=<serial>&ip=<ip>&count=<failures>"
[Init]
getcmd = wget --no-verbose --tries=3 --waitretry=10 --connect-timeout=10 \
--read-timeout=60 --retry-connrefused --output-document=- \
--user-agent=Fail2Ban
url = http://www.voipbl.org
Ora possiamo creare un file cron job per aggiornare le regole ogni 3 ore:
$ sudo vim /etc/cron.d/voipbl
# update blacklist each 4 hours
0 */4 * * * * root /usr/local/bin/voipbl.sh
Al termine, riavvia il demone fail2ban per proteggerti dalle frodi VoIP:
sudo systemct restart fail2ban
Puoi anche eseguire configurazioni avanzate come:
- Filtra per Paese
- Filtra per rete
Per ulteriori letture, controlla il documento Asterisk Security di VOIP-info.