Страница 3 из 5

Re: astersik TLS и srtp

СообщениеДобавлено: 10 сен 2019, 01:07
ded
olegtsss писал(а):[Sep 10 00:16:02] ERROR[1346]: tcptls.c:453 __ssl_setup: TLS/SSL error loading cert file. </etc/asterisk/keys/asterisk.pem>
??
olegtsss писал(а):Так вроде и должно быть.
TLS/SSL error, так должно быть, вы считаете?

Re: astersik TLS и srtp

СообщениеДобавлено: 10 сен 2019, 04:29
olegtsss
делаешь reload и она уходит.

Re: astersik TLS и srtp

СообщениеДобавлено: 10 сен 2019, 10:42
ded
openssl x509 -in /etc/asterisk/keys/asterisk.pem -noout -text

Re: astersik TLS и srtp

СообщениеДобавлено: 11 сен 2019, 22:35
olegtsss
С проблемой разобрался, всем спасибо.
Астериск не принимал сертификаты, которые были сгенерированны его скриптами, ошибки при этом явно не были видны, но подключения не принимались. Для проверки возможности подключения советую применять это:
openssl s_client -host localhost -port 444444444
netstat -a | grep 444444444
CLI: pjsip show transports
Я попробовал сделать сертификаты с помощью easy-rsa и openssl. И те и те работают. Привожу рабочие конфигурации (кому-то съэкономят полно времени):
/etc/asterisk/pjsip.conf
############
[transport-tls]
type=transport
protocol=tls
bind=0.0.0.0:4444444444444
cert_file=/etc/asterisk/keys/cert-server.crt
priv_key_file=/etc/asterisk/keys/key-server.key
ca_list_file=/etc/asterisk/keys/ca.crt
cipher=AES128-SHA
method=tlsv1
allow_reload=true

[1001]
type=endpoint
transport=transport-tls
context=demo
disallow=all
allow=ulaw
allow=gsm
auth=auth1001
aors=1001
direct_media=no
media_encryption=sdes
rtp_symmetric=yes
force_rport=yes
rewrite_contact=yes
media_encryption=sdes

[auth1001]
type=auth
auth_type=userpass
password=555555555555555
username=1001

[1001]
type=aor
max_contacts=1
remove_existing=yes
####

/etc/asterisk/extensions.conf
###
[demo]
exten => _XXXX,1,Dial(PJSIP/${EXTEN})
###

Re: astersik TLS и srtp

СообщениеДобавлено: 11 сен 2019, 22:45
olegtsss
Кто может подскажет по настройке fail2ban, в Интернете рабочие варианты только для tcp/udp, а не для tls.
Вижу, что правила firewall принимают входящие пакеты куда нужно и передают их пользовательской цепочке:

Chain INPUT (policy ACCEPT 173 packets, 36089 bytes)
pkts bytes target prot opt in out source destination
68 26612 fail2ban-asterisk-tcp tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 555555555

Chain fail2ban-asterisk-tcp (1 references)
pkts bytes target prot opt in out source destination
68 26612 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0

А вот сервис fail2ban не срабатывает и проблемный ip не добавляет в бан. При этом все вроде настроено, но мне кажется у меня где-то ошибка в регулярном выражении:

[Sep 11 23:23:09] NOTICE[1065] res_pjsip/pjsip_distributor.c: Request 'REGISTER' from '"1001" <sip:1001@194.87.555555>' failed for '89.237.194444:28680' (callid: 8032D48E-26D3-E911-B15E-CE67189C8C3D@192.168.1.10) - Failed to authenticate
[Sep 11 23:23:09] SECURITY[859] res_security_log.c: SecurityEvent="ChallengeResponseFailed",EventTV="2019-09-11T23:23:09.349+0600",Severity="Error",Service="PJSIP",EventVersion="1",AccountID="1001",SessionID="8032D48E-26D3-E911-B15E-CE67189C8C3D@192.168.1.10",LocalAddress="IPV4/TLS/194.87.944444/5146",RemoteAddress="IPV4/TLS/89.237.1333333/28680",Challenge="1568222589/6aa31a51e57211bf671864c5e28ddc8a",Response="654a2698a93619dc465ed5562516100d",ExpectedResponse=""
Ну и так далее. Это messages log.

Мои регулярные выражения:
log_prefix= (?:NOTICE|SECURITY)%(__pid_re)s:?(?:\[C-[\da-f]*\])? \S+:\d*( in \w+:)?

^(%(__prefix_line)s|[]\s*)%(log_prefix)s Request 'REGISTER' from '[^']*' failed for '<HOST>:\d+'$

На всякий случай:
/etc/fail2ban/jail.conf
#########
[asterisk]
enabled = true
filter = asterisk
action = iptables-multiport[name=asterisk-tls, port="55555555555", protocol=tcp]
logpath = /var/log/asterisk/messages
bantime = 259200
maxretry = 2
#########

Re: astersik TLS и srtp

СообщениеДобавлено: 11 сен 2019, 23:49
ded
olegtsss, транспортных протоколов транспортного уровня (Layer 4) модели OSI всего два, только udp & tcp
Протокол TLS stands for "transport layer security".
protocol details:

