5.3-002-update18, urfa, python

Технические вопросы по UTM 5.0
Ответить
LovingFox
Сообщения: 23
Зарегистрирован: Пт апр 10, 2015 16:26

5.3-002-update18, urfa, python

Сообщение LovingFox »

Пытаюсь подключиться скриптом python-а к UTM5, но соединение даже не удается создать -- клиент python-а не может понять версию SSL у UTM5 на этапе "рукопожатия".
В чем хитрость?

$ cat client.py

Код: Выделить всё

import socket, ssl                                                                                                                                  
                                                                                                                                                    
HOST='localhost'                                                                                                                                    
PORT=11758                                                                                                                                          
                                                                                                                                                    
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                                                                                            
ssl_sock = ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_SSLv3)                                                                                    
ssl_sock.connect((HOST, PORT))
$ python client.py

Код: Выделить всё

Traceback (most recent call last):
  File "client.py", line 8, in <module>
    ssl_sock.connect&#40;&#40;HOST, PORT&#41;&#41;
  File "/usr/lib/python2.7/ssl.py", line 433, in connect
    self._real_connect&#40;addr, False&#41;
  File "/usr/lib/python2.7/ssl.py", line 423, in _real_connect
    self.do_handshake&#40;&#41;
  File "/usr/lib/python2.7/ssl.py", line 405, in do_handshake
    self._sslobj.do_handshake&#40;&#41;
ssl.SSLError&#58; &#91;Errno 1&#93; _ssl.c&#58;510&#58; error&#58;1408F10B&#58;SSL routines&#58;SSL3_GET_RECORD&#58;wrong version number
$ tail /netup/utm5/log/debug.log

Код: Выделить всё

Jul 29 13&#58;26&#58;16 ?Debug &#58; c4e24700 RPCServer&#58; Client connecting&#58; &#91;127.0.0.1&#93;&#58;57294
Jul 29 13&#58;26&#58;16  Info  &#58; c4e24700 RPC2Connection&#58; Connection from&#58; &#91;127.0.0.1&#93;&#58;57294 new Session Key <48aab85500000000954e7ffed531d52d>
Jul 29 13&#58;26&#58;16  Warn  &#58; c4e24700 RPCConn&#58; Session closed
Jul 29 13&#58;26&#58;16  Info  &#58; c4e24700 ModTop&#58; connection <-1> not found
Jul 29 13&#58;26&#58;16 ?Debug &#58; c4e24700 RPCConn&#58; Session closed...

Аватара пользователя
MaxDM
Сообщения: 313
Зарегистрирован: Пн апр 03, 2006 10:26
Контактная информация:

Сообщение MaxDM »

Не знаю как в питоне, а на perl-е с ourfa работает

Код: Выделить всё

ssl => 'sslv3'

LovingFox
Сообщения: 23
Зарегистрирован: Пт апр 10, 2015 16:26

Сообщение LovingFox »

MaxDM писал(а):Не знаю как в питоне, а на perl-е с ourfa работает

Код: Выделить всё

ssl => 'sslv3'
MaxDM, на чистом perl-е (без ourfa) у меня так же НЕ работает. Ошибка та же, что и на python. Ниже скриншот из wireshark с ошибкой и ссылка на pcap-файл.
Видимо, SSL на машине нужно мне как-то настроить.
Что я не так делаю?

$ cat client.pl

Код: Выделить всё

use IO&#58;&#58;Socket&#58;&#58;SSL;                                                                                                                                
use IO&#58;&#58;Socket&#58;&#58;INET;                                                                                                                               
                                                                                                                                                    
my $HOST='localhost';                                                                                                                               
my $PORT=11758;                                                                                                                                     
my $cl = IO&#58;&#58;Socket&#58;&#58;SSL->new&#40;                                                                                                                      
   PeerHost       => $HOST,                                                                                                                         
   PeerPort       => $PORT,                                                                                                                         
   Domain         => AF_INET,                                                                                                                       
   Proto          => 'tcp',                                                                                                                         
   SSL_version    => 'SSLv3',                                                                                                                       
&#41;                                                                                                                                                   
   or die "error=$!, ssl_error=$SSL_ERROR";
$ ./client.pl

Код: Выделить всё

