polycom CA default certificate
Документация по TLS для телефонов Polycom здесь: Device_Certificates_on_Phones_TB37148.pdf
Изначально я столкнулся с тем, что поликом отдает свой собственный сертификат, который администратор никогда не загружал, но чтение документации дало понимание, что да такой сертификат зашивается на заводе, и чтобы им пользоваться, нужно скачать сертификат удостоверяющего центра Polycom – http://pki.polycom.com/pki/
восстановить пароль centos 7
всё просто с этим:
статья
| Posted in Unix вопросы, Безопасность | No Comments »
firewalld управление
Задача организовать защиту пула серверов находящихся в одной публичной подсети.
Firewalld использует понятие zone (зона), и распределяет трафик по ним, по крайней мере входящий т.к. я работаю именно с ним.
Итак, смысл такой, я хочу чтобы медлу серверами всё было открыто, поэтому использовать для этого буду встроенную зону work.
У зон можно настроить дефолтное правило ACCEPT,REJECT,DROP – установим ACCEPT.
-
firewall-cmd –zone=work –set-target=DROP –permanent
*сработает только после firewall-cmd –reload
затем нужно добавить ip адреса трафик с которых будет считаться относящимся к этой зоне.
-
firewall-cmd –zone=work –add-source=123.123.123.123/32 –permanent
firewall-cmd –zone=work –add-source=123.123.123.123/32
тут можно использовать маски вместо 32, нужные.
хорошая статья по управлению firewall-cmd
http://landoflinux.com/linux_firewall_cmd_config.html
настройка centos для обработки большого кол-ва соединений
пока положу сюда статью, которая крайне полезна в том, что какие настройки влияют на это
https://toster.ru/q/276364
High load. Высокая нагрузка на сервер Астериск.
В рамках проекта с высокой нагрузкой нужно было решить проблему, описание которой звучит так: После 360 секунд вызовы переставали попадать в биллинг. Первонаперво была выяснена причина это отсутствие некоторых переменных, получаемых через AGI интерфейс php скриптом. При этом, если использовать AGI то такой проблемы не наблюдалось.
В нашем случае используется FASTAGI и связка ASterisk, xinetd, phpagi-fastagi.php, myscript.php.
Поиск решений занял несколько дней, потому, что нагрузка на сервер была высокой итак: 1. Обнаружили что mysript.php не получает значение переменной DIALSTATUS после выполнения команды DIAL. И поиск в интернете ничего не давал, пока я не набрел на собственно код phpagi библиотеки на sourceforge.net. (https://sourceforge.net/p/phpagi)
И в багтреке были прикреплены несколько вопросов именно по поводу переменной DIALSTATUS. Но комментиариев с решением под ними не было, а были они в “обсуждениях”, вот здесь: https://sourceforge.net/p/phpagi/discussion/366892/thread/5a4c09f0/
В двух словах, phpagi Общается с асетриском через потоки как будто пишет и читает из файла строки, и вот какое дело, иногда когда скрипт читает данные из потока он получает толи пустые строки толи что, и не может получить значение переменной, хотя по agi debug четко видно, переменная передается скрипту.
Было два решения которые предложила система, это а) повторить запрос переменной несколько раз, пример:
function get_var($agi_in, $value)
{
$temp = $agi_in->get_variable($value);
$temp = $agi_in->get_variable($value);
$temp = $agi_in->get_variable($value);
$temp = $temp;
$agi_in->verbose($value." :".$temp);
return $temp;
}
б) решить вопрос кардинально, но я это решение реализовать не смог, т.к. до конца не понял как работают стримы и куда вставить код.
function evaluate($command)
{
//clear the buffer
stream_set_blocking($this->in,0);
do {
$line = fgets($this->in);
} while ($line);
stream_set_blocking($this->in,1);
Всем пока.
| Posted in Asterisk, Проблемы в коде | No Comments »
Неплохо бомбилo с ubuntu и boot разделом
Сначала не работал nginx как я хотел, а именно, он не отличал виртуальные хосты. Всё уходило вероятно в дефолтный.
Оказалось что версия nginx старая 1.4 решил обновить и понеслось.
1. /boot оказался слишком маленьким и образы системы не загружались
Потратил часа два чтобы понять как увеличить partition на живой системе, оказалось, что достаточно было выполнить команду apt-get autoremove и старые образы удалились, а новые загрузились
а дальше всё просто, обновляем nginx добавляем в nginx.cong “include …/sites-enabled/*”
и всё зажурчало прекрасно.
hints: no space left on device
26.06.2017добавить Ip к интерфейсу в centos 6.8
Особенностью является то, что для интерфейса выделяется 1 ip адрес привязанный к MAC и таким образом можно использовать больше IP выделенных для маленьких подсетей.
В общем-то это особенность одного из клиентов.
1. смотрим все интерфейсы доступные в машине, в том числе отключенные:
ipconfig -a
2. копируем файл /etc/sysconfig/network-scripts/ifcfg-eth0 > ifcfg-eth1 т.к. у нас интерфейс в машине eth1 .
3. затем изменяем ifcfg-eth1 на нужный нам, указывая новый mac, адрес шлюза и сам IP.
4. Изменяем /etc/sysconfig/network
добавляем:
gateway = gataway_ip
gatewaydev = eth1
5. Обновляем MAC у виртуальной машины
6. запускаем.
Настройка voip телефона Polycom 331 для работа с TLS и DNS SRV
Странная логика у этого аппарата, ну понятно, что в виду нехватка документации объяснить какие-то пункты я не смогу, например, мне не понятно, как взаимодействует раздел SIP и line1. Но моя задача была настроить телефон так, чтобы он работал с TLS и DNS SRV, т.к. в текущем проекте, мы использовали DNS failover. Сразу скажу, что все получилось и сама схема DNS SRV failover прекрасна.
Общая схема такая: Polycom 331 —tls— Kamailio —udp— Asterisk
Итак, вот скрины настроек.
Остальные настройки вне line1 нужно сделать дефолтными, и всё пойдет.
| Posted in ssl\tls, Безопасность, Готовые решения, Проблемы при настройке | No Comments »
Тестирование Kamailio и multidomain сертификата ssl
Как подключить к Камалио самоподписанный multidomain сертификат.
Как обычно источники: Статья 1, Статья 2
Смысл простой, я так понял это можно сделать добавив extensions в сертификат, а это в свою очередь определяется в файлике openssl.conf
Находим секцию REQ в openssl.conf проверяем, что x509_extensions не закомментирован:
[req] ... x509_extensions = v3_ca
Затем добавляем секцию v3_ca и указываем в ней следующее:
[v3_ca] ... subjectAltName = @alt_names [alt_names] DNS.1 = example.com DNS.2 = www.example.com DNS.3 = example.co.uk DNS.4 = www.example.co.uk
У меня сработало и сертификат стал иметь несколько доменных зон, что крайне удобно когда использует DNS файловер.
Проверить, кстати, можно очень просто после создания запроса на сертификат, выполните
openssl req -text -noout -in <запрос_сертификата>.csr
И если увидите, что-то подобное, то можно генерировать сертификат.
Certificate Request: Data: Version: 0 (0x0) Subject: C=DE, ST=Germany, L=City, O=Company, OU=Organisation-Unit, CN=server1.example.com/emailAddress=alias@example.com Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (4096 bit) Modulus (4096 bit): [...] Exponent: 65537 (0x10001) Attributes: Requested Extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment X509v3 Subject Alternative Name: DNS:server1.example.com, DNS:mail.example.com, DNS:www.example.com , DNS:www.sub.example.com, DNS:mx.example.com, DNS:support.example.com Signature Algorithm: sha1WithRSAEncryption [...]
значит всё удалось.
| Posted in ssl\tls, Безопасность | No Comments »
TLS. Kamailio. Asterisk. Настройка
Схема которую планировали реализовать:
Client1 —<TLS>— Kamailio —<UDP>— Asterisk —<UDP>— Kamailio —<TLS>— <Client2>
Что почитать перед тем как настраивать, это сразу несколько позиций, они обязательно вам пригодятся, ибо быстро сделать даже такую простую схему без понимания принципа не получится. А может и получится, но останутся дыры.
- Документация TLS модуля для Камалио 4.4 – прекрасно описывается как создать сертификат без получения и т.д.
- ssldump -Nn покажет обмен внутри протокола ssl кто кому какие сертификаты посылает
- howto kamailio and tls
Теперь непосредственно, то как работает TLS в двух словах.
- создать центра сертификации – CA
- подписать им сертификат для Камалио
- скопировать в подписанный сертификат приватный ключь, этот на всякий случай
- создать сертификат для sip-клиента
- скопировать приватный ключ в сертификат т.к. некоторые сип клиенты не имеют возможность для указания отдельно приватного ключа в настройках
- вынести конфигурацию tls в отдельный файл
- далее прописать в calist.pem сертификат CA. Это нужно чтобы камалио получив сертификат от клиента проверил его CA в своем списке и если СА в доверенных, то одобрить сертификат (при этом неважно откуда звонит клиент и какой домен (CN) указан в сертификате
- Повесить камалио на lts : listen:tls:ip_address:5061
- подключить к своему клиенту сертификат.
- клиент будет проверять сертификат поэтому, в виндоус нужно добавить в доверенные центры сертификации ваш сертификат CA, который вы создавали в самом начале.
- в сертификате Камалио обязательно должен быть указан CN соответствующий домену Камалио, либо его IP адресу если домена как такогово нет.
- В настройках камалио нужно оставить только verify_certificate = yes, require_certificate = no. Если поставить оба значения, то у меня ситуация выглядела так: Во время звонка при передаче ACK сообщения sip-клиент создавал новое соединение TLS и оно было отказывалось работать, потому, что не совпадали CN ожидаемые sip-клиентом и указанные в сертификате. Не стал разбираться дальше почему так происходит.
Настройка на данном этапе завершена, сертификат проверяется, т.е. использовать левый сертификат не получится.