SSL/TLS uses an underlying transport medium that provides a bidirectional stream of bytes. That would put it somewhere above layer 4.
SSL/TLS organizes data as records, that may contain, in particular, handshake messages. Handshake messages look like layer 5. This would put SSL/TLS at layer 6 or 7.
However, what SSL/TLS conveys is "application data", which is, in fact, a bidirectional stream of bytes. Applications that use SSL/TLS really use it as a transport protocol. They then use their own data representation and messages and semantics within that "application data". Therefore, SSL/TLS cannot be, in the OSI model, beyond layer 4.
Thus, in the OSI model, SSL/TLS must be in layer 6 or 7, and, at the same time, in layer 4 or below. The conclusion is unescapable: the OSI model does not work with SSL/TLS. TLS is not in any layer.
Даже в правилах видно, что это tcp
fail2ban-asterisk-tcp tcp -- * * 0.0.0.0/0 0.0.0.0/0

Также не понимаю у вас destination ports 555555555
bind=0.0.0.0:4444444444444
портов всего 65 536, как tcp, так и udp.
Фильтровать атаки через fail2ban достаточно по дефолтному для tls порту tcp 5061. Или какой у вас там -
Код: выделить все
# netstat -nlp|grep asterisk
tcp        0      0 10.233.248.4:5060           0.0.0.0:*                   LISTEN      4701/asterisk     
tcp        0      0 10.233.248.4:5061           0.0.0.0:*                   LISTEN      4701/asterisk

Re: astersik TLS и srtp

СообщениеДобавлено: 12 сен 2019, 04:33
olegtsss
TLS работает по tcp на нестандартном порте. 444444 это я так выделил, чтобы было понятно, что под ними скрывается не стандартный порт. На firewall в пользовательскую цепочку трафик приходит, это видно по счетчику 68 пакетов. А вот fail2ban не реагирует на сообщения в логах. Проблема, мне кажется, в неверном регулярном выражении в /etc/fail2ban/filter.d/asterisk.conf. И значения по умолчанию не подходят для pjsip.

Re: astersik TLS и srtp

СообщениеДобавлено: 12 сен 2019, 11:08
ded
olegtsss писал(а):TLS работает по tcp на нестандартном порте. 444444 это я так выделил, чтобы было понятно, что под ними скрывается не стандартный порт..
выделили бы на одну четвёрку меньше, и на здоровье, с вашим нестандартом.
1) Тестируйте свои регулярные выражения утилитой file2ban-regex
2) переходите на chan_sip

Re: astersik TLS и srtp

СообщениеДобавлено: 12 сен 2019, 13:25
olegtsss
file2ban-regex это увлекательное приключение.
Кто понимает как осуществляется TLS соединение, в плане задействования сертификатов:
1) Ниже указаны рабочие настройки транспорта. Сертификат сервера, ключ сервера и сертификат ЦА - не совсем понимаю где какой используется. Такое ощущение, что сертификат ЦА вообще тут роли не играет, и никакая цифровая подпись не проверяется.
[transport-tls]
type=transport
protocol=tls
cert_file=/etc/asterisk/keys/cert-server.crt
priv_key_file=/etc/asterisk/keys/key-server.key
ca_list_file=/etc/asterisk/keys/ca.crt
cipher=AES128-SHA
method=tlsv1

2) IP телефоны при подключении к АТС получают сертификат сервера. Тут вроде понятно, им они шифруют информацию до него. А сами каким ключём расшифровывают? Такое чувство, что сертификат клиента и его ключ ему не передаются.
[1001]
type=endpoint
transport=transport-tls
media_encryption=sdes
dtls_cert_file=/etc/asterisk/keys/1001.crt
dtls_private_key=/etc/asterisk/keys/1001.key

3) Роль ЦА здесь не понятна, ведь Астерикс принимает любые сертификаты, даже не подписанные. Кто может пролить свет на все это?

Re: astersik TLS и srtp

СообщениеДобавлено: 12 сен 2019, 13:51
olegtsss
Вот кстати интресный лог:
ТЕЛЕФОН ПРИНЯЛ СЕРТИФИКАТ СЕРВЕРА:
15:33:55,459: R: TLSv1: SSLv3/TLS read server certificate (2100)
Issuer : /C=RU/ST=SPB/L=SPB/O=Asterisk_for_home/CN=CA_for_Asterisk
Not After: Sep 10 00:45:01 2020 GMT
Subject : /C=RU/ST=SPB/L=SPB/O=Asterisk_for_home/CN=server
-------------------------------------------
15:33:55,460: R: TLSv1: SSLv3/TLS read server certificate request (2100)
-------------------------------------------
15:33:55,460: R: TLSv1: SSLv3/TLS read server done (2100)
-------------------------------------------
ТЕЛЕФОН ОТДАЛ СВОЙ ВШИТЫЙ СЕРТИФИКАТ, ВМЕСТО ТОГО, ЧТОБЫ ПОЛУЧИТЬ ЕГО ОТ СЕРВЕРА:
15:33:55,461: T: TLSv1: SSLv3/TLS write client certificate (2100)
Issuer : /O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org
Not After: Jan 21 11:58:02 2021 GMT
Subject : /CN=Heiko Sommerfeldt/emailAddress=info@phoner.de
-------------------------------------------
15:33:55,461: T: TLSv1: SSLv3/TLS write client key exchange (2100)
-------------------------------------------
15:33:55,476: T: TLSv1: SSLv3/TLS write certificate verify (2100)
-------------------------------------------
15:33:55,476: T: TLSv1: SSLv3/TLS write finished (2100)
-------------------------------------------
15:33:55,613: R: TLSv1: SSLv3/TLS read server session ticket (2100)
-------------------------------------------
15:33:55,613: R: TLSv1: SSLv3/TLS read finished (2100)

А указать телефону сертификат клиента вручную - выдает ошибку, мол bad certificate)