Захист asterіsk від несанкціонованих підключень. Захист Asterisk від злому

Зараз дуже часто доводиться стикатися з різним родом атак на Asteriskта аналоги. Неправильне налаштуванняі незнання простих правилтягнуть за собою фінансові втрати для підприємства, яке використовує PBX Asterisk.

У цій статті ми розглянемо початкові механізми безпеки Asterisk 13після встановлення і не розглядатимемо механізми безпеки Linux. Нижче буде описано низку правил, які допоможуть убезпечити вашу систему:

1. Стійкі до злому паролі та логіни на всіх мережевих пристроях (Asterisk, IP-телефони, VoIP-шлюзи).

Паролі SIP-акаунтів, адміністраторів, менеджерів Asterisk та на мережевих пристрояхповинні складатися не менше ніж із 13 символів (літери, цифри, спецсимволи, зміна регістру). Не використовувати логіни в системі, такі як admin, administrator, managerі т.д.

2. Правильне налаштування SIP в Asterisk – sip.conf.

Для захисту від сканерів слід змінити стандартний порт SIP, заборонити гостьові дзвінки та реєстрації, overlap-набори, передплата інформації про статус каналу і т.д. Повний описпараметрів general sip.confописаний у статті. Нижче наведений налаштований мною sip.conf для сервера Asterisk з коментарями:
context=default ;За замовчуванням призначаємо контекст, що не використовується, для вихідних викликів allowguest=no ;Забороняємо гостьові (без аутентифікації) підключення match_auth_username=no ;Забороняємо використання поля "username" замість "from" allowoverlap=no ;Забороняємо набір по одній цифрі= no ;Забороняємо використання переадресації realm=CUCM11.5(1)SU3 ;Використовуємо своє доменне ім'я сервера (приховуємо що Asterisk); domainsasrealm = no; recordonfeature = automixmon bindport = 9050; .0.0 ;Адреса TCP за замовчуванням;tlsenable=no ;tlsbindaddr=0.0.0.0 ;tcpauthtimeout = 30 ;tcpauthlimit = 100 ;websocket_enabled = true ;websocket_write_timeout=es DNS-іменам; pedantic = yes; tos_sip = cs3; tos_audio = ef; tos_video = af41; tos_text = af41; cos_sip = 3; cos_audio = 5; cos_video = 4; cos_text = 3; 120 ;submaxexpiry=3600 ;subminexpiry=60 ;mwiexpiry=3600 ;maxforwards=70 qualifyfreq=60 ;Встановлюємо перевірку доступності хоста в 60 секунд;qualifygap=100 ;qualifypeers= ;mwi_from=asterisk ;vmexten=voicemail ;preferred_codec_only=yes disallow=all ;Забороняємо всі кодеки allow=a law ;Дозволяємо Alaw allow=ulaw ;Дозволяємо Ulaw ;autoframing=yes ;mohinterpret=default ;mohsuggest=default ;parkinglot=plaza language=ru ;Робимо російську мову в системі за умовчанням tonezone=ru ;Визначаємо=ru ;Включимо розпізнавання DTMF сигналів, що погано розпізнаються;trustrpid = no ;sendrpid = yes rpid_update=yes ;Негайне оповіщення зустрічного сервера про зміни стану лінії; у нас десь не встановлений CallerID - робимо його символьним useragent=Cisco-SIPGateway/IOS-12.x; А як PBX у нас Cisco-SIPGateway; promiscredir = no; телефонному апараті;compactheaders = yes videosupport=yes ;Включаємо підтримку відеодзвінка;textsupport=no maxcallbitrate=2048 ;Максимальний бітрейт відеозв'язку authfailureevents=yes ;Встановлюємо статус Peer, якщо він не може авторизуватися=rejected alway eject=yes ;Якщо запит аутентифікації був відхилений, то у відповіді НЕ буде написано, що користувач введений неправильно, захист перебору імен користувачів auth_options_requests=yes ;Вимагаємо авторизацію при посилках OPTION і INVITE ;accept_outofcall_message = text ; аутентифікацію запитів MESSAGE ;g726nonstandard = yes ;outboundproxy=proxy.provider.domain:8080 ;supportpath=yes ;rtsavepath=yes ;matchexternaddrlocally = yes ;dynamic_exclude_static = yes ;contactdeny 0.0.0/0.0.0.0 ;contactpermit=172.16.0.0/255.255.0.0 ;contactacl=named_acl_example ;rtp_engine=asterisk ;regcontext=sipregistrations regextenonqualify=yes ;Якщо включено quality ;якщо включено quality; legacy_useroption_parsing=yes ;send_diversion=no ;shrinkcallerid=yes ;use_q850_reason = no ;refer_addheaders=yes autocreatepeer=no ;Відключаємо реєстрацію UAC без аутентифікації t1min=200 ; 600 ;Припиняємо виклик якщо немає активності RTP медіапотоків через 600 секунд rtpholdtimeout=300 ;Припиняємо виклик якщо немає активності RTP медіапотоків у режимі Hold через 300 секунд; rtpkeepalive = ;session-timers=originate ;session-refresher=uac ;sipdebug = yes ;recordhistory=yes ;dumphistory=yes ;allowsubscribe=no ;subscribecontext = default ;notifyringing = no ;notifyhold = yes ;notifycid = yes callcounter=y до викликів t38pt_udptl=yes ;Включаємо підтримку T.38 c FEC корекцією помилок faxdetect=yes ;Включаємо визначення CNG та T.38 nat=auto_force_rport,auto_comedia ;Знаходимо Nat автоматично та медіадані на порт з якого SDP ;media_address = 172.16.42.1 ;subscribe_network_change_event = yes ;icesupport = yes directmedia=no ;Направляємо RTP-трафік безпосередньо між бенкетами, минаючи Asterisk ; directmediaacl=acl_example ;ignoresdpversion=yes sdpsession=SIP Call ;Змінюємо ім'я SDP сесії sdpowner=CiscoSystemsSIP-GW-UserAgent ;Змінюємо поля користувача в SDP owner string ;encryption=no ;encryption_ca; yes ;rtsavesysname=yes ;rtupdate=yes ;rtautoclear=yes ;ignoreregexpire=yes ;domain=customer.com,customer-context ;allowexternaldomains=no ;allowexternaldomains=no ;fromdomain=mydomain.tld ;s; використовуй ування RTP буфера для компенсації затримок; jbforce = no jbmaxsize = 200; Встановлюємо максимальний розмір RTP буфера 200 мс; jbresyncthreshold = 1000; jbimpl = fixed; jbtargetextra = 40;