error=, ssl_error=IO&#58;&#58;Socket&#58;&#58;INET6 configuration failed SSL connect attempt failed with unknown error error&#58;1408F10B&#58;SSL routines&#58;SSL3_GET_RECORD&#58;wrong version number at ./client.pl line 9.
Ссылка на pcap-файл, скриншот которого ниже (можно скачать в течении 14 дней): https://dropmefiles.com/q0uvz
Изображение

LovingFox
Сообщения: 23
Зарегистрирован: Пт апр 10, 2015 16:26

Сообщение LovingFox »

Изучив PHP-шную реализацию клиента начал понимать, в чем дело.

Получается, что SSL-протокол в установленном соединении нужно включать не сразу, а после того, как произойдет авторизация подключения. Т.е. сначала клиентом urfa должны быть переданы хеши логина/пароля без SSL, и если они верны, то UTM5 авторизует TCP сессию. И уже только после этого urfa-клиент может включать SSL.

Интересно, почему в протоколе urfa включение SSL происходит НЕ сразу, а только после проверки логина/пароля?
:)

netup_user
Сообщения: 19
Зарегистрирован: Вт ноя 18, 2014 19:10

Сообщение netup_user »

Изучив PHP-шную реализацию клиента начал понимать, в чем дело.

Получается, что SSL-протокол в установленном соединении нужно включать не сразу, а после того, как произойдет авторизация подключения. Т.е. сначала клиентом urfa должны быть переданы хеши логина/пароля без SSL, и если они верны, то UTM5 авторизует TCP сессию. И уже только после этого urfa-клиент может включать SSL.

Интересно, почему в протоколе urfa включение SSL происходит НЕ сразу, а только после проверки логина/пароля?
Добрый день, а можете поделится рабочим примером? Тоже пытаюсь реализовать urfa клиента на python для версии 5.3.002 update18, но что то не получается пока.

Ругается на

Код: Выделить всё

ssl.SSLError&#58; &#91;SSL&#58; SSL_HANDSHAKE_FAILURE&#93; ssl handshake failure &#40;_ssl.c&#58;1646&#41;
хотя ядро вываливает

Код: Выделить всё

?Debug &#58; 8418000 RPCServer&#58; Client connecting&#58; &#91;127.0.0.1&#93;&#58;14332
Info  &#58; 8418000 RPC2Connection&#58; Connection from&#58; &#91;127.0.0.1&#93;&#58;14332 new Session Key <51311a57000000009e12b1174659d74a>
Info  &#58; 8418000 RPCConn&#58; Card user <init@127.0.0.1> is connecting
?Debug &#58; 8418000 DBAgroups&#58; UID -1 from system group 1
?Debug &#58; 8418000 ModTop&#58; connection <33> created
Info  &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; Access granted to &#91;SSL&#93;<init@127.0.0.1> &#40;UID&#58; -1&#41;
?Debug &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; SSL type requested&#58; SSLv3&#40;4&#41;
?Debug &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; SSL error lines&#58; 34498248704&#58;error&#58;1408A0C1&#58;SSL routines&#58;SSL3_GET_CLIENT_HELLO&#58;no shared cipher&#58;/usr/src/secure/lib/libssl/../../../crypto/openssl/ssl/s3_srvr.c&#58;1396&#58;

ERROR &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; SSL connection failed &#40;4&#41;, system errno <0>
?Debug &#58; 8418000 RPC2Connection&#58; Session Key <51311a57000000009e12b1174659d74a> stored for UID -1 from <127.0.0.1>
?Debug &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; SSL cleared
?Debug &#58; 8418000 ModTop&#58; connection <33> closed
?Debug &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; Session closed...
тоесть авторизацию он проходит, но возникают какие то проблемы в момент инициализации ssl, а в чём конкретно проблема, не пойму.

Аватара пользователя
kaN5300
Сообщения: 480
Зарегистрирован: Пт янв 21, 2005 17:27
Откуда: Ыукзгрщм
Контактная информация:

Сообщение kaN5300 »

netup_user писал(а):
Изучив PHP-шную реализацию клиента начал понимать, в чем дело.

Получается, что SSL-протокол в установленном соединении нужно включать не сразу, а после того, как произойдет авторизация подключения. Т.е. сначала клиентом urfa должны быть переданы хеши логина/пароля без SSL, и если они верны, то UTM5 авторизует TCP сессию. И уже только после этого urfa-клиент может включать SSL.

