Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ssl_prefer_server_ciphers
On 09.09.2013 13:06, Anton Yuzhaninov wrote:
потому что при ssl_prefer_server_ciphers off;
nginx подвержен влиянию BEAST-атаки CVE-2011-3389.
Без очень тщательного выбора того что и каком порядке указывать в
ssl_ciphers это делать смысла мало.
А что писать в ssl_ciphers вопрос не очень простой.
На первом месте логично поставить AES-GCM, но он пока не поддерживается
большинством браузеров. Да и на сервере для его нужен openssl 1.0.1 а во
многих дистрибутивах используются более старые версии.
ясно. а нельзя сделать так, чтобы если openssl версии 1.0.1,
то по-умолчанию в ssl_ciphers на первом месте стоял AES-GCM,
а если openssl более ранней версии, тогда лучшее из возможного:
ssl_ciphers RC4:HIGH:!aNULL:!MD5:!kEDH;
а если директива ssl_ciphers будет игнорировать AES-GCM,
если он есть в строке, но openssl его не поддерживает -
то и вообще одной дефолтовой строкой тогда можно обойтись.
плюс варнинг в логах, тогда пользователь подумает о том,
что может быть ему имеет смысл обновить openssl для nginx.
и тогда nginx будет "secure by default" настолько,
насколько это возможно и это будет гораздо лучше,
чем теперешний более уязвимый дефолт:
ssl_ciphers HIGH:!aNULL:!MD5;
Из того, что поддерживается широко:
AES-CBC - подвержен BEAST
RC4 в теории тоже уязвим: http://www.isg.rhul.ac.uk/tls/ (хотя сильно
опасаться этого пока не стоит).
в интернетах пишут про RC4, что "Пока что в реальных условиях атака
трудно воспроизводима, но может проводиться крупными организациями"
так что на сегодня RC4 является более предпочтительным, чем AES-CBC
AES-CBC входит в группу HIGH, так что поменяв
ssl_ciphers HIGH:!aNULL:!MD5;
на
ssl_ciphers RC4:HIGH:!aNULL:!MD5:!kEDH;
мы просто скажем клиенту, что cipher RC4 является более предпочтительным
и если какой-то браузер умеет AES-CBC и не умеет RC4 - он будет работать
насколько я понимаю логику работы директивы ssl_prefer_server_ciphers
при ssl_prefer_server_ciphers on: будет выбран наилучший cipher из тех,
что предпочитает сервер и поддерживает клиент. т.е. будет выбран:
(1)AES-GCM или (2)RC4 или любой другой из (3)HIGH (AES-CBC и т.п.)
И еще возможно бывают клиенты со старыми браузерами, которые не
поддерживают ни AES и RC4 (таких наверно мало).
может быть имеет смысл в документации к nginx написать рекомендацию,
чтобы пользователи после настройки ssl проверили свой сайт на предмет
уязвимостей на сайте https://www.ssllabs.com/ssltest/ ?
и почитали SSL/TLS Deployment Best Practices https://www.ssllabs.com/
подозреваю, что многие пользователи считают, что nginx имеет дефолтовые
значения параметров такие, что он будет "secure by default" и они даже
не догадываются про все эти уязвимости и нюансы в настройке ssl в nginx.
--
Best regards,
Gena
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|