3. Використовуємо нестандартний порт IAX.

Для цього у файлі /etc/asterisk/iax.confу секції змінюємо параметр bindport=4569на параметр bindport=9069

4. Запуск Asterisk повинен виконуватись від іншого користувача (не root). Про те, як це зробити написано в статті.

5. Вказати дозволені IP-адреси або мережі для SIP Extensions.

deny = 0.0.0.0 / 0.0.0.0 ; Забороняємо все permit = 10.0.0.0 / 255.0.0.0 ;

6. Встановлюємо ліміт одночасних дзвінків.

call-limit=2 ;Встановлюємо значення 2, щоб користувач міг зробити transfer

7. Встановлюємо різні правила вихідної маршрутизації кожного користувача.

Необхідно прибрати всі маршрути, які використовуються за замовчуванням та призначити свої власні з розмежуванням на контексти:

  • Локальні набори
  • Місцеві виклики
  • Зонові дзвінки
  • Міжміські виклики
  • Міжнародні виклики
Повний список кодів ABC, DEF можна взяти з офіційного ресурсу Росії.
Для маршруту за замовчуванням зробити exten => _X.,1,Hangup()

8. Використовуємо IPtables

9. Використовуємо Fail2Ban

10. Усі телефонні пристрої виводимо до окремого Voice VLAN. Тут треба напружити сітчастиків.

