Показаны сообщения с ярлыком asterisk. Показать все сообщения
Показаны сообщения с ярлыком asterisk. Показать все сообщения

пятница, 8 мая 2015 г.

Asterisk+Dundi

Насчет ключей - можно обойтись без них. т.е просто не использовать поля "inkey =" и
"outkey =" в dundi.conf

cd /var/lib/asterisk/keys/ /usr/src/astgenkey -n aster4

создает ключи public/private, их следует сложить в /var/lib/asterisk/keys/ и /usr/share/asterisk/keys/

Обмениваемся  ключами  между астерами (ложим в /var/lib/asterisk/keys/ и /usr/share/asterisk/keys/) которые будут работать через Dundi

По идее дальним астерам нужны только pub ключи, но у меня не заработало только с ними. Разбираться сильно не стал, т.к система внутренняя.


scp aster4.pub root@192.168.3.52:/var/lib/asterisk/keys/
scp aster4.key root@192.168.3.52:/usr/share/asterisk/keys/
scp aster1.pub root@192.168.3.56:/var/lib/asterisk/keys/
scp aster1.key root@192.168.3.56:/usr/share/asterisk/keys/

файлы ключей должны принадлежать asterisk:asterisk

Перезагружаем в консоли астера module reload res_crypto.so (заодно он покажет, если есть какие то проблемы)

Затем  module reload pbx_dundi.so

проверяем, что ключи загрузились 

aster1*CLI> keys show
Key Name           Type     Status           Sum
------------------ -------- ---------------- --------------------------------
aster2             PUBLIC   [Loaded]         7379e2a11d5a8f8f4209b3fdc7febb20
freeworlddialup    PUBLIC   [Loaded]         5efd552d73309f29212331a75f3c701e
aster1             PUBLIC   [Loaded]         0ed4a73ac18fb141bbdd7f797542146d
aster1             PRIVATE  [Loaded]         9c5777e70e49a4e8e6a42ea67b5a6883
iaxtel             PUBLIC   [Loaded]         d919b3ef03eb4dc54c8fee86bfeeada1
aster2             PRIVATE  [Loaded]         da214b9a7dccf9c6ff28cbf2e38e9fed
aster4             PUBLIC   [Loaded]         7e1a1b95eea77dacbfc42b813dd26ba1


Проверяем, что обмен данными идет

dundi query 00:0c:29:8a:a9:f1@extensions


В sip.conf в секции [general] прописываем
regcontext=RegisteredDevices


Поднимаем sip trunk между астерисками 

в sip.conf 

aster4:
[dundi_to_asterisk1]
host=192.168.3.52
type=peer
secret=secret
context=local
disallow=all
allow=ulaw
allow=alaw
qualify=yes
defaultuser=dundi_to_asterisk4


aster1:
[dundi_to_asterisk4]
host=192.168.3.56
type=peer
secret=secret
context=local
disallow=all
allow=ulaw
allow=alaw
qualify=yes
canreinvite=no
nat=yes
defaultuser=dundi_to_asterisk1

Правим dundi.conf
Здесь мы настраиваем dundi пиры и создаем mapping'и. Один mapping можно использовать для любоко кол-ва данди пиров. Лукап происходит корректно, если номер зарегистрирован только на одном из астерисков.

aster4:
[general]
department=Your Department
organization=Your Company, Inc.
locality=Your City
stateprov=ST
country=US
email=your@email.com
phone=+12565551212
bindaddr=192.168.3.56
port=4520
entityid=00:0c:29:8a:a9:f1 ; MAC belong to this system
cachetime=5
ttl=2
autokill=yes

[mappings]
extensions => RegisteredDevices,0,SIP,dundi_to_asterisk2/${NUMBER},nopartial


[00:0c:29:c5:d6:e4] ; MAC Address of Asterisk1
model = symmetric
host = 192.168.3.52;(this is the IP address of the DUNDi Asterisk1)
inkey = aster4
outkey = aster1
include = extensions
permit = extensions
qualify = yes
order = primary

aster1:
[general]
department=Your Department
organization=Your Company, Inc.
locality=Your City
stateprov=ST
country=US
email=your@email.com
phone=+12565551212
bindaddr=192.168.3.52
port=4520
entityid=00:0c:29:c5:d6:e4
cachetime=5
ttl=2
autokill=yes

[mappings]
extensions => RegisteredDevices,0,SIP,dundi_to_asterisk1/${NUMBER},nopartial

