Jak wyłączyć SSLv3 w Apache?

76

Wydaje się, że wszyscy dzisiaj mówią o podatności na POODLE . I wszyscy zalecają wyłączenie SSLv3 w Apache przy użyciu następującej dyrektywy konfiguracyjnej:

SSLProtocol All -SSLv2 -SSLv3

zamiast domyślnego

SSLProtocol All -SSLv2

Zrobiłem to i nie mam radości - po wielokrotnych testach z różnymi narzędziami ( tutaj jest szybkie ), stwierdzam, że mój serwer chętnie akceptuje SSLv3.

Tak, zrestartowałem Apache. Tak, zrobiłem rekursywny grepdla wszystkich plików konfiguracyjnych i nigdzie nie mam nadpisania. I nie, nie używam jakiejś starożytnej wersji Apache:

[root@server ~]# apachectl -v
Server version: Apache/2.2.15 (Unix)
Server built:   Jul 23 2014 14:17:29

Co więc daje? Jak można naprawdę wyłączyć SSLv3 w Apache?

Bogdan Stăncescu
źródło
Odpowiedzi tutaj: askubuntu.com/q/537196/7163
Rory Alsop
5
Jak wyjaśniono w pytaniu, wykonałem wszystkie kroki wskazane w tej sekcji, a protokół SSL3 jest nadal dostępny. Nie mogę ci powiedzieć, która konkretna część tej sekcji nie wyłącza SSL3, ale chodzi o to, że po prostu tego nie robi. Powiedziawszy to, rozumiem, że w tej chwili masz na sobie kapelusz moderatora, więc proszę nie zadawać pytania - może to udowodnić, że jestem kretynem i popełniłem podstawowy błąd, ale z POV moderatora jest to uzasadnione pytanie.

Odpowiedzi:

80

Miałem ten sam problem ... Musisz uwzględnić SSLProtocol all -SSLv2 -SSLv3w każdej sekcji VirtualHost w httpd.conf

Sekcje VirtualHost znajdują się zazwyczaj pod koniec pliku httpd.conf. Na przykład:

...
...
<VirtualHost your.website.example.com:443>
    DocumentRoot /var/www/directory
    ServerName your.website.example.com

    ...
    SSLEngine on
    ...
    SSLProtocol all -SSLv2 -SSLv3
    ...
</VirtualHost>

Sprawdź także ssl.conf lub httpd-ssl.conf lub podobny, ponieważ można je tam ustawić, niekoniecznie w httpd.conf

darcoli
źródło
3
Dla przypomnienia, w zależności od twojego sysadmina / webmastera, VirtualHosts może równie dobrze żyć w swoim własnym dedykowanym pliku w conf.d (tak lubię utrzymywać dom, i to jest coś, czego się nauczyłem, a nie coś, co wymyśliłem, więc oczekuję, że będę nie jestem jedyny).
Bogdan Stăncescu
3
Pamiętaj, że przynajmniej Apache 2.4+ SSLProtocolskonfigurowany poza sekcjami VirtualHost będzie miał zastosowanie do wszystkich wirtualnych hostów.
nurikabe
2
Uważam, że to narzędzie, które będzie testować, między innymi, czy serwer posiada SSLv3 niepełnosprawnych: ssllabs.com/ssltest/index.html
amphetamachine
1
Ta odpowiedź była dla mnie bardzo pomocna podczas wyłączania TLSv1. Aby sprawdzić, czy dany protokół jest całkowicie wyłączony, znalazłem następujące przydatne: nmap -sV --script ssl-enum-ciphers -p 443 <hostname>.
Luca Citi,
Czy istnieje sposób na skonfigurowanie całego SSLProtocolsystemu bez konieczności edytowania każdego VirtualHost?
Dunatotatos
10

Miałem ten sam problem na Ubuntu 14.04. Po przeczytaniu tego zredagowałem sekcję „SSLProtocol” w /etc/apache2/mods-available/ssl.conf.

  • od: SSLProtocol all
  • do: SSLProtocol all -SSLv2 -SSLv3 -TLSV1

Ale to nie zadziałało. Dlatego też edytowałem następującą sekcję „SSLCipherSuite” w /etc/apache2/mods-available/ssl.conf.

  • od: SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
  • do: SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SSLv3:!SSLv2:!TLSv1

A teraz to działa dla mnie.

