понедельник, 14 ноября 2011 г.

Список AT команд для HUAWEI E1550

Reset device 
ATZ

Modem information 
ATI

Selecting an APN 
+CGDCONT=1,”IP”,”apn name” e.g. for Vodafone UK - AT+CGDCONT=1,”IP”,”internet”

Querying signal strength 
+CSQ 
Returns two comma separated numbers. The first number is the signal strength (RSSI), the second number is unused. Here’s how to interpret RSSI: 0 ⇐ -113dBm 1 -111dBm 2 – 30 -109dBm to -53dBm 31 >= -51dBm 99 Unknown

Setting operating mode 
+CFUN=x 0 Low power mode 1 Online 4 Offline 6 Reset device 7 Turn off radio

Get manufacturer information 
+CGMI

Get software version 
+CGMR

Get SIM IMSI number 
+CIMI

Get device IMEI 
+CGSN

Get hardware version 

Change PIN 
+CPWD=SC,old pin, new pin

Enable PIN 
+CLCK=SC,mode,pin Mode: 0=unlock, 1=lock, 2=query state

Query system information 

Returns: status, domain, roaming status, mode, SIM state Status 0 No service. 1 Restricted service 2 Valid service 3 Restricted regional service. 4 Power-saving and deep sleep state Domain 0 No service. 1 Only CS service 2 Only PS service 3 PS+CS service 4 CS and PS not registered, searching Roaming 0 Non roaming state 1 Roaming state Mode 0 No service. 1 AMPS mode (not in use currently) 2 CDMA mode (not in use currently) 3 GSM/GPRS mode 4 HDR mode 5 WCDMA mode 6 GPS mode SIM state 0 Invalid USIM card state or pin code locked 1 Valid USIM card state 2 USIM is invalid in case of CS 3 USIM is invalid in case of PS 4 USIM is invalid in case of either CS or PS 255 USIM card is not existent

VoIP-GSM шлюз для Asterisk из 3G модема HUAWEI E1550

 Голосовой модуль по умолчанию активирован только в модемах МТС.  
Рекомендованное ядро Linux 2.6.33+ 
Asterisk 1.6.+ 
USB 2.0

Заведомо рабочие прошивки (firmware - не путать с dashboard): 
МТС 11.608.12.00.143 
11.608.14.15.311

Нерабочая firmware: 
Мегафон 11.608.12.10.209 -при активированном голосе из под винды звонит, из под Linux - нет.

Активировать голосовую функцию можно программой DC-UNLOCKER за 4 кредита - 4 евро.

набор утилит для активации голоса

Установка asterisk из исходников

# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.6.2-current.tar.gz
# tar zxvf asterisk-1.6.2-current.tar.gz
# cd asterisk-1.6.2-current.tar.gz
# apt-get install g++ libncurses-dev libxml2-dev subversion
# ./configure
# make install
# make config
# make samples

Установка модуля канала chan_datacard для Huawei

Файл datacard.conf из ~/chan_datacard/etc копируем в каталог /etc/asterisk

# svn co http://www.makhutov.org/svn/chan_datacard/trunk/ chan_datacard
# cd ~/chan_datacard/
# ./configure
# make install
# cp ~/chan_datacard/etc/datacard.conf /etc/asterisk

Установите usb-modeswitch

Пакет исходного кода: usb-modeswitch применяется в Unix системах для подключения устройств через USB интерфейс

#apt-get install libusb libusb-dev

# wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-1.1.4.tar.bz2
# tar -jxvf  usb-modeswitch-1.1.4.tar.bz2
# cd ~/usb-modeswitch-1.1.4
# make install

# wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20100826.tar.bz2
# tar -jxvf  usb-modeswitch-data-20100826.tar
# cd ~/usb-modeswitch-data-20100826
# make install

Убедимся что модем Huawei E1550 определился в системе

ls /dev | grep USB
ttyUSB0
ttyUSB1
ttyUSB2

Настройка модулей

Канальный модуль Huawei настраивается в datacard.conf.

[datacard0]
audio=/dev/ttyUSB1   ; tty for audio connection
data=/dev/ttyUSB2   ; tty for AT commands

context=datacard-incoming       ; context for incoming calls
group=1                         ; calling group

rxgain=3                        ; increase the incoming volume
txgain=3                        ; increase the outgoint volume