[00:0c:29:8a:a9:f1]  ; MAC Address of Asterisk4
model = symmetric
host = 192.168.3.56;(this is the IP address of the DUNDi Asterisk4)
inkey = aster1
outkey = aster4
include = extensions
permit = extensions
qualify = yes
order = primary


В настройках dundi.conf следует иметь ввиду, что строки в mappings, это то что будет передаваться на удаленный dundi peer и именно на этом удаленном пире должны быть нужные настройки (например, context RegisteredDevices и SIP trunk dundi_to_asterisk1)


[mappings]
extensions => RegisteredDevices,0,SIP,dundi_to_asterisk1/${NUMBER},nopartial

Теперь перейдем к context'ам. Я использую конструкцию вида.

Если есть данные в dundi, то берем их. Если нет, то звоним на локальный астериск.

exten => 958898,1,Dial(${IF($[${LEN(${DUNDILOOKUP(1001,extensions,b)})}>0]?${DUNDILOOKUP(1001,extensions,b)}:"SIP/1001")},30)

exten => 1001,1,Dial(${IF($[${LEN(${DUNDILOOKUP(1001,extensions,b)})}>0]?${DUNDILOOKUP(1001,extensions,b)}:"SIP/1001")},30)

для получения направления звонка используется функция DUNDILOOKUP(1001,extensions,b)
она ищет экстеншен 1001 в маппинге extensions dundi.conf. Возвращает SIP/dundi_to_asterisk2

Это прямой аналог команды 
aster1*CLI> dundi lookup 1000@extensions
  1.     0 SIP/dundi_to_asterisk2/1000 (EXISTS)
     from 00:0c:29:de:70:6d, expires in 5 s
DUNDi lookup completed in 64 ms

Если экстеншен зарегистрирован на нескольких астерисках, то dundi lookup вернет несколько значений. Передаст при этом он только первое. Вполне так можно использовать для резервирования :)

aster2*CLI> dundi lookup 1001@extensions
  1.     0 SIP/dundi_to_asterisk1/1001 (EXISTS)
     from 00:0c:29:c5:d6:e4, expires in 5 s
  2.     0 SIP/dundi_to_asterisk4/1001 (EXISTS)
     from 00:0c:29:8a:a9:f1, expires in 5 s
DUNDi lookup completed in 89 ms




Вообщем то с этого момента можно плодить астериски с данди. Остальные настройки уже распространяются на диалплан и специфичны для конкретных конфигураций.

Пример моей тестовой конфигурации состоящей из трех астерисков:


aster1:

sip.conf

[general]
context=poumolchaniu
srvlookup=no
disallow=all
allow=ulaw
allow=g729
allow=ilbc
language=ru
trustrpid=yes
sendrpid=yes
registertimeout=20
registerattempts=10
t38pt_udptl=no
allow=h263
videosupport=yes
autocreatepeer=no
minexpiry=60
maxexpirey=3600
rtsavesysname=yes
rtptimeout=60
rtpholdtimeout=300
dtmfmode=auto
directrtpsetup=no
canreinvite=no
sdpsession=Aster1 Server
#include sipuserss.conf
#include sipgw.conf
#include siptrunk.conf
alwaysauthreject=yes
videosupport=yes
defaultexpiry=3600
regcontext=RegisteredDevices

;workaround for asteriks crash
session-timers = refuse



sipgw.conf

[dundi_to_asterisk2]
host=192.168.3.53
type=peer
secret=secret
context=local
disallow=all
allow=ulaw
allow=alaw
qualify=yes
canreinvite=no
nat=yes
defaultuser=dundi_to_asterisk1


[dundi_to_asterisk4]
host=192.168.3.56
type=peer
secret=secret
context=local
disallow=all
allow=ulaw
allow=alaw
qualify=yes
canreinvite=no
nat=yes
defaultuser=dundi_to_asterisk1

sipusers.conf

[1000]
type=friend
accountcode=outgoing
host=dynamic
qualify=yes
callerid=""<958877>
language=ru
username=1000
disallow=all
allow=gsm
allow=g729
allow=ulaw
allow=h263
context=tolkogorod+zona+mezhgorod+mezhdunarodka
nat=yes
busylevel=2
call-limit=1
dtmfmode = rfc2833

[1001]
type=friend
accountcode=outgoing
host=dynamic
qualify=yes
callerid=""<958898>
language=ru
username=1001
disallow=all
allow=gsm
allow=g729
allow=ulaw
allow=h263
context=tolkogorod+zona+mezhgorod+mezhdunarodka
nat=yes
busylevel=2
call-limit=1
dtmfmode = rfc2833