Интересно, почему в протоколе urfa включение SSL происходит НЕ сразу, а только после проверки логина/пароля?
Добрый день, а можете поделится рабочим примером? Тоже пытаюсь реализовать urfa клиента на python для версии 5.3.002 update18, но что то не получается пока.

Ругается на

Код: Выделить всё

ssl.SSLError&#58; &#91;SSL&#58; SSL_HANDSHAKE_FAILURE&#93; ssl handshake failure &#40;_ssl.c&#58;1646&#41;
хотя ядро вываливает

Код: Выделить всё

?Debug &#58; 8418000 RPCServer&#58; Client connecting&#58; &#91;127.0.0.1&#93;&#58;14332
Info  &#58; 8418000 RPC2Connection&#58; Connection from&#58; &#91;127.0.0.1&#93;&#58;14332 new Session Key <51311a57000000009e12b1174659d74a>
Info  &#58; 8418000 RPCConn&#58; Card user <init@127.0.0.1> is connecting
?Debug &#58; 8418000 DBAgroups&#58; UID -1 from system group 1
?Debug &#58; 8418000 ModTop&#58; connection <33> created
Info  &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; Access granted to &#91;SSL&#93;<init@127.0.0.1> &#40;UID&#58; -1&#41;
?Debug &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; SSL type requested&#58; SSLv3&#40;4&#41;
?Debug &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; SSL error lines&#58; 34498248704&#58;error&#58;1408A0C1&#58;SSL routines&#58;SSL3_GET_CLIENT_HELLO&#58;no shared cipher&#58;/usr/src/secure/lib/libssl/../../../crypto/openssl/ssl/s3_srvr.c&#58;1396&#58;

ERROR &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; SSL connection failed &#40;4&#41;, system errno <0>
?Debug &#58; 8418000 RPC2Connection&#58; Session Key <51311a57000000009e12b1174659d74a> stored for UID -1 from <127.0.0.1>
?Debug &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; SSL cleared
?Debug &#58; 8418000 ModTop&#58; connection <33> closed
?Debug &#58; 8418000 RPCConn&#91;SSL&#93;<init@127.0.0.1>&#58; Session closed...
тоесть авторизацию он проходит, но возникают какие то проблемы в момент инициализации ssl, а в чём конкретно проблема, не пойму.
У нас всё тоже самое. После обновления 5.3-002 с u12 до u18 обновили урфа клиент пхп-шный https://github.com/k-shym/URFAClient

Контейнер с jessie ругался что openssl якобы не вкомпилен. Здесь на форуме писали что работают только старые версии php. Установили из wheezy гуталиновый 5.4.45-0+deb7u8. При выполнении простейшего скрипта

Код: Выделить всё

<?php

include __DIR__ . '/init.php';

$urfa = URFAClient&#58;&#58;init&#40;array&#40;
    'login'    => 'login',
    'password' => 'password',
    'address'  => '192.168.1.1',
    'timeout'  => 10,
    'log'      => TRUE,
    'admin'      => TRUE,
    'protocol' => 'ssl',
    'api'      => 'xml/api_53-002.xml',
&#41;&#41;;

-- cut --
Получаем

Код: Выделить всё

 % php ./example.php
