В этом руководстве я покажу вам, как обеспечить безопасность Asterisk и FreePBX, настроив эффективный черный список VoIP с использованием фильтрации географического местоположения.
В настоящее время существует множество попыток брута и мошенничества с VoIP, нацеленные на Asterisk, FreePBX и любую другую систему PBX в Интернете.
Задача любого системного администратора минимизировать вероятность успеха для таких попыток – близко к нулю.
Один из способов защитить Asterisk и FreePBX от таких попыток – использование Fail2ban и VoIP Blacklist.
Раз вы уже потратили какие-то средства и решили купить АТС, можно сделать шаг , который позволит сэкономить вам пропускную способность и защитить ваш бизнес.
Чтобы упростить нашу работу, мы будем использовать VoIPBL, который является распределенным черным списком VoIP, который направлен на защиту от мошенничества с VoIP и минимизацию злоупотребления сетью, имеющей общедоступные PBX’s.
Как VoIPBL защищен?
Функция VoIPBL Geolocation позволяет блокировать весь сетевой трафик из стран, с которыми сети не нужно связываться, или которые являются известными создателями вредоносной активности.
На ссайте вы можете проверить, находится ли ваш IP-адрес в черном списке.
Как установить VoIPBL
Черный список VoIP зависит от Fail2ban, чтобы реализовать черный список на вашем сервере PBX.
Убедитесь, что установлен пакет fail2ban и запущен сервис:
sudo yum install epel-release sudo yum install fail2ban fail2ban-systemd
Для Ubuntu и других ос семейства Debian выполните:
sudo apt-get -y install fail2ban ufw
Если вы используете CentOS 6 или любое другое семейство RHEL 6, установите iptables-services и fail2ban без 2ban-systemd
sudo yum install iptables-services fail2ban
Настройки по умолчанию для Fail2ban находятся в ./etc/fail2ban/jail.conf
Базовая конфигурация fail2ban будет иметь мониторинг ssh. Давайте добавим это в файл /etc/fail2ban/jail.local.
$ sudo vim /etc/fail2ban/jail.local
Добавьте следующий контент:
[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
Затем запустите и включите службу fail2ban
sudo systemctl enable fail2ban.service sudo systemctl start fail2ban.service
Загрузите скрипт voipbl.sh и поместите в /usr/local/bin/
wget http://www.voipbl.org/voipbl.sh -O /usr/local/bin/voipbl.sh
Сделайте исполняемым скрипт:
chmod +x /usr/local/bin/voipbl.sh
В приведенном выше примере используется iptables.
Если ваша система поддерживает ipset, вы можете использовать следующий скрипт:
#!/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"
Затем добавьте новый jail Fail2ban в /etc/fail2ban/jail.conf:
[asterisk-iptables] action = iptables-allports[name=ASTERISK, protocol=all] voipbl[serial=XXXXXXXXXX]
Теперь определите действия Blacklist для протокола Fail2ban по адресу /etc/fail2ban/action.d/voipbl.conf.
sudo vim /etc/fail2ban/action.d/voipbl.conf
Добавьте
# 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
Теперь мы можем создать файл задания cron для обновления правил каждые 3 часа:
$ sudo vim /etc/cron.d/voipbl # update blacklist each 4 hours 0 */4 * * * * root /usr/local/bin/voipbl.sh
Теперь мы можем создать файл задания cron для обновления правил каждые 3 часа:
$ sudo vim /etc/cron.d/voipbl # update blacklist each 4 hours 0 */4 * * * * root /usr/local/bin/voipbl.sh
Когда это будет сделано, перезапустите fail2ban daemon, чтобы включить защиту от VoIP-мошенничества:
sudo systemct restart fail2ban
Вы также можете выполнять расширенные настройки, такие как:
- Фильтровать по странам
- Фильтровать по сети
Коллега, приветствую!
А как сделать то же самое, но с задействованием не iptables, а ufw ?
Весьма признателен за содействие.
Добрый день!
У ufw синтаксис совсем другой, так сходу не сказать
Приветствую!
А как сделать то же самое, но не с помощью iptable, а с помощью ufw ?
Признателен.
Я эту информацию на нескольких сайтах видел. Везде вместе с fail2ban ставят ufw, но настроек для ufw нет. Меня, как пользователя, iptables вполне устраивает, но, чтобы не вводить никого в заблуждение, уберите из команды установки ufw…. или опишите и её применение.