среда, 12 октября 2011 г.

APF и BFD для защиты Asterisk

APF используется для того, чтобы управлять iptables, открывать или закрывать порты. У APF есть дополнительные функции, которые заставляют его выделиться выше остальных: Reactive Address Blocking (RAB), поддержка QoS (TOS), интеграция с BFD и многое другое.
BFD расшифровывается как Brute Force Detection (обнаружение брутфорса). Он используется, чтобы контролировать любые неудавшиеся попытки входа в систему и блокировать IP-адреса. Он запускается как демон cron и отлично работает с APF.
Установка обеих программ очень проста. Вы можете загрузить их с сайтов, указанных выше, распаковать и запустить install.sh. Тим также создал скрипт инсталлятора, который устанавливает последнюю версию APF/BFD. Чтобы получить этот скрипт, Вы можете использовать wget. Зайдите под root и выполните следующие команды:
wget http://engineertim.com/install_apf_bfd.sh
chmod 755 install_apf_bfd.sh
./install_apf_bfd.sh
 
APF
Конфиг APF находится в /etc/apf/conf.apf
Чтобы начать редактировать файл, используйте следующую команду:
nano /etc/apf/conf.apf
Ставим the IFACE_IN иIFACE_OUT для сетевого интерфейса, смотрящего в Интернет. Для сетевого интерфейса, смотрящего в локальную сеть, ставим IFACE_TRUSTED.
Рекомендуется установить SET_TRIM=0 для интерфейса, смотрящего в Интернет.
SET_TRIM="0"
У APF есть способность поддерживать QoS. Для SIP и IAX необходимо установить следующее:
TOS_8="21,20,80,4569,5060,10000_20000"
Если бы Вы изменили порт SSH, необходимо отредактировать conf.apf файл, чтобы соответствовать этому новому порту.
HELPER_SSH_PORT="2222"
Удостоверьтесь, что заменили 2222 правильным числом порта, на котором Вы решили управлять SSH.
Фильтрация входящего трафика используется, чтобы открыть порты для доступа; у TCP и UDP есть отдельные параметры настройки. Для Asterisk (Trixbox) следующие порты должны быть открытыми; и TCP и UDP перечислены. Если Вы не используете TFTP, то не открывайте порт 69. Не забывайте изменять порт SSH. Иначе, Вы не сможете получить доступ; здесь мы используем порт 2222 из нашего последнего примера. Мы не включали порты IAX в эту установку. Есть легкий способ убедиться, что только определенные хосты могут использовать IAX, который мы откроем позже. Это удобно, если Вы используете IAX, чтобы поднять межстанционные транки, невидимые для внешнего мира.
IG_TCP_CPORTS="2222,69,80,5060,6600,10000_20000"
IG_UDP_CPORTS="69,5060,10000_20000"
Я не использую фильтрацию исходящего трафика, поэтому она не рассматривается в данной статье. Она установлено в EGF="0", отключена по умолчанию.
Чтобы увидеть список параметров командной строки, запустите apf без флагов.
[trixbox1.localdomain apf]# apf
apf(3402): {glob} status log not found, created
APF version 9.6 < apf@r-fx.org>
Copyright (C) 1999-2007, R-fx Networks < proj@r-fx.org>
Copyright (C) 2007, Ryan MacDonald < ryan@r-fx.org>
This program may be freely redistributed under the terms of the GNU GPL
usage /usr/local/sbin/apf [OPTION]
-s|--start ......................... load all firewall rules
-r|--restart ....................... stop (flush) & reload firewall rules
-f|--stop........ .................. stop (flush) all firewall rules
-l|--list .......................... list all firewall rules
-t|--status ........................ output firewall status log
-e|--refresh ....................... refresh & resolve dns names in trust
rules
-a HOST CMT|--allow HOST COMMENT ... add host (IP/FQDN) to
allow_hosts.rules and immediately load new rule into firewall
-d HOST CMT|--deny HOST COMMENT .... add host (IP/FQDN) to
deny_hosts.rules and immediately load new rule into firewall
-u|--remove HOST ................... remove host from
[glob]*_hosts.rules and immediately remove rule from firewall
-o|--ovars ......................... output all configuration options
 
Для старта APF мы используем следующие команды:
[trixbox1.localdomain apf]# apf -s
apf(3445): {glob} activating firewall
apf(3489): {glob} determined (IFACE_IN) eth0 has address 192.168.1.31
apf(3489): {glob} determined (IFACE_OUT) eth0 has address 192.168.1.31
apf(3489): {glob} loading preroute.rules
apf(3489): {resnet} downloading http://r-fx.ca/downloads/reserved.
networks
apf(3489): {resnet} parsing reserved.networks into
/etc/apf/internals/reserved.networks
apf(3489): {glob} loading reserved.networks
apf(3489): {glob} SET_REFRESH is set to 10 minutes
apf(3489): {glob} loading bt.rules
apf(3489): {dshield} downloading http://feeds.dshield.org/top10-2.txt
apf(3489): {dshield} parsing top10-2.txt into /etc/apf/ds_hosts.rules
apf(3489): {dshield} loading ds_hosts.rules
apf(3489): {sdrop} downloading http://www.spamhaus.org/drop/drop.lasso
apf(3489): {sdrop} parsing drop.lasso into /etc/apf/sdrop_hosts.rules
apf(3489): {sdrop} loading sdrop_hosts.rules
apf(3489): {glob} loading common drop ports
...........trimmed for this document.........
apf(3489): {glob} default (ingress) input drop
apf(3445): {glob} firewall initalized
apf(3445): {glob} !!DEVELOPMENT MODE ENABLED!! - firewall will flush
every 5 minutes.
 