11. Особливу увагу приділяємо міжнародному напрямку 8-10.

Встановлюємо тільки використовувані в організації напрями та в міру необхідності їх додаємо (розширюємо). Також робимо сповіщення на пошту, якщо користувач або зловмисник скористався невідомим міжнародним напрямом та встановлюємо ліміт на кожне з'єднання та на одночасну кількість викликів. Готове рішення щодо захисту напрямку 8-10 описано у статті.

12. Вимкнути канали та сервіси, що не використовуються.

Наприклад, якщо ви не використовуєте протокол MGCPабо Skinny, відключайте ці модулі у файлі /etc/asterisk/modules.conf:
noload => pbx_gtkconsole.so noload => chan_alsa.so noload => chan_console.so noload => res_ari.so noload => chan_dahdi.so noload => codec_dahdi.so noload => res_ari_device_states.so noload => res_ari_applications. > res_ari_channels.so noload => res_ari_events.so noload => res_ari_playbacks.so noload => res_ari_endpoints.so noload => res_ari_recordings.so noload => res_ari_bridges.so noload => res_ari_asterisk.so noload => res_ari_sound .so noload => cdr_mysql.so noload => res_phoneprov.so noload => cdr_odbc.so noload => cdr_pgsql.so ;======================= =====; PBX - noload => pbx_ael.so; Channels -- noload => chan_mgcp.so noload => chan_skinny.so noload => chan_unistim.so noload => chan_pjsip.so noload => chan_modem.so noload => chan_modem_aopen.so noload => chan_modem_bestdataso. so noload => chan_alsa.so noload => chan_oss.so; Codecs - noload => codec_lpc10.so; Formats -- noload => format_au.so noload => format_gsm.so noload => format_h263.so noload => format_ilbc.so noload => format_jpeg.so ; Applications -- noload => app_image.so noload => app_zapateller.so noload => app_zapbarge.so noload => app_zapscan.so noload => res_config_ldap.so

13. Обмежуємо віддалений доступ до IP-АТС за допомогою Firewall.

Якщо ви плануєте надавати віддалений доступдля авторизованих співробітників, найкраще організувати його при допомоги VPNсервера (наприклад, Open VPN).

Зараз дуже часто доводиться стикатися з різними атаками на Asterisk і аналоги. Неправильне настроювання та незнання простих правил спричиняють фінансові втрати для підприємства, яке використовує PBX Asterisk.

У цій статті ми розглянемо початкові механізми безпеки Asterisk 13 після встановлення і не розглядатимемо механізми безпеки Linux. Нижче буде описано низку правил, які допоможуть убезпечити вашу систему:

1. Стійкі до злому паролі та логіни на всіх мережевих пристроях (Asterisk, IP-телефони, VoIP-шлюзи).

Паролі SIP-акаунтів, адміністраторів, менеджерів Asterisk та на мережевих пристроях повинні складатися не менше ніж з 13 символів (літери, цифри, спецсимволи, зміна регістру). Не використовувати логіни в системі, такі як admin, administrator, manager і т.д.

2. Правильне налаштування SIP в Asterisk - sip.conf.

Для захисту від сканерів слід змінити стандартний порт SIP, заборонити гостьові дзвінки та реєстрації, overlap-набори, передплата інформації про статус каналу і т.д. Повний опис параметрів general sip.conf описаний у статті. Нижче наведений налаштований мною sip.conf для сервера Asterisk з коментарями:

