Pytanie:
Jak używać „openssl s_client” do testowania obsługi (braku) SSLv3?
Roger Lipscombe
2014-10-15 14:54:13 UTC
view on stackexchange narkive permalink

W celu złagodzenia luki w zabezpieczeniach Poodle, chciałbym wyłączyć obsługę SSLv3 na moim serwerze (w tym przypadku TLS zamiast HTTPS). Jak mogę użyć openssl s_client , aby sprawdzić, czy to zrobiłem?

Pięć odpowiedzi:
P4cK3tHuNt3R
2014-10-15 15:16:31 UTC
view on stackexchange narkive permalink

OpenSSL s_client

Aby sprawdzić, czy wyłączyłeś obsługę SSLv3, uruchom następującą

  openssl s_client -connect example.com:443 -ssl3  

co powinno dać coś takiego jak

  3073927320: error: 14094410: procedury SSL: SSL3_READ_BYTES: sslv3 alert handshake failure: s3_pkt.c: 1258: SSL alert numer 403073927320: błąd: 1409E0E5: procedury SSL: SSL3_WRITE_BYTES: błąd uzgadniania ssl: s3_pkt.c: 596:  

co oznacza, że ​​SSLv3 jest wyłączony na serwerze. W przeciwnym razie połączenie zostanie pomyślnie nawiązane.

Nmap

Alternatywnie możesz użyć nmap do przeskanowania serwera w poszukiwaniu obsługiwanej wersji:

  # nmap --script ssl-enum-ciphers example.com Uruchamianie Nmap 6.47 (http://nmap.org) o 2014-10-15 03:19 PDTN Raport skanowania mapy dla example.com (203.0.113.100) Host jest włączony (Opóźnienie 0,090 s) .rDNS rekord dla 203.0.113.100: edge.example.com Nie pokazano: 997 filtrowanych portów USŁUGA STANU PORTU80 / tcp otwarte http443 / tcp otwarte https | ssl-enum-ciphers: | ** SSLv3: nie znaleziono obsługiwanych szyfrów ** | TLSv1.0:  
Polecenie openssl działa; Nie mogę jednak uruchomić skryptu nmap.
Ach. Port inny niż domyślny. Użyj `--script + ssl-enum-ciphers`, na http://stackoverflow.com/a/17175548/8446.
Jaki jest wynik twojego polecenia nmap?
https://gist.github.com/rlipscombe/eb941f08f24016fe5cd0
@RogerLipscombe Dobrze, więc co tam nie działa? SSLv3 nie jest wymieniony, więc nie jest obsługiwany.
Działa dobrze; Rozwiązałem to. Używam niestandardowego portu, więc muszę poprzedzić nazwę skryptu znakiem „+”, aby wymusić jego uruchomienie.
Zobacz również tę odpowiedź, aby dowiedzieć się, jak interpretować dane wyjściowe openssl: https://security.stackexchange.com/a/169738/60157
Anonymous Platypus
2015-07-06 17:57:55 UTC
view on stackexchange narkive permalink

Na marginesie możesz użyć nmap ze skryptem ssl-enum-ciphers w następujący sposób

  nmap --script ssl-enum-ciphers -p 443 przykład .com  

Otrzymasz taką odpowiedź.

  PORT STATE SERVICE443 / tcp open https | ssl-enum-ciphers: | SSLv3: | szyfry: | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - silny | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - silny | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - silny | TLS_RSA_WITH_RC4_128_MD5 - silny | TLS_RSA_WITH_RC4_128_SHA - silny | sprężarki: | NULL | TLSv1.0: | szyfry: | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - silny | TLS_RSA_WITH_RC4_128_MD5 - silny | TLS_RSA_WITH_RC4_128_SHA - silny | sprężarki: | NULL | TLSv1.1: | szyfry: | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - silny | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - silny | sprężarki: | NULL | TLSv1.2: | szyfry: | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - silny | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - silny | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - silny | sprężarki: | NULL | _ najmniej siła: mocna  

Jak widać, zawiera listę wszystkich obsługiwanych wersji ssl / tls, a także zestawów szyfrów

Po prostu najszybszy sposób na uzyskanie listy dostępnych szyfrów na zdalnym punkcie końcowym.nmap jak zwykle rządzi!;)
theterribletrivium
2014-10-16 03:43:35 UTC
view on stackexchange narkive permalink

Stworzyłem ten test pod kątem dostępności protokołu SSLv3. Prawdopodobnie istnieje lepszy sposób na wyszukanie ciągu, który pokazuje również, że szyfry CBC są w użyciu, ale większość ludzi po prostu chce wiedzieć, czy SSLv3 jest w ogóle dostępny.

Kilka rzeczy do zapamiętania:

  • Napisany dla basha w systemie Mac OS X, więc nie mogę powiedzieć na pewno, że będzie działał wszędzie
  • Używa gtimeout w porównaniu z limitem czasu, ponieważ Mac jest dziwny co do tych podstawowych narzędzi
  • allexternal.txt to plik z jedną nazwą hosta lub adresem IP w każdym wierszu

skrypt:

  dla ip w `awk '{print $ 1} '< allexternal.txt`; zrobić, jeśli gtimeout 30 openssl s_client -connect $ ip: 443 -ssl3 | grep -q 'Protokół: SSLv3'; następnie wykryto echo $ ip SSLv3 >> sslv3output; else echo $ ip SSLv3 NIE wykryto >> sslv3output; fi; gotowe  
Przepraszam za formatowanie, nie byłem pewien, jak sprawić, by poważne akcenty pojawiały się jako dosłowne, zamiast przekształcać je w blok kodu.
Dzięki za udostępnienie, ale czy mogę zasugerować użycie echo 'QUIT', aby nie musieć instalować gtimeout. Druga linia powinna brzmieć ... jeśli echo 'QUIT' | openssl s_client -connect $ ip: 443 -ssl3 | grep -q 'Protokół: SSLv3'; następnie
Używanie „Protokołu: SSLv3” również wydaje się budzić wątpliwości.Na tej stronie: http://security.stackexchange.com/a/71459/51963 „Cipher: 0000” może być lepszym ciągiem do wyszukania.
Mathias R. Jessen
2015-02-26 06:29:15 UTC
view on stackexchange narkive permalink

Jeśli tylko SSLv3 jest wyłączony, możesz także wymusić na openssl s_client używanie tylko TLS:

  openssl s_client -connect exmaple.com:443 -tls1  kod> 
W przypadku protokołu TLS 1.0 i nowszych należy również użyć opcji `-servername`. W dołącza SNI.
To nie sprawdza, czy ssl3 jest wyłączony, po prostu mówi, aby użyć TLS 1
matttyg
2018-09-12 16:00:41 UTC
view on stackexchange narkive permalink

Warto zauważyć, że opcja -ssl3 w OpenSSL musi być teraz włączona w czasie kompilacji. Jeśli korzystasz z prekompilowanych plików binarnych, opcja może być niedostępna. Zobacz ten numer: https://github.com/openssl/openssl/issues/6801

Alternatywnym narzędziem jest testssl.sh. Sprawdza protokoły, szyfry i wybrane luki w zabezpieczeniach: https://github.com/drwetter/testssl.sh



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...