Как отключить SSlv2, SSLv3 и TLSv1 в Apache.

В продолжении темы о безопасности веэб-сервера Apache, а если быть точнее, то об усилении безопасности статьи Как защитить cookie в Apache.

SSLv2 подвержен атакам DROWN, POODLE и FREAK. SSLv3 подвержен атаке POODLE.

TLSv1 с использованием шифров в режиме CBC подвержен атаке POODLE.

Эти версии протокола SSL/TLS признаны слабыми и не рекомендуются к использованию.

Некоторые современные браузеры уже не открывают сайты, защищенные протоколами SSLv2 и SSLv3.

Отключаем SSlv2, SSLv3 и TLSv1 в Apache:

Протоколы SSL/TLS настраиваются с помощью директивы SSLProtocol.

Первым делом нужно отключить то, что было настроено раньше, используем PowerShell с правами администратора:

 $sr = <путь к ServerRoot апача>
$main_config = "$sr\conf\httpd.conf"
$text = Get-Content -Raw $main_config
$text = $text -Replace "((\n|\r\n)\s*SSLProtocol .*?\n)", "## `$1"
$text | Set-Content -Path $main_config
foreach ($a in findstr /i ^Include $main_config) {
$file = $a.Split(' ')[1].replace('/','\').replace('"','');
$text = get-Content -Raw $file;
$text = $text -Replace "((\n|\r\n)\s*SSLProtocol .*?\n)", "## `$1";
$text | Set-Content -Path $file; }

Далее добавляем директиву SSLProtocol TLSv1.1 TLSv1.2 на уровне сервера и в каждом виртуальном хосте, где требуется SSL/TLS. Найти все виртуальные хосты можно так:

Select-String "<VirtualHost" $main_config
foreach ($a in findstr /i ^Include $main_config) {
$file = $a.Split(' ')[1].replace('/','\').replace('"','');
Select-String "<VirtualHost" $file; } 
Продолжаем.
Отключаем SSLv2, SSLv3 и TLSv1 в Apache на Linux:
 sr=<путь к ServerRoot апача></div>
<div>main_config = "$sr/conf/httpd.conf"</div>
<div>ap_cf=</div>
<div>for e in `grep -i ^Include $main_config` ; do ap_cf=$ap_cf\ ` echo $e | grep -i -v Include` ; done</div>
<div>ap_cf=$main_config\ $ap_cf</div>
<div>read -ra apache_cfg_files <<< "$ap_cf"</div>
<div>for f in "${apache_cfg_files[@]}"; do sed -i 's;\(^\s*SSLProtocol \);##\1;g' $f; done 
Далее добавляем директиву SSLProtocol TLSv1.1 TLSv1.2 на уровне сервера и в каждом виртуальном хосте, где требуется SSL/TLS. Найти все виртуальные хосты можно так:
# egrep -in "^\s*<VirtualHost" $ap_cf</div>
<div>
Отключаем SSLv2, SSLv3 и TLSv1 в Tomcat на Linux:
В Tomcat SSL/TLS-протоколы настраиваются с помощью атрибута protocols (алиас sslEnabledProtocols) элемента Connector в главном server.xml. Поэтому ищем все коннекторы:
 # egrep -in "^\s*<Connector" <Catalina_home>/conf/server.xml 
И добавляем (или заменяем) атрибут sslEnabledProtocols=»TLSv1.2+TLSv1.1″ в тех коннекторах, для которых требуется защищенное соединение.
Отключаем SSLv2, SSLv3 и TLSv1 в Tomcat на Windows:
Все так же, как на Linux. Только коннекторы ищем так (PowerShell):
 # Select-String "^\s*<Connector" <Catalina_home>\conf\server.xml 
Потом для секурных устанавливаем атрибут sslEnabledProtocols=»TLSv1.2+TLSv1.1″.

Отключаем SSLv2, SSLv3 и TLSv1 в Nginx:

Добавляем (или изменяем) директиву ssl_protocols TLSv1.1 TLSv1.2; в блоках «server» и/или «http», где включен SSL/TLS.

Отключаем SSLv2 и SSLv3 в IIS:

Здесь мы не будем отключать TLSv1.0, потому что он необходим для некоторых продуктов Microsoft, в частности RDP.

 reg add "HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" /v Enabled /t REG_DWORD /d 0 /f
reg add "HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" /v DisabledByDefault /t REG_DWORD /d 1 /f
reg add "HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server" /v Enabled /t REG_DWORD /d 0 /f
reg add "HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server" /v DisabledByDefault /t REG_DWORD /d 1 /f
reg add "HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 0xFFFFFFFF /f
reg add "HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v DisabledByDefault /t REG_DWORD /d 0 /f
reg add "HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 0xFFFFFFFF /f
reg add "HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v DisabledByDefault /t REG_DWORD /d 0 /f
reg add "HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 0xFFFFFFFF /f
reg add "HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v DisabledByDefault /t REG_DWORD /d 0 /f 

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40