Context=default ;За замовчуванням призначаємо контекст, що не використовується, для вихідних викликів allowguest=no ;Забороняємо гостьові (без аутентифікації) підключення match_auth_username=no ;Забороняємо використання поля "username" замість "from" allowoverlap=no ;Забороняємо набір по одній цифрі no ;Забороняємо використання переадресації realm = CUCM11.5 (1) SU3 ; Використовуємо своє доменне ім'я сервера (приховуємо що Asterisk) ; -замовчуванням tcpenable=yes ;Включаємо підтримку TCP (раптом у вас є Avaya) tcpbindaddr=0.0.0.0 ;Адреса TCP за замовчуванням;tlsenable=no ;tlsbindaddr=0.0.0.0 ;tcpauthtimeout = 30 ;tcpauthtimeout = 30 ;tcpauthtimeout = 0 websocket_write_timeout = 100 transport=udp ;Транспорт за замовчуванням srvlookup=yes ;Дозволяємо здійснювати дзвінки за DNS-іменами;pedantic=yes ;tos_sip=cs3 ;tos_audio=ef ;tos_video=af41 ;tos_text== ;cos_video=4 ;co s_text=3 ;maxexpiry=3600 ;minexpiry=60 ;defaultexpiry=120 ;submaxexpiry=3600 ;subminexpiry=60 ;mwiexpiry=3600 ;maxforwards=70 qualifyfreq=60 ; ;keepalive = 60; mohinterpret=default ;mohsuggest=default ;parkinglot=plaza language=ru ;Робимо російську мову в системі за замовчуванням tonezone=ru ;Визначаємо глобальну тонзону в Ru relaxdtmf=yes ;Включимо розпізнавання погано розпізнаваних DTMF = yes;trus ; rpid_update=yes ;Негайне сповіщення зустрічного сервера про зміни стану лінії;trust_id_outbound = no ;prematuremedia=no ;progressinband=no callerid=CUCM11.5(1)SU3 ;Якщо у нас десь не встановлений CallerID - робимо його символьним useragentC -SIPGateway/IOS-12.x ;А в ка в якості PBX у нас Cisco-SIPGateway; promiscredir = no; usereqphone = no dtmfmode = rfc2833; authfailureevents=yes ;Встановлюємо статус Peer, якщо він не може авторизуватися=rejected alwaysauthreject=yes ;Якщо запит автентифікації був відхилений, то у відповіді НЕ буде написано, що користувач введений невірно, захист перебору імен користувачів auth_options_requests=yes и INVITE ;accept_outofcall_message = no ;outofcall_message_context = messages auth_message_requests=yes ;Включаем аутентификацию запросов MESSAGE ;g726nonstandard = yes ;outboundproxy=proxy.provider.domain:8080 ;supportpath=yes ;rtsavepath=yes ;matchexternaddrlocally = yes ;dynamic_exclude_static = yes ;contactdeny =0. 0.0.0/0.0.0.0 ;contactpermit=172.16.0.0/255.255.0.0 ;contactacl=named_acl_example ;rtp_engine=asterisk ;regcontext=sipregistrations regextenonqualify=yes ;Якщо включено quality ;якщо включено quality; legacy_useroption_parsing=yes ;send_diversion=no ;shrinkcallerid=yes ;use_q850_reason = no ;refer_addheaders=yes autocreatepeer=no ;Відключаємо реєстрацію UAC без аутентифікації t1min=200 ; 600 ;Припиняємо виклик якщо немає активності RTP медіапотоків через 600 секунд rtpholdtimeout=300 ;Припиняємо виклик якщо немає активності RTP медіапотоків у режимі Hold через 300 секунд; rtpkeepalive = ;session-timers=originate ;session-refresher=uac ;sipdebug = yes ;recordhistory=yes ;dumphistory=yes ;allowsubscribe=no ;subscribecontext = default ;notifyringing = no ;notifyhold = yes ;notifycid = yes callcounter=y до викликів t38pt_udptl=yes ;Включаємо підтримку T.38 c FEC корекцією помилок faxdetect=yes ;Включаємо визначення CNG та T.38 nat=auto_force_rport,auto_comedia ;Знаходимо Nat автоматично та медіадані на порт з якого SDP ;media_address = 172.16.42.1 ;subscribe_network_change_event = yes ;icesupport = yes directmedia=no ;Направляємо RTP-трафік безпосередньо між бенкетами, минаючи Asterisk ; directmediaacl=acl_example ;ignoresdpversion=yes sdpsession=SIP Call ;Змінюємо ім'я SDP сесії sdpowner=CiscoSystemsSIP-GW-UserAgent ;Змінюємо поля користувача в SDP owner string ;encryption=no ;encryption_ca; yes ;rtsavesysname=yes ;rtupdate=yes ;rtautoclear=yes ;ignoreregexpire=yes ;domain=customer.com,customer-context ;allowexternaldomains=no ;allowexternaldomains=no ;fromdomain=mydomain.tld ;s; використовуй ування RTP буфера для компенсації затримок; jbforce = no jbmaxsize = 200; Встановлюємо максимальний розмір RTP буфера 200 мс;