[datacard1]
context=datacard-incoming ; context for incoming calls
audio=/dev/ttyUSB4  ; tty port for audio connection
data=/dev/ttyUSB5  ; tty port for AT commands
group=2    ; calling group
rxgain=3   ; increase the incoming volume
txgain=3   ; increase the outgoint volume
autodeletesms=yes  ; auto delete incoming sms
resetdatacard=yes  ; reset datacard during initialization
u2diag=0   ; set U2DIAG parameter (0 = disable everything except modem function)
usecallingpres=yes  ; use the caller ID presentation or not
callingpres=allowed_passed_screen ; set caller ID presentation


Проверим состояние модема из командной строки Asterisk (CLI). 
Перегрузить asterisk можно командой core restart now
а если система рабочая и идут вызовы, то core restart gracefully
Запущенные модули каналов просмотрим командой module show like chan_

asterisk*CLI> datacard show devices
ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI       Number        
datacard1    2     Free       13   3    3       MTS RUS        E1550      11.608.12.00.143  352......        25....... Unknown       
datacard0    1     Free       15   3    3       TELE2          E1550      11.608.14.15.311  359......        25....... Unknown 

Для входящих вызовов, sms и ussd запросов настроим extensions.conf:

[datacard-incoming]
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS})
exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD} - ${CALLERID(num)}: ${SMS}' >> /var/log/asterisk/sms.txt)
exten => sms,n,Hangup()

exten => ussd,1,Verbose(Incoming USSD: ${USSD})
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD}: ${USSD}' >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()

exten => s,1,Dial(SIP/100,,)
exten => s,n,Hangup()

Для исходящей связи

exten => _X.,1,Dial(Datacard/g1/${EXTEN})
или
exten => _X.,1,Dial(Datacard/datacard0/${EXTEN})

Отключение функций CD-ROM и card reader

Отключим ненужные функции.

# minicom -s

            +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

Выбираем Serial port setup и жмем ENTER. Жмем 'А' Редактируем порт:

    +-----------------------------------------------------------------------+
    | A -    Serial Device      : /dev/ttyUSB0                              |
    | B - Lockfile Location     : /var/lock                                 |
    | C -   Callin Program      :                                           |
    | D -  Callout Program      :                                           |
    | E -    Bps/Par/Bits       : 115200 8N1                                |
    | F - Hardware Flow Control : Yes                                       |
    | G - Software Flow Control : No                                        |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------

Жмем ENTER 2 раза и выбираем Exit.

После подключения вводим команду:AT^U2DIAG=0

Welcome to minicom 2.4

OPTIONS: I18n                                                                
Compiled on Jan 25 2010, 06:49:09.                                           
Port /dev/ttyUSB0                                                            
                                                                             
Press CTRL-A Z for help on special keys                                      
                                                                             
AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0                                             
OK
AT^U2DIAG=0
OK                                                                           

Выходим Ctrl-A Q

AT^U2DIAG=0 (девайс в режиме только модем) 
AT^U2DIAG=1 (девайс в режиме модем + CD-ROM) 
AT^U2DIAG=255 (девайс в режиме модем + CD-ROM + Card Reader) 
AT^U2DIAG=256 (девайс в режиме модем + Card Reader) 
AT^CARDLOCK=«NCK-code» (разблокировка модема) 

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

Простейший скрипт для защиты Asterisk

Так же мы можем скриптом анализировать логи Asterisk сервера и всех уродов, подбирающих пароль, банить фаирволом (ipfw) сервера. Одна из версий скрипта:
time=$(expr `/bin/date +%H%M` / 1)
if [ $time -eq 1015 ]; then
        echo "Table 56 contents IP:"
 echo "====================="
 /sbin/ipfw table 56 list
 echo "====================="
 /sbin/ipfw table 56 flush
 echo "Table 56 flushed"
fi
if [ $time -eq 0 ]; then
 rm -rf `/bin/date -v-180d +'/var/log/asterisk/%Y/%m/'`
# echo "Deleted dir " `/bin/date -v-180d +'/var/log/asterisk/%Y/%m/'`
 mkdir -p `/bin/date +'/var/log/asterisk/%Y/%m/'`
# echo "Created dir " `/bin/date +'/var/log/asterisk/%Y/%m/'`
fi
/usr/local/sbin/asterisk -rx 'logger rotate'

