Перед запуском проверяют группу безопасности продакшена — найдите и закройте риск.
Перед запуском вам передали набор правил группы безопасности для сервера приложения. Публичными должны быть только HTTP и HTTPS. Административный доступ идёт через бастион в отдельной подсети, база данных живёт в приватной подсети, а исходящий трафик по политике компании должен быть ограничен.
ingress:
- { port: 22, source: 0.0.0.0/0, note: "ssh for the ops team" }
- { port: 3389, source: 0.0.0.0/0, note: "rdp, windows build agent" }
- { port: 5432, source: 0.0.0.0/0, note: "postgres, used by reports" }
- { port: 80, source: 0.0.0.0/0 }
- { port: 443, source: 0.0.0.0/0 }
egress:
- { port: all, destination: 0.0.0.0/0 }
Найдите опасные правила и предложите исправленный набор.
Три правила смотрят в весь интернет, хотя не должны: управляющие порты 22 и 3389, а также база на 5432. Ограничьте административный доступ подсетью бастиона, к базе пустите только группу безопасности приложения, оставьте публичными 80 и 443, а открытый выход замените на default-deny.
- ✗Считать нестандартный порт защитой для сервиса, смотрящего в интернет
- ✗Оставлять управляющие порты публичными из-за сильных паролей
- ✗Игнорировать неограниченный выход как будто он не несёт риска
- →Чем группа безопасности как источник правила лучше диапазона адресов?
- →Что должен разрешать default-deny на выходе, чтобы хост продолжил работать?
Опасны три правила: 22 и 3389 дают доступ к управлению из всего интернета, а 5432 выставляет базу наружу. Нестандартный порт тут не защита — источник правила и есть контроль. Открытый выход довершает картину: скомпрометированный хост сможет обратиться куда угодно.
Административный доступ ограничиваем подсетью бастиона, базу отдаём только группе безопасности приложения, публичными оставляем лишь 80 и 443, а выход переводим в режим default-deny с точечными разрешениями.
ingress:
- { port: 22, source: sg-bastion, note: "admin via bastion only" }
- { port: 5432, source: sg-app, note: "db reachable from app tier only" }
- { port: 80, source: 0.0.0.0/0 }
- { port: 443, source: 0.0.0.0/0 }
egress:
- { port: 443, destination: sg-db-endpoint }
- { port: 443, destination: proxy-allowlist }
Правило 3389 удалено: сборочный агент Windows не относится к этому серверу и должен жить в своей группе. Каждое отклонённое правило стоит журналировать — попытка выхода за пределы разрешённого становится сигналом детекта.