вторник, 30 января 2018 г.

Важный момент безопасности PJSIP

Endpoint и AOR определяются тремя способами:
1) ip - по IP-адресу источника;
2) username - по содержимому поля From;
3) auth_username - по полю Authentication.
За выбор способа отвечает параметр identify_by секции endpoint.
По-умолчанию определение происходит в порядке ip,username. То есть сначала проверяется совпадение IP-адреса источника с указанным в секции identify/match, а если не совпало,  то совпадение имени и домена из поля From с именем endpoint или AOR.
Таким образом, если у нас есть endpoint [trunk301], с указанным в параметре identify/match адресом 10.10.10.1, то любой может указать своим именем trunk301, и совершить вызов с любого IP-адреса.
Поэтому важно ограничивать значение identify_by только нужным в каждом конкретном случае, указывая его через шаблон или непосредственно.
При этом необходимо помнить, что identify_by=auth_username будет работать только в том случае, если есть секция auth и она привязана к endpoint. Если нет, то auth_username работает просто как username! Со всеми вытекающими потенциальными проблемами.

Так же имеет смысл изменить значение параметра endpoint_identifier_order секции global на подходящий текущим настройкам.

четверг, 25 января 2018 г.

Таймеры в SIP.

In this blog article I will deal with the three basic SIP timer parameters – T1Timer B, and Timer F.  T1 is the estimated round trip time of an IP packet.  By default, T1 is set to 500 milliseconds which for many networks can be a little on the high side.   However, the SIP standard allows you to ignore the default and set it to something that better matches your network characteristics.

среда, 24 января 2018 г.

CentOS 7. Отдельный лог iptables.

Создаем файл /etc/rsyslog.d/iptables.conf. Пишем в него:
:msg, contains, "Iptables: " -/var/log/iptables.log
& stop
Перегружаем rsyslog.
В правила iptables добавляем логирование, например:
-A INPUT -p udp --dport 5060 -j LOG --log-prefix "Iptables: SIP "
-A INPUT -p tcp --dport 22 -j LOG --log-prefix "Iptables: SSH "



CentOS 7. Ротация логов Asterisk.

Создаем файл /etc/logrotate.d/asterisk.
Пишем в него:
/var/log/asterisk/messages
/var/log/asterisk/security
/var/log/asterisk/*log {
    missingok
    rotate 60
    daily
    create 0640 asterisk asterisk
    sharedscripts
    compress
    postrotate
    /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null
    endscript
}
И лучше перенести logrotate в cron.hourly, чтобы cron его запускал, а не anacron.

CentOS 7. Избавляемся от мусора в /var/log/messages (Created slice..., Stopping User...)

Создаем файл garbage.conf в /etc/rsyslog.d/ с таким содержанием:
if $programname == "systemd" and ($msg contains "Starting Session" or $msg contains "Started Session" or $msg contains "Created slice" or $msg contains "Starting User" or $msg contains "Removed slice User" or $msg contains "Stopping User") then stop

Перегружаем rsyslog:
# systemctl restart rsyslog

вторник, 23 января 2018 г.

Разворачиваем LAMP+Asterisk 15 на CentOS 7.

# yum update
# systemctl stop firewalld && systemctl disable firewalld
Правим SELINUX=disabled в /etc/sysconfig/selinux

# yum -y install mariadb-server mariadb
# systemctl enable mariadb.service
# systemctl start mariadb.service
# mysql_secure_installation