/bin/sleep 2

/usr/bin/grep -E ' chan_sip.c: Registration from .* No matching peer found$' /var/log/asterisk/messages.0 | \
awk -F "'" '{ ips[$4]++ } END { for (a in ips){ if (ips[a]> 10 ){ cmd=sprintf("/sbin/ipfw table 56 add %s/32 5060 >/dev/null 2>&1",a); system(cmd); printf ("asterisk: Wrong peers repeated [%d] times: IP [%s] blocked\n",ips[a],a); } } }'

/usr/bin/grep -E ' chan_sip.c: Registration from .* Wrong password$' /var/log/asterisk/messages.0 | \
awk -F "'" '{ ips[$4]++ } END { for (a in ips){ if (ips[a]> 20 ){ cmd=sprintf("/sbin/ipfw table 56 add %s/32 5061 >/dev/null 2>&1",a); system(cmd); printf ("asterisk: Wrong passwords repeated [%d] times: IP [%s] blocked\n",ips[a],a); } } }'

mesdst=`/bin/date +'/var/log/asterisk/%Y/%m/mes_%Y%m%d.log'`
evtdst=`/bin/date +'/var/log/asterisk/%Y/%m/evt_%Y%m%d.log'`
quedst=`/bin/date +'/var/log/asterisk/%Y/%m/que_%Y%m%d.log'`

cat /var/log/asterisk/messages.0 >> $mesdst
rm /var/log/asterisk/messages.0

cat /var/log/asterisk/event_log.0 >> $evtdst
rm /var/log/asterisk/event_log.0

cat /var/log/asterisk/queue_log.0 >> $quedst
rm /var/log/asterisk/queue_log.0
Инсталляция скрипта: 1. Сохраните код скрипта на своем сервере 2. Переименуйте файл в protect_aster.sh 3. Сделайте скрипт исполняемым: chmod a+x protect_aster.sh 4. Добавте в ваш firewall ipfw правило: ipfw add XXX reject ip from «table(56)» to me где ХХХ это номер правила. Будьте внимательны размещая данное правило, не забаньте сами себя ! Обеспечьте allow правила для своих IP-адресов выше этого правила, чтобы избежать неожиданностей. 5. Добавте скрипт на исполнение по crontab, отредактируйте /etc/crontab: */5 * * * * root /full/path/to/script/protect_aster.sh Забаненый IP-адрес попадает в таблицу ровно на сутки, через сутки он автоматически будет удален из таблицы. Надеемся, что эти не хитрые приемы помогут вам остаться при деньгах и сэкономить ваши нервы. Спасибо, Панфилову Алексею и Николаеву Дмитрию!

Защита Asterisk с помощью Fial2ban в связке с pf.

Fail2ban – это простенький сервис, который поможет отслеживать и блокировать атаки, анализируя лог файлы той или иной службы. При обнаружении атаки fail2ban может занести ip источника в таблицу фаервола, уведомить по электронной почте и т.д. Сервис очень гибок в настройке, написан на python.

Установка и настройка fail2ban

Устанавливаем из портов. За собой он потянет Python, если у Вас он не установлен.
КОД: ВЫДЕЛИТЬ ВСЁ
cd /usr/ports/security/py-fail2ban; make install clean


После установки переходим в каталог /usr/local/etc/fail2ban и приступаем к настройке.
КОД: ВЫДЕЛИТЬ ВСЁ
cd /usr/local/etc/fail2ban


В папке находятся 2 поддиректории.
action.d – Хранятся файлы, в которых описываются действия при срабатывании правил.
filter.d – Хранятся шаблоны, использующие в основном регулярные выражения, которые служат для обнаружения атак, попытки подбора паролей, и т.д.

А так же 2 файла:
fail2ban.conf - Файл содержит общие настройки для демона, такие как уровень логирования и т.д.
jail.conf - Файл в котором содержится описание фильтров.

Редактируем файл jail.conf, в конец файла добавляем следующее.

КОД: ВЫДЕЛИТЬ ВСЁ
[asterisk-pf]
enabled = true
filter = asterisk
action = pf[table=asterisk-ban]
       sendmail[name=ASTERISK, dest=root, sender=fail2ban@example.com]
logpath = /var/log/asterisk/messages
maxretry = 5
bantime = 86400
ignoreip = 192.168.15.0/24ляем