dundi.conf
[general]
department=Your Department
organization=Your Company, Inc.
locality=Your City
stateprov=ST
country=US
email=your@email.com
phone=+12565551212
bindaddr=192.168.3.52
port=4520
entityid=00:0c:29:c5:d6:e4
cachetime=5
ttl=2
autokill=yes

[mappings]
extensions => RegisteredDevices,0,SIP,dundi_to_asterisk1/${NUMBER},nopartial

[00:0c:29:de:70:6d] ; MAC Address of Asterisk2
model = symmetric
host = 192.168.3.53;(this is the IP address of the DUNDi Asterisk2)
inkey = aster1
outkey = aster2
include = extensions
permit = extensions
qualify = yes
order = primary

[00:0c:29:8a:a9:f1]  ; MAC Address of Asterisk4
model = symmetric
host = 192.168.3.56;(this is the IP address of the DUNDi Asterisk4)
inkey = aster1
outkey = aster4
include = extensions
permit = extensions
qualify = yes
order = primary

extensions.conf

[RegisteredDevices]

[tolkogorod+zona+mezhgorod+mezhdunarodka]
Include => local
Include => CallerIDoutCiscofon
Include => specslugbi
Include => gorod
Include => zona
Include => mezhgorod
Include => mezhdunarodka


[local]
#include extensionslookup.conf


extensionslookup.conf
exten => 958877,1,Dial(${IF($[${LEN(${DUNDILOOKUP(1000,extensions,b)})}>0]?${DUNDILOOKUP(1000,extensions,b)}:"SIP/1000")},30)
exten => 958898,1,Dial(${IF($[${LEN(${DUNDILOOKUP(1001,extensions,b)})}>0]?${DUNDILOOKUP(1001,extensions,b)}:"SIP/1001")},30)
exten => 1000,1,Dial(${IF($[${LEN(${DUNDILOOKUP(1000,extensions,b)})}>0]?${DUNDILOOKUP(1000,extensions,b)}:"SIP/1000")},30)
exten => 1001,1,Dial(${IF($[${LEN(${DUNDILOOKUP(1001,extensions,b)})}>0]?${DUNDILOOKUP(1001,extensions,b)}:"SIP/1001")},30)


aster2

sip.conf

[general]
srvlookup=no
NAT=yes
bindport=5060
allowguest=no
canreinvite=no
regcontext=RegisteredDevices

[1000]
type=friend
context=LocalSets
host=dynamic
disallow=all
allow=gsm
canreinvite=no
qualify=yes
defaultuser=1000
fromuser=1000
callerid=""<958877>

[dundi_to_asterisk1]
host=192.168.3.52
type=peer
secret=secret
context=LocalSets
disallow=all
allow=ulaw
allow=alaw
qualify=yes
defaultuser=dundi_to_asterisk2

dundi.conf
[general]
department=Your Department
organization=Your Company, Inc.
locality=Your City
stateprov=ST
country=US
email=your@email.com
phone=+12565551212
bindaddr=192.168.3.53
port=4520
entityid=00:0c:29:de:70:6d
cachetime=5
ttl=2
autokill=yes

[mappings]
extensions => RegisteredDevices,0,SIP,dundi_to_asterisk2/${NUMBER},nopartial


[00:0c:29:c5:d6:e4] ; MAC Address of Asterisk1
model = symmetric
host = 192.168.3.52;(this is the IP address of the DUNDi Asterisk1)
inkey = aster2
outkey = aster1
include = extensions
permit = extensions
qualify = yes
order = primary

extensions.conf
[general]
static=yes
writeprotect=no
autofallthrough=no
clearglobalvars=no
priorityjumping=no


[RegisteredDevices]
;exten => 1000,1,NoOp()

[lookup]
exten => 958877,1,Dial(${IF($[${LEN(${DUNDILOOKUP(1000,extensions,b)})}>0]?${DUNDILOOKUP(1000,extensions,b)}:"SIP/1000")},30)
exten => 958898,1,Dial(${IF($[${LEN(${DUNDILOOKUP(1001,extensions,b)})}>0]?${DUNDILOOKUP(1001,extensions,b)}:"SIP/1001")},30)
exten => 1000,1,Dial(${IF($[${LEN(${DUNDILOOKUP(1000,extensions,b)})}>0]?${DUNDILOOKUP(1000,extensions,b)}:"SIP/1000")},30)
exten => 1001,1,Dial(${IF($[${LEN(${DUNDILOOKUP(1001,extensions,b)})}>0]?${DUNDILOOKUP(1001,extensions,b)}:"SIP/1001")},30)


