Назад | Перейти на главную страницу

AWS Network ACL / группы безопасности и доступ к RDS

Просто хочу прояснить несколько настроек новой настройки 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

Используйте это или любое другое бессмысленное значение для имени целевого хоста, чтобы проиллюстрировать, что это правда. Запрос пароля появляется сразу.