Просто хочу прояснить несколько настроек новой настройки Amazon, которую я создаю. Я следовал ряду руководств, и все, похоже, работает и безопасно, я был бы очень признателен, если бы кто-то, кто немного больше разбирается в безопасности, мог бы быстро просмотреть это.
Я нацелен на доступ по протоколам HTTP и HTTPS к экземплярам EC2 и доступ по SSH только к определенным экземплярам EC2, которые будут ограничены IP.
Сетевые ACL настроены для доступа только к SSH, HTTP (S).
Inbound:
SSH - Source 0.0.0.0/0 - Allow
HTTP - Source 0.0.0.0/0 - Allow
HTTPS - Source 0.0.0.0/0 - Allow
ALL - Source 0.0.0.0/0 - Deny
Outbound:
ALL - Destination 0.0.0.0/0 - Allow
Группа безопасности «HTTP» применяется ко всем веб-серверам и административным серверам EC2.
Inbound
HTTP - Source 0.0.0.0/0
HTTPS - Source 0.0.0.0/0
Outbound
ALL - Destination 0.0.0.0/0
Группа безопасности SSH, примененная к серверу администрирования EC2.
Inbound
SSH - Source MYIP/32
Outbound
ALL - Destination 0.0.0.0/0
Группа безопасности «DB» применяется к RDS с отключенной общедоступной доступностью.
Inbound
MySQL - Source 174.20.0.0/20 (VPC CIDR)
Outbound
ALL - Destination 0.0.0.0/0
Если мне когда-нибудь понадобится прямой доступ к MySQL, я могу создать туннель SSH через административный сервер EC2. Работает отлично.
Учитывая приведенную выше конфигурацию, я должен иметь доступ к моей настройке только через порты 22, 80 и 443. Почему, если я сделаю следующее на своем локальном компьютере:
mysql -h db-instance.abcdef12345.eu-west-1.rds.amazonaws.com -unicksuser -p
Он подключается и запрашивает пароль?
На самом деле я не могу получить доступ к серверу с правильными данными, имейте в виду, просто кажется, что он не должен быть доступен и даже не запрашивать пароль.
mysql -p
дает ответ, который изначально не является действительным тестом для подтверждения IP-соединения с сервером.
Протокол клиент / сервер MySQL использует модель «запрос / ответ», поэтому пароль никогда не отправляется на сервер, а запрос не поступает с сервера.
Вместо этого клиент запрашивает пароль локально перед подключением к серверу, и фактически он запрашивает вас еще до проверки существования сервера.
$ mysql -p -h lol.psych.example.com
Используйте это или любое другое бессмысленное значение для имени целевого хоста, чтобы проиллюстрировать, что это правда. Запрос пароля появляется сразу.