- PVSM.RU - https://www.pvsm.ru -

Распределенные атаки типа DDoS весьма популярны. Зачастую для защиты от них используются сервисы вроде Cloudflare, позволяющие «поглотить» поток вредного трафика. Но даже применение дополнительных механизмов защиты в них (например, режима «I'm Under Attack» в сочетании с белым списком для упомянутого сервиса) не поможет, когда вы допустили неосторожность и, сами того не заметив, раскрыли всему миру свой IP-адрес. О случае из жизни и о том, как не допустить подобного (и, соответственно, ненужных DDoS-атак), — читайте под катом.
В качестве стартовой точки для поиска проблем в безопасности вашей инфраструктуры можно воспользоваться доступными для всех сервисами.
Вот несколько известных систем, помогающих найти уязвимые или неправильно настроенные устройства:
Одним из них — Censys — мы воспользовались в реальной ситуации, речь о которой и пойдет далее.
Инфраструктура проекта выглядела следующим образом:
test.com;1.test.com, 2.test.com, *.test.com.
В чем же проблема? При сканировании IP-адресов по 443-му порту nginx отвечает сертификатом (в нем фигурирует домен test.com). Сопоставление домена с IP-адресом балансировщика приводит к возможности DDoS-атаки.
Например, наш домен (test.com) использует серверы GCORE. Просто введя эти данные в поисковую строку одного из известных сканеров, мы получим сопоставление IP-адресов с доменами из сертификата. Но ведь эти адреса должны быть скрыты из публичного доступа!
Иллюстрация на Censys [6]:

Как видно из скриншота выше, IP-адрес сервера был получен путем сопоставления публичного IP адреса и домена из сертификата, которым «ответил» nginx. Любой злоумышленник сможет найти его таким образом и воспользоваться в своих целях.
В нашем случае помогло создание самоподписанного сертификата для default_server с доменом example.com. В конфиг nginx на балансировщике добавляется:
server {
listen 443 default_server ssl http2;
ssl_certificate /etc/nginx/ssl/examplecom/tls.crt;
ssl_certificate_key /etc/nginx/ssl/examplecom/tls.key;
}
После этого при новых сканированиях IP-адреса nginx будет отдавать сертификат, в котором не будет упоминания реального домена (test.com). Вместо него покажется example.com, так что злоумышленник не сможет сопоставить домен с IP-адресом балансировщика.
Вместе с этим, конечно, потребуется заменить уже «засвеченный» IP-адрес сервера на новый.
Если посмотреть на описанную проблему более глобально, то вот список рекомендаций, на которые стоит обратить внимание, если вы хотите предотвратить возникновение подобных ситуаций:
youshallnotpass.com (как вариант — youshallnotpass.com).

Таким образом, вы не будете проиндексированы сканерами, которые получают доступ к IP-адресам, и это усложнит задачу для злоумышленников, ищущих реальный адрес веб-сервиса.
В качестве иллюстрации посмотрите, какие данные выведет поисковик crt.sh [10] для домена example.com:

Можно не только увидеть, когда обновлялся сертификат, но и посмотреть содержимое всех предыдущих.
SSL/TLS — основа безопасного интернета. В контексте защиты веб-сервисов он необходим не только для очевидных операций вроде обработки данных кредитных карт: он в целом обеспечивает конфиденциальность, критическую безопасность и целостность данных и для самих сайтов, и для личной информации их посетителей.
Есть множество сервисов, которые обеспечивают сайтам дополнительную защиту, отбивая DDoS-атаки на них, помогая с сертификатами и т.п., однако все эти механизмы не помогут, если вы что-то упустили и изначально неправильно настроили инфраструктуру. Проверку потенциальных проблем в безопасности можно начать с помощью сканеров, упомянутых в начале статьи.
Читайте также в нашем блоге:
Автор: Юлия Шарафитдинова
Источник [15]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/dns-2/353879
Ссылки в тексте:
[1] Shodan: https://www.shodan.io/
[2] Censys.io: https://censys.io/
[3] CloudFail: https://github.com/m0rtem/CloudFail
[4] SecurityTrails: https://securitytrails.com/
[5] Project Sonar: https://www.rapid7.com/research/project-sonar/
[6] Censys: https://censys.io/ipv4?q=%28test.com%29+AND+autonomous_system.description.raw%3A+%22GCORE%22
[7] для nginx: https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens
[8] для Apache: https://httpd.apache.org/docs/2.4/mod/core.html#servertokens
[9] Certificate Transparency: https://www.certificate-transparency.org/
[10] crt.sh: https://crt.sh/
[11] SSL-сертификаты от Let's Encrypt с cert-manager в Kubernetes: https://habr.com/ru/company/flant/blog/496936/
[12] 11 способов (не) стать жертвой взлома в Kubernetes: https://habr.com/ru/company/flant/blog/417905/
[13] Из жизни с Kubernetes: Как HTTP-сервер испанцев не жаловал: https://habr.com/ru/company/flant/blog/448420/
[14] Успех социального эксперимента с поддельным эксплойтом для nginx: https://habr.com/ru/company/flant/blog/454700/
[15] Источник: https://habr.com/ru/post/506016/?utm_source=habrahabr&utm_medium=rss&utm_campaign=506016
Нажмите здесь для печати.