3. Використовуємо нестандартний порт IAX.

Для цього у файлі /etc/asterisk/iax.confу секції змінюємо параметр bindport=4569на параметр bindport=9069

4. Запуск Asterisk повинен виконуватись від іншого користувача (не root). Про те, як це зробити написано в .

5. Вказати дозволені IP-адреси або мережі для SIP Extensions.

deny = 0.0.0.0 / 0.0.0.0 ; Забороняємо все permit = 10.0.0.0 / 255.0.0.0 ;

6. Встановлюємо ліміт одночасних дзвінків.

call-limit=2 ;Встановлюємо значення 2, щоб користувач міг зробити transfer

7. Встановлюємо різні правила вихідної маршрутизації кожного користувача.

Необхідно прибрати всі маршрути, які використовуються за замовчуванням та призначити свої власні з розмежуванням на контексти:

  • Локальні набори
  • Місцеві виклики
  • Зонові дзвінки
  • Міжміські виклики
  • Міжнародні виклики

Повний список кодів ABC, DEF можна взяти з офіційного ресурсу Росії.
Для маршруту за замовчуванням зробити

Exten => _X.,1,Hangup()

8.

9.

10. Усі телефонні пристрої виводимо до окремого Voice VLAN. Тут треба напружити сітчастиків.

11. Особливу увагу приділяємо міжнародному напрямку 8-10.

Встановлюємо тільки використовувані в організації напрями та в міру необхідності їх додаємо (розширюємо). Також робимо сповіщення на пошту, якщо користувач або зловмисник скористався невідомим міжнародним напрямом та встановлюємо ліміт на кожне з'єднання та на одночасну кількість викликів. Готове рішення щодо захисту напрямку 8-10 описано у статті.

12. Вимкнути канали та сервіси, що не використовуються.

Наприклад, якщо ви не використовуєте протокол MGCP або Skinny, відключайте ці модулі у файлі /etc/asterisk/modules.conf:

Noload => pbx_gtkconsole.so noload => chan_alsa.so noload => chan_console.so noload => res_ari.so noload => chan_dahdi.so noload => codec_dahdi.so noload => res_ari_device_states.so noload => res_ari_applications. > res_ari_channels.so noload => res_ari_events.so noload => res_ari_playbacks.so noload => res_ari_endpoints.so noload => res_ari_recordings.so noload => res_ari_bridges.so noload => res_ari_asterisk.so noload => res_ari_sound .so noload => cdr_mysql.so noload => res_phoneprov.so noload => cdr_odbc.so noload => cdr_pgsql.so ;======================= =====; PBX - noload => pbx_ael.so; Channels -- noload => chan_mgcp.so noload => chan_skinny.so noload => chan_unistim.so noload => chan_pjsip.so noload => chan_modem.so noload => chan_modem_aopen.so noload => chan_modem_bestdataso. so noload => chan_alsa.so noload => chan_oss.so; Codecs - noload => codec_lpc10.so; Formats -- noload => format_au.so noload => format_gsm.so noload => format_h263.so noload => format_ilbc.so noload => format_jpeg.so ; Applications -- noload => app_image.so noload => app_zapateller.so noload => app_zapbarge.so noload => app_zapscan.so noload => res_config_ldap.so

13. Обмежуємо віддалений доступ до IP-АТС за допомогою Firewall.

