r/>
шукаються запису В«Wrong passwordВ» і В«No matching peer foundВ» і якщо їх кількість відповідає параметру bantime = 259200, то на відповідний ip адресу накладається блокування через iptables:
$ IPTABLES-A INPUT-s 176.67.48.163-j DROP
5.5 Аналіз стану локальних користувачів сервера телефонії
Спершу потрібно зрозуміти, що локальні користувачі сервера телефонії це не тільки людина, яка сидить за soft-фоном або за будь-яким іншим sip-клієнтом, а й voip і goip шлюзи, sip-транки від постачальника послуги віртуальних номерів. За всі ці послуги власники сервера платять гроші і коли щось з перерахованого не працює (за будь-якої причини), організація втрачає гроші, що нам і допоможе вирішити ця частина скрипта. p align="justify"> Для початку опишемо з чим в цьому блоці доведеться працювати, а саме:
На сервері встановлена ​​PBX Asterisk 1.4.42 з GUI Voiceone - v.0.7.1.
Так само у нас є два goip шлюзу і один sip транк, які налаштовані і працюють в штатному режимі. Приклад одного з транков:
[trunk_500]
; SIP/w_ht323_0.222_2P Channel-Incoming context
exten = 8632309777,1, NoOp (Incoming-8632309777: trunk_500 CallerID: $ {CALLERID (all)} - Calling: $ {EXTEN}) = _8632309777., 1, NoOp (Incoming-8632309777: trunk_500 CallerID: $ {CALLERID (all)} - Calling: $ {EXTEN}) = _8632309777., N, AGI (incoming.php | answered = $ {EXTEN} & channel = 500 & rule = 2 & uniqueid = $ {UNIQUEID}) = s, 1, NoOp (Incoming-s. CallerID: $ {CALLERID (all)} - Calling: $ {EXTEN}) = s, n, AGI (incoming . php | answered = $ {EXTEN} & channel = 500 & rule = 2 & uniqueid = $ {UNIQUEID}) = t, 1, Hangup
Збираємо дані про цікавлять нас Транки:
$ noSession = true; ("/ home/www/voiceone/voiceone/admin/config/cfg.php");
$ ret = $ asterisk-> getTrunk (0, 0); ($ err = $ asterisk-> getError ()) ("Trunk error: $ err");
$ trunk_count = count ($ ret);
І кладемо ці дані в wtcher.log. Функція, що описує це дію: function put_log ($ text)
Якщо в момент збору відомостей транки змінилися, то ми запускаємо цю частину заново:
while (true) {
$ msg = "";
$ ret2 = $ asterisk-> getTrunk (0, 0); (count ($ ret2)! = $ trunk_count) {;
} ($ md5_script <> md5_file (__FILE__)) {_log ("Restart script. Change MD5 script:". __ FILE__);
exit (1);
}
Всі статичні дані про Транки у нас є, отже ми можемо аналізувати їх далі, а саме ми запускаємо утиліту командного рядка Астеріск В«sip show peersВ»
$...