Какие порты открыть в группе безопасности aws для aws?
Я создаю бэкэнд для пошаговой игры. Мой опыт в основном со стеком ламп; Я баловался в nginx на стороне проекта.
Я только что прочитал Scaling PHP Applications Стивена Короны из Twit Pic. Он рекомендует сервер nginx через apache. Он говорит, что на его машине с Ubuntu открыто 32768-61000 портов.
На AWS мне нужно изменить свою безопасность на группу, чтобы разрешить доступ к этим портам? Как мне убедиться, что nginx использует все преимущества этой конфигурации?
Обновить:
Я ожидаю, что большинство моих запросов будут на порту 443, и поэтому я был озадачен его рекомендацией открыть больше портов.
Это рекомендация, которую он делает
net.ipv4.ip_local_port_range
ip_local_port_range определяет диапазон используемых портов в вашей системе. На моей стандартной установке Ubuntu установлено значение 32768-61000. Увеличьте диапазон, чтобы учесть больше соединений. Количество доступных портов ограничивает количество одновременно открытых соединений. Помните, что даже после того, как соединение закрыто, оно все еще ест порт в состоянии TIME_WAIT (хотя мы уменьшаем это с некоторыми настройками ниже).
sysctl-wnet.ipv4.ip_local_port_range="10000 65535"
vi /etc/sysctl.d/haproxy-tuning.conf
net.ipv4.ip_local_port_range=10000 65535
2 ответа
На AWS мне нужно изменить свою безопасность на группу, чтобы разрешить доступ к этим портам?
Для входящих подключений да. Для соединений, инициированных вашим сервером, нет.
По умолчанию все исходящие порты открыты, а все входящие порты (кроме SSH) закрыты.
Входящие соединения - это те, которые инициируются программным обеспечением, которое находится за пределами вашей коробки. Исходящие соединения - это те, которые инициируются программным обеспечением, которое находится внутри вашего устройства, таким как ядро Linux или NGINX в вашем экземпляре.
Как мне убедиться, что nginx использует все преимущества этой конфигурации?
Когда вы определяете ip_local_port_range, этот параметр определяет порты для исходящих соединений с вашего сервера. Вы не хотели бы открывать эти порты (или любые другие порты, которые вам не нужны) для входящих соединений в группе безопасности AWS. Однако вам необходимо открыть все порты, на которых NGINX должен прослушивать входящие запросы (обычно это стандартные порты HTTP/HTTPS, выбранные вручную, но определенно не в диапазоне портов).
Кроме того, вы должны запускать свои серверы в VPC ("EC2 VPC" в отличие от "EC2 classic"). Если вы используете свой сервер в "EC2 classic", вполне возможно, что какой-то другой пользователь во внутренней сети AWS сможет успешно сканировать порт вашего устройства, если он окажется в одной подсети. Это незаконно в AWS и закроет учетные записи пользователей. По этой же причине, если вам нужно запустить сканирование портов, тестирование на проникновение вообще или что-либо, даже отдаленно напоминающее сканирование уязвимостей, в вашей собственной инфраструктуре AWS, вам абсолютно необходимо запросить разрешение Amazon или вы навлечь на себя большие неприятности. Вы можете получить авторизацию для сканирования уязвимостей здесь: https://aws.amazon.com/security/penetration-testing/
Если вам нужно открыть порты для своего приложения, вы можете указать порт (или диапазон портов) в группе безопасности AWS.
Создайте новое правило с желаемым диапазоном, например, согласно вашему примеру 32768-61000.
Что касается вопроса о том, нужны ли вам все эти порты, то все сводится к тому, как вы разрабатываете свое приложение. Я подозреваю, что если вы пойдете по пути многих небольших EC2 за балансировщиком нагрузки (обычная настройка для масштабируемых решений), тогда совет относительно большого количества открытых портов может не сработать.
Распределители нагрузки AWS могут обрабатывать большое количество трафика и не требуют много открытых портов.