Шукати в цьому блозі

Показ дописів із міткою telnet. Показати всі дописи
Показ дописів із міткою telnet. Показати всі дописи

пʼятниця, 1 грудня 2017 р.

Як перевірити з'єднання по https/http2?

Сподіваюся, що всім відомо, що звичайне з'єднання по http-протоколу можна перевірити використовуючи звичайну команду telnet:
$ telnet google.com.ua 80
Trying 172.217.20.163...
Connected to google.com.ua.
Escape character is '^]'.
GET /
HTTP/1.0 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Location: http://www.google.com.ua/?gfe_rd=cr&dcr=0&ei=51chWtS7ErTi8Aed2bXIBA
Content-Length: 272
Date: Fri, 01 Dec 2017 13:23:51 GMT

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.ua/?gfe_rd=cr&dcr=0&ei=51chWtS7ErTi8Aed2bXIBA">here</A>.
</BODY></HTML>
Connection closed by foreign host.
А як перевірити https/http2?
Виявляється, що теж доволі просто:
$ openssl s_client -connect google.com.ua:443
CONNECTED(00000003)
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = google.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=google.com
   i:/C=US/O=Google Inc/CN=Google Internet Authority G2
 1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
   i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIgzjCCH7agAwIBAgIIC3opcadHGlowDQYJKoZIhvcNAQELBQAwSTELMAkGA1UE
…skip…
aVs=
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=google.com
issuer=/C=US/O=Google Inc/CN=Google Internet Authority G2
---
No client certificate CA names sent
---
SSL handshake has read 11078 bytes and written 415 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: CF87F01549DC0A0F009A3BE4125C7FC4CEA275ECA69BB770311C6D36FCF9D3F3
    Session-ID-ctx: 
    Master-Key: BFED552D2D80DDC539E59DAE4593F349FD4CB9AD334F3515640D213C3948771855C5F4EAA378025EF179BAD5FDC952AA
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 100800 (seconds)
    TLS session ticket:
    0000 - 00 f6 8f 2c 19 9c a3 e3-1b 90 16 f0 0d c3 f7 c2   ...,............
    …skip…
    00d0 - 13 56 e8 9f 2e                                    .V...

    Start Time: 1512134921
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
GET /
HTTP/1.0 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Location: https://www.google.com.ua/?gfe_rd=cr&dcr=0&ei=DFkhWt_PNa_i8Aeci6y4AQ
Content-Length: 273
Date: Fri, 01 Dec 2017 13:28:44 GMT
Alt-Svc: hq=":443"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=":443"; ma=2592000; v="41,39,38,37,35"

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="https://www.google.com.ua/?gfe_rd=cr&dcr=0&ei=DFkhWt_PNa_i8Aeci6y4AQ">here</A>.
</BODY></HTML>
read:errno=0
От так от.

Приблизно те саме, але для smtp TLS:
openssl s_client -starttls smtp -crlf -connect smtp.mailgun.org:587
Ну, а по інших моментах певно man openssl допомогти зможе :)

понеділок, 7 березня 2016 р.

Тестування SMTP та ESMTP через telnet

SMTP (Simple Mail Transfer Protocol, Простий Протокол Пересилання Пошти) - це протокол, який використовується для пересилання електронної пошти до поштового сервера або з клієнта-комп'ютера, або між поштовими серверами. В IANA для SMTP зареєстрований порт 25. SMTP з'єднання де застосовується SSL шифрування використовують порт 465. Формально SMTP визначений в RFC 821 (STD 10) та покращений RFC 1123 (STD 3) розділ 5. Протокол, який використовується зараз, також відомий як ESMTP і визначений в RFC 2821.

Окрім з'єднань між MTA (Mail Transfer Agent), зі сторони клієнта з'єднатися з smtp-сервером можна як за допомогою налаштованого MUA (Mail User Agent) так і за допомогою telnet на 25/tcp порт. Щоб швидко перевірити чи smtp-сервер взагалі слухає та хоч якось працює останнього цілком достатньо.

Перевіряємо SMTP.
telnet сервер 25
Після того як з'єднання з smtp-сервером буде встановлено і отримаємо привітання, щось на кшталт
220 smtp.server.com, ESMTP
Можна спробувати ввести одна за одною наступні smtp-команди:
HELO localhost
MAIL FROM: <sender@server.com>
RCPT TO: <user1@server.com>
RCPT TO: <user2@server.com>
DATA
From: Sender <sender@server.com>
To: Receiver1 <user1@server.com>
To: Receiver2 <user2@server.com>
Subject: Test SMTP
Content-Type: text/plain

Hi!
Test SMTP.

.
QUIT
Варто зауважити, що якщо ви не є визнаним користувачем smtp-сервера (наприклад, абонентом провайдера до smtp-сервера якого хочете отримати доступ) то smtp-сервер може або не прийняти з'єднання або ж на будь-якому етапі перервати його, якщо таку дію налаштовано задля забезпечення унеможливлювання пересилання спаму.

Іноді, але не завжди, smtp-сервера для своїх користувачів надають можливість надсилати пошту з будь-якої частини Мережі, за умови позитивного проходження аутентифікації. Аутентифікація є розширенням до протоколу SMTP. Для її перевірки попередньо знадобиться виконати дві команди: перша ідентифікую користувача сервера, друга його пароль:
~$ perl -MMIME::Base64 -e 'print encode_base64("sender\@server.com");'
c2VuZGVyQHNlcnZlci5jb20=
~$ perl -MMIME::Base64 -e 'print encode_base64("pa\$\$w0rd");'
cGEkJHcwcmQ=

Після цього можна спробувати поспілкуватися з smtp-сервером і спробувати авторизуватися:
EHLO localhost
AUTH LOGIN
c2VuZGVyQHNlcnZlci5jb20=
cGEkJHcwcmQ=
MAIL FROM: <sender@server.com>
RCPT TO: <user1@server.com>
RCPT TO: <user2@server.com>
DATA
From: Sender <sender@server.com>
To: Receiver1 <user1@server.com>
To: Receiver2 <user2@server.com>
Subject: Test SMTP
Content-Type: text/plain

Hi!
Test Auth.

.
QUIT

Замість AUTH LOGIN до речі можна використовувати й AUTH PLAIN чи, наприклад, AUTH CRAM-MD5, якщо це підтримується сервером і якщо знаєте як цим користуватися.

Варто також зауважити, що у наведених прикладах localhost варто замінити на реальне ім'я своєї системи, а у полях from та to вказувати реальних користувачів, інакше сервер легко може сприйняти вас за спамера і, відповідно, заблокувати відправлення пошти.