PHP Warning&#58;  stream_socket_enable_crypto&#40;&#41;&#58; SSL operation failed with code 1. OpenSSL Error messages&#58;
error&#58;14094410&#58;SSL routines&#58;ssl3_read_bytes&#58;sslv3 alert handshake failure in /opt/scripts/billing/urfa-new/classes/URFAClient/Connection.php on line 108
PHP Notice&#58;  fwrite&#40;&#41;&#58; send of 1 bytes failed with errno=32 Broken pipe in /opt/scripts/billing/urfa-new/classes/URFAClient/Connection.php on line 214
PHP Notice&#58;  fwrite&#40;&#41;&#58; send of 1 bytes failed with errno=32 Broken pipe in /opt/scripts/billing/urfa-new/classes/URFAClient/Connection.php on line 215
PHP Notice&#58;  fwrite&#40;&#41;&#58; send of 2 bytes failed with errno=32 Broken pipe in /opt/scripts/billing/urfa-new/classes/URFAClient/Connection.php on line 216
PHP Notice&#58;  fwrite&#40;&#41;&#58; send of 2 bytes failed with errno=32 Broken pipe in /opt/scripts/billing/urfa-new/classes/URFAClient/Connection.php on line 220
PHP Notice&#58;  fwrite&#40;&#41;&#58; send of 2 bytes failed with errno=32 Broken pipe in /opt/scripts/billing/urfa-new/classes/URFAClient/Connection.php on line 221
PHP Notice&#58;  fwrite&#40;&#41;&#58; send of 4 bytes failed with errno=32 Broken pipe in /opt/scripts/billing/urfa-new/classes/URFAClient/Connection.php on line 222
Array
&#40;
    &#91;0&#93; => 2017.05.15 14&#58;51&#58;59 ERROR&#58; rpcf_add_user_new&#40; Array &#40; &#91;login&#93; => test5000 &#91;password&#93; => test5000 &#41; &#41;&#58; Error calling function rpcf_add_user_new
    &#91;1&#93; => 2017.05.15 14&#58;51&#58;59 ERROR&#58; rpcf_liburfa_list&#40; Array &#40; &#41; &#41;&#58; Error calling function rpcf_liburfa_list
&#41;
На стороне UTM в дебаг логе:

Код: Выделить всё

May 15 14&#58;53&#58;37  Info  &#58; 9634500 RPCConn&#91;SSL&#93;<script_server@192.168.241.243>&#58; Access granted to &#91;SSL&#93;<script_server@192.168.241.243> &#40;UID&#58; -101&#41;
May 15 14&#58;53&#58;37 ?Debug &#58; 9634500 RPCConn&#91;SSL&#93;<script_server@192.168.241.243>&#58; SSL type requested&#58; SSLv3&#40;4&#41;
May 15 14&#58;53&#58;37 ?Debug &#58; 9634500 RPCConn&#91;SSL&#93;<script_server@192.168.241.243>&#58; SSL error lines&#58; 34517239040&#58;error&#58;1408A0C1&#58;SSL routines&#58;SSL3_GET_CLIENT_HELLO&#58;no shared cipher&#58;/usr/src/secure/lib/libssl/../../../crypto/openssl/ssl/s3_srvr.c&#58;1116&#58;

May 15 14&#58;53&#58;37  ERROR &#58; 9634500 RPCConn&#91;SSL&#93;<script_server@192.168.241.243>&#58; SSL connection failed &#40;4&#41;, system errno <0>
May 15 14&#58;53&#58;37 ?Debug &#58; 9634500 RPC2Connection&#58; Session Key <c196195900000000e444c945403a6699> stored for UID -101 from <192.168.241.243>
May 15 14&#58;53&#58;37 ?Debug &#58; 9634500 RPCConn&#91;SSL&#93;<script_server@192.168.241.243>&#58; SSL cleared
May 15 14&#58;53&#58;37 ?Debug &#58; 9634500 ModTop&#58; connection <6> closed
May 15 14&#58;53&#58;37 ?Debug &#58; 9634500 RPCConn&#91;SSL&#93;<script_server@192.168.241.243>&#58; Session closed...
Афтор сообщает о поддержке tls
Добавлена поддержка протокола TLSv1 (доступно с версии UTM-5.3-002-update16)
Но и замена алго на tls оптимизма не добавляют:

На стороне сервера:

Код: Выделить всё

 % php ./example.php
PHP Fatal error&#58;  Uncaught exception 'Exception' with message 'Error code 0' in /opt/scripts/billing/urfa-new/classes/URFAClient/Connection.php&#58;175
Stack trace&#58;
#0 /opt/scripts/billing/urfa-new/classes/URFAClient/Connection.php&#40;83&#41;&#58; URFAClient_Connection->read&#40;Object&#40;URFAClient_Packet&#41;&#41;
#1 /opt/scripts/billing/urfa-new/classes/URFAClient/Connection.php&#40;64&#41;&#58; URFAClient_Connection->_auth&#40;'script_server', 'superstrongpass...', true, 'tls'&#41;
#2 /opt/scripts/billing/urfa-new/classes/URFAClient.php&#40;59&#41;&#58; URFAClient_Connection->__construct&#40;Array&#41;
#3 /opt/scripts/billing/urfa-new/example.php&#40;14&#41;&#58; URFAClient&#58;&#58;init&#40;Array&#41;
#4 &#123;main&#125;
  thrown in /opt/scripts/billing/urfa-new/classes/URFAClient/Connection.php on line 175