Nawiasem mówiąc, na zestawy szyfrów nie ma wpływu POODLE, tylko protokół - ale większość przeglądarek jest zgodna z wyłączonym pakietem szyfrów SSLv3.

Nie używaj tego do serwera pocztowego! Albo napotkasz (być może) problem z niemożnością pobrania wiadomości e-mail na niektórych urządzeniach.

BlueM00n
źródło
Dziękuję Ci. Ta odpowiedź działała w konfiguracji WHM / cPanel. Wypróbowałem inne metody sugerowane online, a Twoja była jedyną, która działała.
Voitek Zylinski
1
To działa, ale wyłączy dostęp w IE 10, ponieważ domyślnie używa SSLv3 i TLS1.0.
Erebus
4

Dla Ubuntu 10.04

Aby wyłączyć SSLv3 na wszystkich aktywnych vhostach, potrzebujesz tej opcji w

/etc/apache2/mods-available/ssl.conf:

SSLProtocol all -SSLv2 -SSLv3
Hubsidubsidu
źródło
2

Miałem podobny problem dziś rano i znalazłem inny wirtualny host obsługujący SSLv3, więc cały serwer odpowiada na połączenia SSLv3.

Upewnij się, że żaden z Twoich hostów nie ma aktywnego protokołu SSLv3.

terdon
źródło
1

Upewnij się, że SSLCipherSuite nie zawiera! SSLv3. W tym kontekście odnosi się również do TLS1.0 i TLS1.1.

Na przykład, jeśli twoja konfiguracja to SSLProtocol All , tylko TLS1.2 będzie dostępny z powodu konfiguracji SSLCipherSuite z! SSLv3.

zaraz
źródło
0

W przypadku użytkowników CentO, którzy mają problemy z edycją pliku konfiguracyjnego SSL przez SSH, spróbuj wyłączyć SSLv3 przez WHM :

Krok 1: Przejdź do edytora dołączania

-Zaloguj się do WHM -Otwórz ekran „Konfiguracja Apache” i kliknij „Dołącz edytor”

Krok 2: Edytuj dołączenia

- W „Pre Main Include” wybierz „All Versions”. W ten sposób twój serwer będzie chroniony, jeśli zmienisz swoją wersję Apache. Po wybraniu wprowadź następujące informacje w polu tekstowym:

W CentOS / RHEL 6.x:

SSLHonorCipherOrder On
SSLProtocol -All + TLSv1 + TLSv1.1 + TLSv1.2

W CentOS / RHEL 5.x:

SSLHonorCipherOrder On
SSLProtocol -All + TLSv1

… A następnie kliknij Aktualizuj .

Po kliknięciu aktualizacji pojawi się monit o ponowne uruchomienie Apache; zrób to w tej chwili.

oryginalne źródło: https://www.liquidweb.com/kb/how-to-disable-sslv3-and-protect-your-whmcpanel-server-from-poodle/

Isaias Valencia
źródło
1
Ta odpowiedź dotyczy serwerów kontrolowanych przez WHM / cPanel, a nie serwerów z systemem CentOS.
Bogdan Stăncescu
0

Metodą, której używasz, jest nowa wersja Apache i openssl. Możliwe, że nowa wersja nie została zainstalowana w systemie, sprawdź aktualną zainstalowaną wersję.

Ponieważ SSLv2i SSLv3oba są wrażliwe na niektóre ataki, lepiej byłoby używać tylko TLS. Więc zmodyfikuj plik conf Apache w następujący sposób,

SSLProtocol TLSv1 TLSv1.1 TLSv1.2

lub

SSLProtocol TLSv1
P4cK3tHuNt3R
źródło
Tak, też tego spróbowałem - bez radości. :-(
czy możesz wkleić dane wyjściowe polecenia „apachectl configtest”.
P4cK3tHuNt3R
0

Miałem podobny problem i sprawdziłem, czy wszystkie prawidłowe ustawienia apache są prawidłowe.

Jednak brakowało mi to, że miałem nginx jako odwrotne proxy przed apache. Zdarza się również, że używam Plesk, a to z ich przewodnika po poprawkach POODLE :

Jeśli korzystasz z Nginx, dołącz następujący wiersz do konfiguracji wśród innych dyrektyw SSL w /etc/nginx/nginx.conf:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
icc97
źródło