[LocalSets]
include => lookup

aster4
sip.conf
[general]
srvlookup=no
NAT=yes
bindport=5060
allowguest=no
canreinvite=no
regcontext=RegisteredDevices



[1002]
type=friend
context=LocalSets
host=dynamic
disallow=all
allow=gsm
canreinvite=no
qualify=yes
defaultuser=1002
fromuser=1002
callerid=""<958877>

[dundi_to_asterisk1]
host=192.168.3.52
type=peer
secret=secret
context=DUNDi_Incoming
disallow=all
allow=ulaw
allow=alaw
qualify=yes
defaultuser=dundi_to_asterisk4

dundi.conf
[general]
department=Your Department
organization=Your Company, Inc.
locality=Your City
stateprov=ST
country=US
email=your@email.com
phone=+12565551212
bindaddr=192.168.3.56
port=4520
entityid=00:0c:29:8a:a9:f1
cachetime=5
ttl=2
autokill=yes

[mappings]
extensions => RegisteredDevices,0,SIP,dundi_to_asterisk4/${NUMBER},nopartial


[00:0c:29:c5:d6:e4] ; MAC Address of Asterisk1
model = symmetric
host = 192.168.3.52;(this is the IP address of the DUNDi Asterisk1)
inkey = aster4
outkey = aster1
include = extensions
permit = extensions
qualify = yes
order = primary

extensions.conf
[general]
static=yes
writeprotect=no
autofallthrough=no
clearglobalvars=no
priorityjumping=no


[RegisteredDevices]

[DUNDi_Incoming]
exten => 1002,1,Dial(${IF($[${LEN(${DUNDILOOKUP(1002,extensions,b)})}>0]?${DUNDILOOKUP(1002,extensions,b)}:"SIP/1002")},30)




воскресенье, 20 ноября 2011 г.

Asterisk - проблемы и решения


Периодический рестарт астериска.

Приходиться делать, т.к выжирает память и начинаются проблемы со звонками

03 5 * * 1-6 /usr/sbin/asterisk -rx 'restart when convenient' > /dev/null - каждый день в 5:30 отдается команда мягкого рестарта (когда нет активных звонков)
50 6 * * sun /usr/sbin/asterisk -rx 'restart now' > /dev/null - а по воскресениям астер дергается жестко.


Односторонняя слышимость:

 1) Кодеки
 2) Не стоит canreinvite=no и канал пытается завязаться напрямую на телефон.
 3) firewall или NAT.
 4) rtp.conf описывает малый диапазон портов

Нормальные значения:
/asterisk/rtp.conf
rtpstart=10000
rtpend=50000


Частая перерегистрация большого кол-ва клиентов вызывает рост CPU и возможные проблемы качества связи:

Нормальное значение:

sip.conf
defaultexpiry=3600


Астериск может регулярно крашиться из-за SIP session timers (1.6.x полноценно их не обрабатывает), стоит их отрубить.

sip.conf
;workaround for asteriks crash
session-timers = refuse

Диагностика потоков E1:

e1gw1*CLI> pri show spans
PRI span 1/0: Provisioned, Up, Active
PRI span 2/0: Provisioned, Up, Active
PRI span 3/0: Provisioned, Up, Active
PRI span 4/0: Provisioned, Up, Active