На стороне утм:

Код: Выделить всё

May 15 15&#58;01&#58;52  Info  &#58; 9635400 RPC2Connection&#58; Connection from&#58; &#91;192.168.241.243&#93;&#58;53471 new Session Key <b0981959000000001322747389861baa>
May 15 15&#58;01&#58;52  ERROR &#58; 9635400 RPCConn&#58; Unsupported SSL type <6>
May 15 15&#58;01&#58;52 ?Debug &#58; 9635400 RPCConn&#58; SSL cleared
May 15 15&#58;01&#58;52  Info  &#58; 9635400 ModTop&#58; connection <-1> not found
May 15 15&#58;01&#58;52 ?Debug &#58; 9635400 RPCConn&#58; Session closed...
Кому-то вообще удавалось завести php-урфу на 5.3.002-u18?

Nik0n
Сообщения: 77
Зарегистрирован: Пн сен 14, 2009 13:53
Откуда: Екатеринбург
Контактная информация:

Сообщение Nik0n »

Я то же натыкался на проблемы с SSL.
Недавно обновлял PHP на CentOS 6.8/x86_64.
UTM5 5.3.002-update18 (не менялся).
До обновления был php 5.3.х И ЛК работал успешно.
Только обновил до php 5.6.30 - тут же перестал ЛК работать и именно такие же ошибки были в main.log. На моменте авторизации не отрабатывало включение SSL.
Помогла замена lib/urfa.php ИЗ КОМПЛЕКТА ЛК 5.3.004!
Тогда ЛК 5.3.002 заработал нормально.

Аватара пользователя
kaN5300
Сообщения: 480
Зарегистрирован: Пт янв 21, 2005 17:27
Откуда: Ыукзгрщм
Контактная информация:

Сообщение kaN5300 »

Nik0n писал(а):Я то же натыкался на проблемы с SSL.
Недавно обновлял PHP на CentOS 6.8/x86_64.
UTM5 5.3.002-update18 (не менялся).
До обновления был php 5.3.х И ЛК работал успешно.
Только обновил до php 5.6.30 - тут же перестал ЛК работать и именно такие же ошибки были в main.log. На моменте авторизации не отрабатывало включение SSL.
Помогла замена lib/urfa.php ИЗ КОМПЛЕКТА ЛК 5.3.004!
Тогда ЛК 5.3.002 заработал нормально.
Это у вас вэбка. С ней известны проблемы. А я сегодня продолжаю расковыривать пхп-урфу. Сейчас взял и перепрыгнул на лабе с 002u18 на 003u15. На скрипт-сервере ничего не трогал, просто запустил скрипт и тут же был создан тестовый аккаунт юзера.

Причём если указать protocol: tls, то всё равно не работает, хоть автор и заявляет совместимость. На стороне сервера debug.log:

Код: Выделить всё

May 16 10&#58;05&#58;32  Info  &#58; 9225300 RPCConn&#91;SSL&#93;<script_server@192.168.241.243>&#58; Access granted to &#91;SSL&#93;<script_server@192.168.241.243> &#40;UID&#58; -101&#41;
May 16 10&#58;05&#58;32 ?Debug &#58; 9225300 RPCConn&#91;SSL&#93;<script_server@192.168.241.243>&#58; SSL type requested&#58; TLSv1&#40;6&#41;
May 16 10&#58;05&#58;32 ?Debug &#58; 9225300 RPCConn&#91;SSL&#93;<script_server@192.168.241.243>&#58; SSL error lines&#58; 34512982784&#58;error&#58;1408F10B&#58;SSL routines&#58;SSL3_GET_RECORD&#58;wrong version number&#58;/usr/src/secure/lib/libssl/../../../crypto/openssl/ssl/s3_pkt.c&#58;372&#58;
May 16 10&#58;05&#58;32  ERROR &#58; 9225300 RPCConn&#91;SSL&#93;<script_server@192.168.241.243>&#58; SSL connection failed &#40;4&#41;, system errno <0>

netup_user
Сообщения: 19
Зарегистрирован: Вт ноя 18, 2014 19:10

Сообщение netup_user »

приветствую, у кого нибудь получилось реализовать urfa на python?

Ответить