Voipblock per DGA4130 e DA4132: blacklist chiamate per Smart Modem Plus e TIM HUB

Grazie allo sforzo congiunto di una intera community è stato possibile sbloccare molti modem/router prodotti da Technicolor e basati su OpenWrt Chaos Calmer 15.05.1, tra questi il Smart Modem Plus DGA4130 (AGTEF) ed il TIM HUB DGA4132 (AGTHP).

Dopo lo sblocco è inoltre anche possibile installare una GUI che permette di accedere a tutte le funzionalità del dispositivo.

È possibile trovare maggiori informazioni qui, qui e qui.

La laboriosa community ha inoltre proposto diverse implementazioni di un sistema per creare una blacklist di chiamate, alcune implementazioni utilizzano il firewall iptables, altre implementazioni utilizzano asterisk.

Di seguito viene proposta una nuova soluzione chiamata Voipblock, che sfrutta anch'essa il firewall iptables ma che si distingue leggermente dalle altre:

  • completamente integrata col firewall iptables
  • completamente gestibile da riga di comando
  • non altera la funzionalità della rubrica nella GUI
  • può utilizzare una blacklist di numeri inseriti manualmente in uno specifico file in locale
  • può utilizzare una blacklist di numeri recuperati online da questo elenco in continuo aggiornamento
  • può utilizzare sia la blacklist locale che la blacklist online
  • è possibile creare una whitelist per sbloccare i numeri della blacklist online

L'implementazione è realmente molto semplice, occorre creare un nuovo file di configurazione del firewall iptables:

/etc/firewall.voipblock

#!/bin/sh
# License: GPL
#
# Author: Mentor <[email protected]>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
#SETTINGS
local_blacklist=off
online_blacklist=on

for number in `iptables --list INPUT | grep sip | awk '{print $10}' | sed 's/\"//g'`; do
  iptables -D INPUT -p udp --dport 5060 -m string --algo bm --string $number -j REJECT
done

if [ ! -z "$local_blacklist" ] && [ "$local_blacklist" = "on" ] && [ -f /etc/voipblock/voipblock.blacklist ]; then
  for number in `cat /etc/voipblock/voipblock.blacklist`; do
    iptables -I INPUT -p udp --dport 5060 -m string --algo bm --string $number -j REJECT
  done
fi

if [ ! -z "$online_blacklist" ] && [ "$online_blacklist" = "on" ]; then
  if [ ! -z "$local_blacklist" ] && [ "$local_blacklist" = "on" ] && [ -f /etc/voipblock/voipblock.blacklist ]; then
    for number in `curl https://www.internauta37.altervista.org/host/files/voipblock/voipblock.blacklist`; do
      if ! grep -q $number /etc/voipblock/voipblock.blacklist /etc/voipblock/voipblock.whitelist; then
        iptables -I INPUT -p udp --dport 5060 -m string --algo bm --string $number -j REJECT
      fi
    done
  else
    for number in `curl https://www.internauta37.altervista.org/host/files/voipblock/voipblock.blacklist`; do
      iptables -I INPUT -p udp --dport 5060 -m string --algo bm --string $number -j REJECT
    done
  fi
fi

e renderlo eseguibile con il classico chmod +x /etc/firewall.voipblock

Questo script si occupa di recuperare i numeri dall'elenco online e dai due files della blacklist e whitelist:

/etc/voipblock/voipblock.blacklist

/etc/voipblock/voipblock.whitelist

e crea per ogni numero una regola iptables come questa(*):

iptables -I INPUT -p udp --dport 5060 -m string --algo bm --string NUMBER -j REJECT

Di default è attivo il solo elenco online.

Per integrare il nuovo script nel firewall occorre editare il file /etc/config/firewall ed aggiungere:

config include
        option path '/etc/firewall.voipblock'
        option reload '1'

Si può infine inserire un cronjob per automatizzare il recupero dei numeri:

0 4 * * * /etc/firewall.voipblock

Section: 

Commenti

Aggiungi un commento