Немного подробнее о переменных.

filter = asterisk - Название фильтра, которые будут использоваться для обнаружения совпадений.
В случае срабатывания фильтра, будут выполнены следующие действия.
action = pf[table=asterisk-ban]
sendmail[name=ASTERISK, dest=root, sender=fail2ban@example.com]

pf[table=asterisk-ban] - Будет выполнен скрипт pf.conf (в директории action.d), которому будет передана переменная table со значением asterisk-ban (Где asterisk-ban - это название таблицы в pf)
sendmail[name=ASTERISK, dest=root, sender=fail2ban@example.com] - Будет отправлено уведомление о срабатывании фильтра. (name - тема письма, dest - кому будет послано, sender - отправитель)
logpath = /var/log/asterisk/messages - Путь до лог файла asterisk
maxretry = 5 - Количество совпадений, который вызывает блокировку IP адреса
bantime = 86400 - Продолжительность (в секундах), в течение которых IP адрес будет блокирован.
ignoreip = 192.168.15.0/24 - Не проверять данные сети, IP адреса.

Создадим файл - шаблон /usr/local/etc/fail2ban/filter.d/asterisk.conf следующего содержания.

КОД: ВЫДЕЛИТЬ ВСЁ
cat /usr/local/etc/fail2ban/filter.d/asterisk.conf
# Fail2Ban configuration file
#
#
# $Revision: 250 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf


[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#

failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Wrong password
          NOTICE.* .*: Registration from '.*' failed for '<HOST>' - No matching peer found
          NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Username/auth name mismatch
          NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Device does not match ACL
          NOTICE.* <HOST> failed to authenticate as '.*'$
          NOTICE.* .*: No registration for peer '.*' \(from <HOST>\)
          NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
          NOTICE.* .*: Failed to authenticate user .*@<HOST>.*

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =


Далее создаем файл /usr/local/etc/fail2ban/action.d/pf.conf в котором опишем связь с pf.

КОД: ВЫДЕЛИТЬ ВСЁ
cat /usr/local/etc/fail2ban/action.d/pf.conf
[Definition]

actionstart =
actionstop =
actioncheck =
actionban = pfctl -t <table> -Ta  <ip>
actionunban = pfctl -t <table> -Td <ip>

[Init]

port = any
localhost = 127.0.0.1


Где переменную <table> мы описали в jail.conf (action = pf[table=asterisk-ban])

Asterisk

Теперь нужно немного настроить Asterisk.
КОД: ВЫДЕЛИТЬ ВСЁ
vim /usr/local/etc/asterisk/logger.conf

И раскомментируем
КОД: ВЫДЕЛИТЬ ВСЁ
[general]
dateformat=%F %T


Заходим в консоль asterisk и рестартуем сервис логирования
КОД: ВЫДЕЛИТЬ ВСЁ
asterisk -rx "logger reload"


PF

Добавим блокирующее правило в pf.conf. Для примера:
КОД: ВЫДЕЛИТЬ ВСЁ
block in log quick on $EXT_IF proto {tcp udp} from <asterisk-ban> to $EXT_IF port 5060


Запуск

Добавляем fail2ban в /etc/rc.conf.
КОД: ВЫДЕЛИТЬ ВСЁ
echo ‘fail2ban_enable="YES"’ >> /etc/rc.conf

И запускаем
КОД: ВЫДЕЛИТЬ ВСЁ
/usr/local/etc/rc.d/fail2ban start


Теперь можно проверить, попробовать авторизироваться на asterisk с неправильным паролем и посмотреть, что из этого получится, должно будет прийти письмо, если вы добавили эту возможность, или смотрите лог файл.

Логи fail2ban пишет в /var/log/fail2ban.log или настройте сами, куда вам удобно в /usr/local/etc/fail2ban/fail2ban.conf
Постскриптум
В папке filter.d вы можете найти много различных фильтров ко многим известным сервисам, да вы и сами можете написать их, это не так сложно.

И еще по поводу Asterisk. Помните, fail2ban не поможет Вам, если вы используете легкие пароли (123 и т.д.), используйте сложные, длинные пароли, по возможности привязывайте аккаунты к ip адресам. Только совокупность этих мер поможет вам и вашей компании не получить гигантский счет за связь.

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