Мы можем видеть, что APF стартанул, загрузил несколько правил с dshield.org и spamhaus.org. Теперь проведем тест захода на Asterisk (Trixbox)-сервер по SSH, чтобы убедиться, что Вы настроили все правильно. Если Вы не можете соединиться, необходимо подождать 5 минут, и затем APF снимет блокировку. Как только Вы уверены, что можете войти по SSH, мы можем изменить в conf.apf DEVEL_MODE = "1" на DEVEL_MODE = "0" и перезапустить APF. APF стартанет и не выдаст предупреждение о том, чтобы он находится в DEVELOPMETN_MODE.
 
APF: дополнительный тюнинг
На этом настройка не заканчивается, если Вы хотите объединить свои Asterisk (Trixbox)-сервера по IAX. Для этого Вам потребуется добавить порты IAX в conf.apf. Этот вариант будет работать со статическими IP-адресами или DynDNS. Команда apf –a разрешает доступ для определенного IP-адреса. Это глобально позволит хосту соединяться с Asterisk (Trixbox), обходя правила брандмауэра.
apf -a 192.168.1.216
Это позволит системе 192.168.1.216 соединяться с любым портом на зафаерволенном сервере, таким образом, обходя правила брандмауэра. Если Вы управляете APF на обоих Asterisk (Trixbox), убедитесь, что сделали ту же самую вещь на другом хосте, использующем правильный IP-адрес.
APF также позволяет системному администратору блокировать хост или целую подсеть. Это удобно, если Вы видите, что кто-то пытается соединиться с Вашей машиной по FTP, Telnet, SSH и так далее. Чтобы заблокировать определенный хост, используйте следующее: убедитесь, что использовали IP-адрес, который Вы хотите заблокировать.
apf -d 192.168.1.216
Чтобы заблокировать полную подсеть (CIDR):
apf -d 202.86.128.0/24
APF не поддерживает QoS для UDP-пакетов. Только TCP. Есть легкий способ пофиксить это. В /etc/apf/internals есть файл functions.apf. Мы должны отредактировать этот файл вручную. Есть несколько мест, где мы должны добавить единственную строку. Ищем секцию TOS_ в functions.apf файле. Это будет похоже на это:
if [ ! "$TOS_0" == "" ]; then
for i in `echo $TOS_0 | tr ',' ' '`; do
i=`echo $i | tr '_' ':'`
$IPT -t mangle -A PREROUTING -p tcp --sport $i -j TOS --set-tos 0
done
fi
 
Мы должны добавить параметры настройки для UDP. Мы копируем одну строку и изменяем tcp на udp. Образец ниже.
if [ ! "$TOS_0" == "" ]; then
for i in `echo $TOS_0 | tr ',' ' '`; do
i=`echo $i | tr '_' ':'`
$IPT -t mangle -A PREROUTING -p tcp --sport $i -j TOS --set-tos 0
$IPT -t mangle -A PREROUTING -p udp --sport $i -j TOS --set-tos 0
done
fi
Эта дополнительная строка должна быть сделана для всех битов TOS, которые Вы используете.
 
BFD  

Обнаружение брутфорса (атаки по словарю) используется, чтобы отследить несанкционированные попытки входа в систему.
Конфигурационный файл для BFD расположен в /usr/local/bfd и назван conf.bfd. Этот файл, как и для APF, содержит множество комментариев. Мы рассмотрим лишь некоторые параметры настройки.
Первая переменная конфигурации, на которую мы обратим внимание, - TRIG; это число неудавшихся попыток прежде, чем злоумышленник будет заблокирован. По умолчанию равно 15. Имейте в виду, что это число попыток не с одного аккаунта, а с одного IP-адреса. Так, если с 1 IP-адреса прихоидт 15 неудачных попыток входа, используя разные аккаунты, он все равно будет залочен.
У BFD есть хорошая фича -  послать электронные письма при обнаружении брутфорса. Чтобы включить данную опцию, установите EMAIL_ALERTS в 1; не забудьте указать адрес, на который Вы хотите получать уведомления - EMAIL_ADRESS.
BFD запускается cron-ом каждые 3 минуты и находится в /etc/cron.d.
Вы можете получить список забаненных IP-адресов, используя команду:
bfd -a
Для старта BFD используйте следующую команду:
bfd -s
 
Резюме
На этом обзор безопасности Asterisk (Trixbox) завершен.
В данной статье рассмотрены лишь основные принципы защиты Asterisk (Trixbox). Естественно, построение безопасных VoIP-систем этим не ограничивается.
С оригиналом статьи Вы можете ознакомиться по ссылке
http://packtpub.com/article/securing-your-trixbox-server

Комментариев нет:

Отправить комментарий