e1gw1*CLI> dahdi show status
Description                              Alarms  IRQ    bpviol CRC4   Fra Codi Options  LBO
T4XXP (PCI) Card 0 Span 1                OK      0      0      0      CCS HDB3 CRC4     0 db (CSU)/0-133 feet (DSX-1)
T4XXP (PCI) Card 0 Span 2                OK      0      0      0      CCS HDB3 CRC4     0 db (CSU)/0-133 feet (DSX-1)
T4XXP (PCI) Card 0 Span 3                OK      0      0      0      CCS HDB3 CRC4     0 db (CSU)/0-133 feet (DSX-1)
T4XXP (PCI) Card 0 Span 4                OK      0      0      0      CCS HDB3 CRC4     0 db (CSU)/0-133 feet (DSX-1


Red alarm
---
Your T1/E1 port will go into red alarm when it maintain
synchronization with the remote switch. A red alarm
typically indicates either aphysical wiring problem,
loss of connectivity, or a framing and/or line-coding
mismatch with the remote switch. When your T1/E1 port
loses sync, it will transmit a yellow alarm to the remote
switch to indicatethat it's having a problem receiving
signal from the remore switch.(The easy way to remember
this is that the R in red stands for "right here" and "receive".
.. indicating that we're having a problem right here
receiving the signal from the remote switch.)

Yellow alarm or RAI (Remote Alarm Indication)
---
Your T1/E1 port will go into yellow alarm when it receives a
signal from the remote switch that the port on that remote
switch is in red alarm.This essentially means that the remote
switch is not able to maintain sync with you, or is not receiving
your transmission. (The easy way to remember this is that t
he Y in yellow stands for "yonder"... indicating that the
remote switch (over yonder) isn't able to see what you're
sending.)

Blue alarm or AIS (Alarm Indication Signal)
---
Your T1/E1 port will go into blue alarm when it receives all
unframed 1s on all timeslots from the remote switch. This is
a special signal to indicate that the remote switch is
having problems with it's upstream connection.


 pri set debug

/var/log/asterisk/messages

Шумы, скрип, хрипы:

Возможна проблема с потоком E1 (ошибки). Так же качество может страдать из-за высокой загрузки астериска.

Перевод звонка по условию утилизации определенного кол-ва каналов:

exten => _31555[15],1,Set(GROUP()=12)
exten => _31555[15],2,GotoIf($[${GROUP_COUNT(12)} > 12]?20) - при более 12 одновременных звонков идем на приоритет 20.
exten => _31555[15],3,Dial(SIP/33000/${EXTEN}) - иначе звоним на 33000
exten => _31555[15],20,Set(GROUP()=16)
exten => _31555[15],21,GotoIf($[${GROUP_COUNT(16)} > 20]?30) - при более 20 одновременных звонков идем на приоритет 30
exten => _31555[15],22,Dial(H323/33333@test/${EXTEN}) - иначе звоним 33333
exten => _31555[15],30,Goto(hangup,0,1)


Ограничение регистрации определенными IP 
Данная настройка ограничивает возможность регистрации абонентов только с доверенных IP адресов. Задается для каждого extension

[vasya]
Deny=0.0.0.0/0.0.0.0
Permit=192.168.1.1
Permit=192.168.1.0/24

Где 192.168.1.0/24 – диапазон адресов, с которых будет проходить регистрация. С других адресов регистрации будут отбиваться астером.

Не посылать ответ о неверном пароле

По умолчанию Asterisk выдает одну ошибку о неверном пароле для существующего аккаунта и другую для несуществующего аккаунта.  Это удобно для фродеров при подборе пароля:

Избавляемся от такой дыры:
sip.conf:
alwaysauthreject = no

Теперь для неверных авторизаций астер говорит «401 Unauthorized».
Использование Iptables b Fail2ban
Fail2ban можно настроиь на вылавливание любых событий в логах и создание правил в iptables. Например, блокировать IP с которых приходят запросы с неверными реквизитами
Дальше не мое (взято с хабра):

Однако, есть несколько неприятных ситуаций, в которых анализ лога Asterisk не поможет. Например, в случае когда злоумышленник посылает запрос REGISTER без идентификационных данных – в логе никогда не появится сообщение «Wrong password».

Дело в том, что в Asterisk вся SIP UDP сигнализация обрабатывается одним единственным тредом. Обработка SIP трафика – ресурсоёмкий процесс, 7-8 мегабит мусорных запросов заставляют Asterisk полностью скушать ядро процессора (например Intel E5335, E5405). Когда ядро полностью съедено, происходит вытеснение полезного SIP трафика – мусорным.

Перестают работать DTMF у клиентов использующих SIP INFO. Начинаются проблемы с установкой новых и завершением существующих соединений. И вот это – основная угроза которую несут роботы-брутфорсеры.

Так как же бороться с проблемами о которых нет сообщений в логах? Очень просто – необходимо сгенерировать сообщение о проблеме самому, тогда всю остальную часть нашей системы противодействия (например программу fail2ban) можно будет оставить без изменений. Характерным признаком брутфорса является большое количество SIPпакетов в единицу времени.

Посчитать количество пакетов в единицу времени можно с помощью модуля iptables под названием recent. В интернете есть много примеров как с помощью модуля recent отбрасывают пакеты приходящие с частотой выше определённой. Мы, вместо отбрасывания, будем генерировать сообщения для нашей системы обнаружения атак (например fail2ban). Такой подход имеет свои недостатки и преимущества. Основным недостатком является, то что на обработку сообщений будут тратиться ресурсы системы, тогда как отбрасывание пакета условно бесплатное.

Преимуществ чуть больше: мы сможем воспользоваться всеми возможностями нашей системы обнаружения атак, такими как белые списки IP адресов, единообразный учёт всех обнаруженных атак и так далее.

От теории – к практике! Подготовим скелет из правил iptables:

-A INPUT -p udp --dport 5060 -j SCAMBLOCK
-A INPUT -p udp --dport 5060 -m recent --set --name SIP
-A INPUT -p udp --dport 5060 -m recent --update --seconds 2 --hitcount 60 --name SIP \
-j LOG --log-prefix «SIP flood detected: „


Первое правило проверяет наш пакет по цепочке SCAMBLOCK. В данной цепочке хранятся заблокированные IP адреса, если пакет совпадает с одним из адресов этой цепочки – он отбрасывается. Если пакет не отброшен, то во втором правиле он помечается для учёта под именем SIP. Третье правило считает не превысил ли данный пакет указанное количество (60) за указанное время (2 секунды).

Если количество не превышено – правило игнорируется, если превышено – выполняется действие. В нашем случае в системный лог пишется детальная информация о пакете начинающаяся со строки «SIP flood detected: «. Количество пакетов и время считаются отдельно для каждого источника. Таким образом получается, что мы ограничили скорость приёма SIP пакетов от каждого незаблокированного IP адреса на уровне 30 пакетов в секунду.

Для меня данное ограничение является комфортным, с одной стороны все клиенты, даже самые крупнные, шлют пакеты с одного IP адреса со скоростями ниже 30 пакетов/с, с другой стороны, 30 пакетов в секунду практически не отражаютя на работе системы. Возможно, что эту величину следует подправлять в ту или иную сторону в зависимости от производительности сервера, количества и типа абонентов.

В некоторых системах встроенное ограничение модуля recent на параметр hitcount весьма небольшое, например в CentOS это ограничение составляет 20 пакетов. Если вы попробуете выполнить приведенную выше команду, то получите следующую ошибку:

iptables -A INPUT -p udp --dport 5060 -m recent --update --seconds 2 --hitcount 60 --name SIP \
-j LOG --log-prefix “SIP flood detected: „
iptables: Unknown error 4294967295
Или вот так, для 64 битных систем:
iptables -A INPUT -p udp --dport 5060 -m recent --update --seconds 2 --hitcount 60 --name SIP \
-j LOG --log-prefix “SIP flood detected: „
iptables: Unknown error 18446744073709551615


Изменить максимальное ограничение можно передав модулю recent специальный параметр при загрузке. Для этого создадим файл /etc/modprobe.d/ipt.conf и пропишем в нём интересующий нас параметр:

options ipt_recent ip_pkt_list_tot=60

Будьте осторожны увеличивая данное ограничение, помните что вместе с ним увеличивается память, требуемая для хранения последних пакетов, а также количество циклов процессора требуемые на их обработку.

Ну вот и всё, теперь любой флуд на порт 5060 будет обнаружен с помощью модуля recent пакета iptables. Сообщение об обнаруженном флуде будет направлено в системный лог где его сможет увидеть наша любимая система обнаружения атак (например fail2ban). iptables не ограничивает нас одним лишь системным логом, действию LOG можно указать уровень (level) и facility сообщения, а в настройках Syslog перенаправить данные сообщения в отдельный файл. Сами же сообщения о SIP флуде будут выглядеть вот так:

Jun 17 23:54:44 sip2 kernel: SIP flood detected: IN=eth0 OUT= MAC=00:21:5e:db:15:b8:00:0f:34:f8:28:7f:08:00 SRC=184.172.62.3 DST=192.168.224.217 LEN=370 TOS=0x00 PREC=0x00 TTL=47 ID=0 DF PROTO=UDP SPT=5495 DPT=5060 LEN=350
Jun 17 23:54:44 sip2 kernel: SIP flood detected: IN=eth0 OUT= MAC=00:21:5e:db:15:b8:00:0f:34:f8:28:7f:08:00 SRC=184.172.62.3 DST=192.168.224.217 LEN=369 TOS=0x00 PREC=0x00 TTL=47 ID=0 DF PROTO=UDP SPT=5495 DPT=5060 LEN=349
Jun 17 23:54:44 sip2 kernel: SIP flood detected: IN=eth0 OUT= MAC=00:21:5e:db:15:b8:00:0f:34:f8:28: