Безопасно ли разрешить входящий 0.0.0.0/0 в безопасности EC2 group?

Я создал экземпляр EC2 на AWS, и мне была назначена "группа безопасности" по умолчанию. Я понимаю, что это действует как виртуальный брандмауэр для моего сервера.

У меня была проблема при подключении к этому экземпляру EC2 с помощью SSH, и оказалось, что проблема заключалась не в установке для параметра «Источник» значения 0.0.0.0/0 в группе безопасности «Правила для входящих подключений», как показано на изображении ниже.

Безопасно ли хранить это в таком виде или следует ограничить источник IP-адресом моей домашней сети?

Никто не может использовать ssh в моем экземпляре EC2 без файла * .pem, верно?

Security Group Inbound Rules

6
задан 9 August 2020 в 12:20
4 ответа

Безопасность подобна луку - все дело в слоях, вонючих людских слоях.

Разрешив соединения SSH отовсюду, вы удалили один уровень защиты и теперь зависите исключительно от ключ SSH, который в настоящее время считается безопасным, но в будущем может быть обнаружен недостаток, уменьшающий или удаляющий этот слой.

А когда больше нет слоев, у вас ничего не остается.

Быстро слой - установить fail2ban или аналогичный. Эти демоны отслеживают ваш файл auth.log, и в случае сбоя соединения SSH их IP-адреса на время добавляются в цепочку iptables . Это уменьшает количество попыток подключения клиентом каждый час / день. Я заканчиваю занесение в черный список плохих источников на неопределенный срок - но хосты, которые должны отключать SSH, беспорядочно прослушивая, все равно могут получать 3000 неудачных попыток входа в систему root в день. Большинство из них из Китая, за которыми следуют Восточная Европа и Россия.

Если у вас есть статические исходные IP-адреса, то включение их в политику группы безопасности - это хорошо, и это означает, что остальной мир не может подключиться. Обратной стороной является то, что если вы по какой-то причине не можете зайти с авторизованного IP-адреса, например, ваш интернет-провайдер работает динамически или ваш канал не работает?

Разумным решением является запуск VPN-сервера на вашем экземпляре, который прослушивает все исходные IP-адреса, а затем, когда туннель открыт, подключитесь через туннель через SSH. Конечно, это не идеальная защита, но это еще один слой в вашем щите абляционной брони ... OpenVPN - хороший кандидат,

Вы также можете использовать решение AWS «Client VPN», которое является управляемым OpenVPN предоставляет доступ к вашему VPC. Никакого личного опыта в этом нет.

Другие (по общему признанию тонкие) уровни предназначены для переноса SSH на другой порт. На самом деле это не делает ничего, кроме уменьшения количества зондов script-kiddy, которые по умолчанию используют порт 22 / tcp. Любой, кто изо всех сил старается, просканирует все порты и найдет ваш SSH-сервер на 2222 / tcp или 31337 / tcp или где-то еще.

Если возможно, вы можете исследовать только IPv6 ssh, опять же, это просто ограничивает уязвимость, не добавляя никакой реальной безопасности. Количество незапрошенных SSH-подключений на IPv6 в настоящее время намного меньше, чем в IPv4, но все еще ненулевое.

7
ответ дан 4 January 2021 в 07:22

Если бы программное обеспечение было идеальным, вы могли бы оставить свой сервер полностью открытым для Интернета, как и у вас, но на практике есть ошибки и другие способы взломать сервер.

Лучшая практика - открыть определенные порты только на минимальный IP-адрес для достижения ваших целей. Например:

  • Откройте порт 22 (SSH) только для IP-адресов, которым он необходим, например для домашнего или рабочего IP-адреса.
  • Откройте порты 80 и 443 для всего мира, если вы хотите обслуживать веб-трафик. Однако, если вам нужна дополнительная защита, вы можете использовать CDN / WAF, например CloudFront / CloudFlare (у которых есть бесплатный уровень), и открывать только 443/80 для IP-адресов CloudFlare.
  • Открывайте порты базы данных для определенных IP-адресов только в случае необходимости. Если вы это сделаете, ваша база данных должна быть сконфигурирована для приема этих подключений, которых RDS не является по умолчанию

. Вы склонны открывать другие порты только в случае крайней необходимости и с минимальным количеством IP-адресов, которое позволит достичь того, что вам нужно.

5
ответ дан 4 January 2021 в 07:22

Чем более строгими вы можете быть в своих правилах, тем лучше.

Стоит отметить, что некоторые домашние интернет-провайдеры будут использовать динамические адреса, если в какой-то момент вы не сможете подключиться к своему экземпляру сначала проверьте это.

2
ответ дан 4 January 2021 в 07:22

Безопасность работает не двоично. Ваши экземпляры никогда не бывают «безопасными».

Существуют сотни / тысячи векторов атак, и вы принимаете рентабельные решения для защиты от некоторых из этих векторов. Полная защита от всех из них непомерно дорога.

В вашей ситуации ваша система может иметь уязвимость в любой службе / приложении, которая прослушивает сетевой интерфейс, например, вызывая утечку данных.

У вас есть уязвимость. открыл все порты TCP и UDP. Достаточно иметь TCP / 22, если вы хотите использовать этот * .pem и любой другой порт, который вам нужен.

Даже OpenSSH может иметь уязвимость. Следовательно, да, лучше иметь только диапазон IP-адресов вашей домашней сети.

10
ответ дан 4 January 2021 в 07:22

Теги

Похожие вопросы