Довідкова інформація
SSL призначений для забезпечення рівня транспорту в Інтернеті. Для "Інтернету" акаунта HTTP ви знатимете це як HTTPS, але він також використовується для інших протоколів додатків. SSLv2 був першим широко використовуваним протоколом безпеки транспорту, але невдовзі він виявився небезпечним. Наследники SSLv3 та TLSv1 зараз широко підтримуються. TLSv1.1 і TLSv1.2 новіші та отримують велику підтримку. Більшість, якщо не всі веб-браузери, випущені з 2014 року, мають підтримку.
Нещодавнє відкриття інженерів Google вказує на те, що SSLv3 більше не слід використовувати (як, наприклад, SSLv2 давно застарів). Клієнти, які не зможуть підключитися до вашого сайту / послуги, ймовірно, дуже обмежені. CloudFlare оголосив, що менше 0,09% відвідувачів все ще покладаються на SSLv3.
Просте рішення: відключити SSLv3.
Чи надає Ubuntu яке-небудь оновлення?
Так, через usn-2385-1 з додаванням функції SCSV, але це не пом'якшує проблему повністю, оскільки вона не вимикає SSLv3 і патч буде працювати лише в тому випадку, якщо обидві сторони з'єднання були виправлені. Ви отримаєте його через регулярні оновлення безпеки у менеджері пакунків.
Отже, ви все-таки повинні самі вжити заходів, щоб відключити SSLv3 (це налаштовується). Майбутні версії клієнтів / браузерів відключать SSLv3 швидше за все. Наприклад, Firefox 34 зробить це.
Повністю вимкнення SSLv3 за умовчанням в Ubuntu на рівні впровадження, ймовірно, зламає деякі речі також для використання не HTTPS SSL, яке не так сильно вразливе, тому я припускаю, що технічне обслуговування цього не зробить, і буде застосовано лише цей патч SCSV.
Чому оновлення SCSV у OpenSSL через usn-2385-1 не пом'якшує проблему?
Дійсно, перестаньте задавати такі запитання та просто пропустіть кілька абзаців та відключіть SSLv3. Але ей, якщо ви не впевнені, ось вам:
POODLE показує, що SSLv3 з шифрами CBC порушено, реалізація SCSV цього не змінює. SCSV лише гарантує, що ви не переходите з деякого протоколу TLS до будь-якого нижчого протоколу TLS / SSL, як це потрібно, при атаці Man-in-the Middle, необхідній для звичайних випадків.
Якщо вам доведеться звертатися до якогось сервера, який взагалі не пропонує TLS, а лише SSLv3, то ваш браузер насправді не має вибору і повинен спілкуватися з сервером за допомогою SSLv3, який вразливий без будь-якої атаки пониження.
Якщо вам доведеться отримати доступ до якогось сервера, який пропонує також TLSv1 + і SSLv3 (який не рекомендується), і ви хочете бути впевненим, що ваше з’єднання не буде перенесено на SSLv3 зловмисником, тоді і сервер, і клієнт потребують цього патча SCSV.
Для повного пом'якшення проблеми достатньо відключити SSLv3, і ви можете бути впевнені, що вас не знизять. І ви не зможете розмовляти з серверами лише для SSLv3.
Гаразд, так як я відключу SSLv3?
Дивіться нижче в розділах, що стосуються додатків: Firefox, Chrome, Apache, Nginx та Postfix на даний момент охоплені.
Чи впливають лише сервери чи клієнти?
Уразливість існує, якщо і сервер, і клієнт приймає SSLv3 (навіть якщо обидва здатні до TLSv1 / TLSv1.1 / TLS1.2 через атаку пониження).
Як адміністратор сервера, ви повинні відключити SSLv3 зараз для безпеки своїх користувачів.
Як користувач, ви повинні відключити SSLv3 у своєму браузері зараз, щоб убезпечити себе під час відвідування веб-сайтів, які все ще підтримують SSLv3.
Це OpenSSL / GnuTLS / браузер?
Ні. Це помилка протоколу (дизайну), а не помилка реалізації. Це означає, що ви дійсно не можете її виправити (якщо тільки ви не змінили дизайн старого SSLv3).
І так, є новий випуск безпеки OpenSSL , але читайте нижче ( Але мені дуже потрібна підтримка SSLv3 ... з причини X, Y, Z! ) Про те, чому вам краще зосередитись на відключенні SSLv3 взагалі.
Чи можу я вбити SSLv3 на рівні мережі (брандмауера)?
Ну так, певно. Я розміщую це в окремому дописі блогу для подальших думок та роботи. У нас може бути якесь магічне iptables
правило, яке ви можете використовувати!
Мій пост у блозі: Як зняти SSLv3 у вашій мережі за допомогою iptables для POODLE?
Це стосується лише HTTPS або також для IMAP / SMTP / OpenVPN та інших протоколів із підтримкою SSL?
Поточний вектор атаки, як показали дослідники, працює з керуванням відкритим текстом, відправленим на сервер, за допомогою Javascript, що працює на машині жертви. Цей вектор не застосовується до сценаріїв, що не належать до HTTPS, без використання браузера.
Крім того, звичайно клієнт SSL не дозволяє сеансу бути зниженим до SSLv3 (маючи TLSv1 +, що бачиться в можливостях рукостискання), але браузери хочуть бути дуже сумісними назад, і це роблять. Поєднання з контролем простого тексту та конкретним способом побудови заголовка HTTP робить його корисним.
Висновок: відключіть SSLv3 для HTTPS зараз , відключіть SSLv3 для інших служб у наступному вікні служби.
Який вплив? Чи потрібно відкликати та відновити сертифікат сервера? (Як і у Heartbleed)
Ні, для цього вам не потрібно обертати свої сертифікати. Уразливість виявляє відновлення прямого тексту з даних сеансу, не забезпечує доступ до будь-яких секретів (ні до сеансового ключа, ні до ключа сертифікату).
Зловмисник, швидше за все, здатний викрасти заголовки простого тексту, як-от сеансові файли cookie, щоб здійснити викрадення сеансу . Додатковим обмеженням є необхідність повної (активної) атаки MitM .
Чи можу я щось зробити, щоб загалом поліпшити конфігурацію SSL?
Як користувач, окрім відключення SSLv3 у вашому браузері, не дуже. Ну, просто завжди встановлюйте останні оновлення безпеки.
Для серверів дотримуйтесь посібника з сервера TLS Mozilla . І тестуйте за допомогою тесту SSL Labs Qualys . Дійсно не так складно отримати рейтинг A + на своєму сайті. Просто оновіть ваші пакунки та виконайте рекомендації з посібника Mozilla.
Але мені дуже потрібна підтримка SSLv3 ... з причини X, Y, Z! А тепер що?
Що ж, є виправлення, яке обходить атаку зниженого рівня TLSv1-клієнтів, звану SSLv3 Fallback Protection. Це, до речі, також покращить безпеку TLSv1 + (атака з пониженням важче / неможлива). Він пропонується як підкріплення з більш нової версії OpenSSL в довідці з безпеки Ubuntu usn-2385-1 .
Великий улов: І клієнтам, і серверам потрібен цей патч для роботи. Отже, на мою думку, оновлюючи і клієнтів, і серверів, ви все одно повинні просто оновити до TLSv1 +.
Однак, будь ласка, будь ласка, просто вийміть SSLv3 у вашій мережі зараз. Докладіть зусиль для вдосконалення стандартів безпеки та просто вирийте SSLv3.
Я чув про підтримку SCSV для усунення атаки пониження протоколу. Мені це потрібно?
Тільки якщо вам дійсно потрібен SSLv3 з якоїсь дивної причини, але це також покращує безпеку в TLSv1 +, так що так, я рекомендую вам встановити його. Ubuntu надає оновлення цієї функції в usn-2385-1 . Ви отримаєте його через регулярні оновлення безпеки у менеджері пакунків.
Тестування вразливості для приватно розміщених сайтів (наприклад, інтранет / офлайн).
Ваші сервери вразливі просто, якщо вони підтримують SSLv3. Тут є кілька варіантів:
З OpenSSL s_client:
openssl s_client -connect <server>:<port> -ssl3
Якщо з'єднання вдається, sslv3 увімкнено. Якщо вона не працює, її відключають. Коли це не вдається, ви повинні побачити щось на кшталт:
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Використання nmap
:
nmap --script ssl-enum-ciphers -p 443 myhostname.tld
Він повинен виводити ' SSLv3: No supported ciphers found
'. Налаштування імені хоста / порту.
Використання шифрів . Клоніруйте / завантажте двійковий файл та виконайте його:
./cipherscan myhostname.tld
Він не повинен нічого перераховувати з SSLv3 у стовпці "протоколи".
Браузер Firefox
Відкрийте about:config
, знайдіть security.tls.version.min
і встановіть значення 1
. Потім перезапустіть веб-переглядач, щоб перервати будь-які відкриті з’єднання SSL.
Firefox від версії 34 і далі вимкне SSLv3 за замовчуванням і, таким чином, не вимагає ніяких дій ( джерело ). Однак на момент написання запису 33 щойно звільнено, 34 - на 25 листопада.
Google Chrome (Linux)
Відредагуйте /usr/share/applications/google-chrome.desktop
файл, наприклад
sudo nano /usr/share/applications/google-chrome.desktop
Відредагуйте всі рядки, починаючи з Exec=
включення --ssl-version-min=tls1
.
Наприклад, такий рядок
Exec=/usr/bin/google-chrome-stable %U
стає
Exec=/usr/bin/google-chrome-stable --ssl-version-min=tls1 %U
Потім переконайтесь, що повністю закрийте веб-переглядач (програми Chrome можуть підтримувати ваш браузер активним у фоновому режимі!).
Примітка. Можливо, вам потрібно буде повторити це оновлення кожного пакета google-chrome, замінивши цей .desktop
файл запуску. Веб-переглядач Google Chrome або Chromium із відключеною SSLv3 ще не оголошено під час написання.
Сервер Apache HTTPD
Якщо ви використовуєте веб-сервер Apache, який наразі дозволяє SSLv3, вам потрібно буде відредагувати конфігурацію Apache. У системах Debian і Ubuntu файл є /etc/apache2/mods-available/ssl.conf . У CentOS та Fedora файл знаходиться /etc/httpd/conf.d/ssl.conf . Вам потрібно буде додати наступний рядок до конфігурації Apache з іншими директивами SSL.
SSLProtocol All -SSLv2 -SSLv3
Це дозволить всі протоколи, крім SSLv2 та SSLv3.
Поки ви перебуваєте на цьому, ви можете розглянути можливість поліпшення конфігурації шифрів для свого веб-сервера, як це пояснено в посібнику з сервера TLS для Mozilla . Додати для прикладу:
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
SSLCompression off
# Read up on HSTS before you enable it (recommended)
# Header add Strict-Transport-Security "max-age=15768000"
Потім перевірте, чи правильно налаштована нова конфігурація (відсутність помилок друку тощо):
sudo apache2ctl configtest
І перезавантажте сервер, наприклад
sudo service apache2 restart
На CentOS та Fedora:
systemctl restart httpd
Більше інформації: Документація Apache
Тепер протестуйте його: Якщо ваш сайт загальнодоступний, протестуйте його за допомогою інструменту SSL Labs Qualys .
Сервер Nginx
Якщо ви використовуєте Nginx, просто включіть у конфігурацію наступний рядок серед інших директив SSL:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Поки ви перебуваєте на цьому, ви можете розглянути можливість поліпшення конфігурації шифрів для свого веб-сервера, як це пояснено в посібнику з сервера TLS для Mozilla . Додати для прикладу:
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
# Read up on HSTS before you enable it (recommended)
# add_header Strict-Transport-Security max-age=15768000;
І перезавантажте сервер, наприклад
sudo service nginx restart
Довідка: Документація Nginx
Тепер протестуйте: Якщо ваш сайт загальнодоступний, доступний, протестуйте його за допомогою інструменту SSL Labs Qualys .
Веб-сервер Lighttpd
Версії Lighttpd> 1.4.28 підтримують параметр конфігурації для відключення SSLv2 та v3. Випуски Lighttpd до 1.4.28 дозволяють вимкнути SSLv2 ТІЛЬКИ. Зауважте, що Ubuntu 12.04 LTS та більш рання програма встановлюється в кращому випадку lighttpd v1.4.28, і тому для цих дистрибутивів недоступне просте виправлення. Тому це виправлення слід використовувати лише для версій Ubuntu, які перевищують 12.04.
Для Ubuntu версії 12.04 або Debian 6 оновлений пакет lighttpd доступний із сховища openSUSE:
http://download.opensuse.org/repositories/server:/http/Debian_6.0
Пакет призначений для Debian 6 (вичавити), але працює також на 12.04 (точно)
Відредагуйте свій текст, /etc/lighttpd/lighttpd.conf
щоб додати наступні рядки після ssl.engine = "enable"
директиви
ssl.use-sslv2 = "disable"
ssl.use-sslv3 = "disable"
Потім слід перезапустити послугу lighttpd з a sudo service lighttpd restart
і виконати тест рукостискання ssl3, як описано в попередніх розділах, щоб переконатися, що зміна була успішно здійснена.
Взято з http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_SSL .
Postfix SMTP
Для "опортуністичного SSL" (політика шифрування не застосовується і звичайна також є прийнятною) вам нічого не потрібно змінювати. Навіть SSLv2 краще, ніж звичайний, тому якщо вам потрібно захистити свій сервер, ви все одно повинні використовувати режим "обов'язковий SSL".
У режимі "обов'язковий SSL" вже налаштований, просто додайте / змініть параметр smtpd_tls_mandatory_protocols для вхідних з'єднань та smtp_tls_mandatory_protocols для вихідних з'єднань:
smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3
smtp_tls_mandatory_protocols=!SSLv2,!SSLv3
За бажанням, якщо ви хочете також відключити SSLv3 для опортуністичного шифрування (навіть якщо це непотрібно, як пояснено вище), зробіть це таким чином:
smtpd_tls_protocols=!SSLv2,!SSLv3
smtp_tls_protocols=!SSLv2,!SSLv3
та перезапустіть Postfix:
sudo service postfix restart
Sendmail
(Непідтверджене редагування анонімним користувачем, мені не комфортно Sendmail, будь ласка, підтвердьте.)
Ці параметри налаштовані у LOCAL_CONFIG
розділі вашогоsendmail.mc
LOCAL_CONFIG
O CipherList=HIGH
O ServerSSLOptions=+SSL_OP_NO_SSLv2 +SSL_OP_NO_SSLv3 +SSL_OP_CIPHER_SERVER_PREFERENCE
O ClientSSLOptions=+SSL_OP_NO_SSLv2 +SSL_OP_NO_SSLv3
Голубець
У Dovecot v2.1 + додайте наступне до свого /etc/dovecot/local.conf
(або нового файлу в /etc/dovecot/conf.d
):
ssl_protocols = !SSLv2 !SSLv3
та перезапустіть Dovecot:
sudo service dovecot restart
Для старих версій вам доведеться виправити вихідний код .
Courier-imap (imapd-ssl)
Courier-imap дозволяє замовчувати SSLv3 на Ubuntu 12.04 та інших. Вам слід відключити його і використовувати STARTTLS замість цього, щоб примусити TLS. Відредагуйте /etc/courier/imapd-ssl
файл конфігурації, щоб відобразити наступні зміни
IMAPDSSLSTART=NO
IMAPDSTARTTLS=YES
IMAP_TLS_REQUIRED=1
TLS_PROTOCOL=TLS1
TLS_STARTTLS_PROTOCOL=TLS1
TLS_CIPHER_LIST="<take those from the Mozilla TLS Server guide!>"
HAProxy Server
SSL підтримується в HAProxy> = 1.5.
Відредагуйте /etc/haproxy.cfg
файл і знайдіть bind
рядок. Додавати no-sslv3
. Наприклад:
bind :443 ssl crt <crt> ciphers <ciphers> no-sslv3
Довідка: Документація HAProxy
OpenVPN
Здається, що це не стосується ( джерело ).
OpenVPN використовує TLSv1.0 або (з> = 2.3.3), необов'язково TLSv1.2, і таким чином POODLE не впливає.
Лялечка
Лялька використовує SSL через HTTPS, але він не використовується клієнтами 'браузера', просто маріонеткові агенти, які не вразливі до показаного вектора атаки. Однак найкраща практика просто відключити SSLv3.
Моя рекомендація - використовувати модуль ляльок stephenrjohnson / puppetmodule, щоб встановити свого лялечного майстра, в якому я вбив SSLv3 деякий час тому.