Якщо ви плануєте надавати віддалений доступ для авторизованих співробітників, найкраще організувати його за допомогою VPN сервера(наприклад, Open VPN).

14. Встановлюємо обмежені права на каталоги.

Будь-яке використання матеріалів сайту можливе лише з дозволу автора та з обов'язковою вказівкою джерела.

У сьогоднішній статті поговоримо про те, як захистити IP-АТС від несанкціонованого доступу і дамо кілька простих порад, дотримуючись яких можна істотно підвищити безпеку вашої телефонної станції. Приклади, які будуть наведені в цій статті, відносяться до IP-АТС на базі Asterisk, проте багато з них поширюються на всі без винятку VoIP-АТС.

Для початку, давайте розберемося, чим же загрожують дірки в безпеці і які наслідки загрожують бізнесу, якщо зловмисник отримає доступ до IP-АТС.

Загроза злому

На відміну від злому персонального комп'ютераабо пошти, зламування АТС – це безкоштовні для зломщика дзвінки, за які доведеться заплатити власнику АТС. Відомо чимало випадків, коли хакери витрачали колосальні суми, провівши на зламаній АТС лише кілька годин.

Як правило, цілями зловмисників стають IP-АТС, які доступні з публічної мережі. Використовуючи різні SIP-сканери та досліджуючи системні вразливості, вони вибирають місця для атаки. Дефолтні (default) паролі, відкриті SIP-порти, неправильно керований firewall або його відсутність - все це може спричинити несанкціонований доступ.

На щастя, всі ці вразливості можна усунути і до того ж абсолютно безкоштовно.

Прості кроки до підвищення безпеки

Як бачите, захистити IP-АТС від зовнішніх вторгнень не так вже й важко, дотримуючись запропонованих порад, можна досить серйозно підвищити безпеку та надійність системи.

Телефонія може бути дешевою
та функціональної!

Компанія «Айті КУБ» надає широкий спектр послуг з встановлення, інтеграції та налаштування IP-телефонії.

ІТ-послуги можуть бути якісними!

chmod 755 install_apf_bfd.sh

./install_apf_bfd.sh

Конфіг APF знаходиться в /etc/apf/conf.apf

Щоб почати редагувати файл, використовуйте таку команду:

nano /etc/apf/conf.ap f

Ставимо the IFACE_IN та IFACE_OUT для мережного інтерфейсу, що дивиться в Інтернет. Для мережного інтерфейсу, що дивиться в локальну мережуставимо IFACE_TRUSTED.

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 без прапорів.

# apf
apf(3402): (glob) status log not found, створений
APF version 9.6< This email address is being protected from spambots. You need JavaScript enabled to view it. >
Copyright (C) 1999-2007, R-fx Networks< This email address is being protected from spambots. You need JavaScript enabled to view it. >
Copyright (C) 2007, Ryan MacDonald< This email address is being protected from spambots. You need JavaScript enabled to view it. >
Цей program може бути freely redistributed under the terms of the GNU GPL
usage /usr/local/sbin/apf
-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 in firewall
-u|--remove HOST ................... remove host from
*_hosts.rules and immediately remove rule from firewall
-o|--ovars ......................... output all configuration options

Для старту APF ми використовуємо такі команди:

# apf -s
apf(3445): (glob) activating firewall
apf(3489): (glob) визначений (IFACE_IN) eth0 has address 192.168.1.31
apf(3489): (glob) визначений (IFACE_OUT) eth0 has address 192.168.1.31
apf(3489): (glob) loading preroute.rules http://r-fx.ca/downloads/reserved http://feeds.dshield.org/top10-2.txt
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 хвилин.

Ми можемо бачити, що 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
$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 використовуйте таку команду:

bfd -s

Резюме

На цьому огляд безпеки Asterisk (Trixbox) завершено.

У цій статті розглянуто лише основні принципи захисту Asterisk (Trixbox). Звичайно, побудова безпечних VoIP-систем цим не обмежується.

З оригіналом статті Ви можете ознайомитись за посиланням



Завантаження...
Top