Я размещаю сайт по умолчанию для сервера Apache2 на AWS EC2 (Ubuntu) с эластичным IP.
Группа безопасности настроена на открытие всех входящих соединений (в целях тестирования).
Я могу получить доступ к серверу по SSH, используя публичный IP, но не могу по HTTP.
Я могу просматривать сайт с локального хоста (используя lynx 127.0.0.1
).
Я также могу просматривать сайт с другого EC2 в той же подсети.
Вот мой iptables:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
открытые порты:
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 511 *:80 *:*
tcp LISTEN 0 128 [::]:22 [::]:*
tcp LISTEN 0 511 *:443 *:*
Брандмауэры неактивны.
Я также только что попытался установить nginx на вторую виртуальную машину, которую я развернул в той же подсети, и, как ни странно, я также не могу получить доступ к веб-серверу через порт 80.
Так что теперь я также создал новый экземпляр в отдельной подсети и все еще не могу добраться до него по HTTP. Хотя он доступен по SSH.
Не уверен, что я что-то упускаю.
Обновление 1:
Это крайне странно, у меня также запущен MySQL на этой машине, которая также доступна. Кажется, что группы маршрутизации и безопасности верны, но по какой-то причине трафик HTTP и HTTPS чем-то блокируется.
Обновление 2:
Я включил журналы потоков на VPC, и все мои запросы на порт 80 были отклонены, а на порты 22 и 3306 все прошло без проблем.
my.ip.goes.here. 10.1.1.68 64087 80 6 1 64 1694528397 1694528415 REJECT OK
Сетевой ACLнастроен на разрешение всех входящих и исходящих:
100 All traffic All All 0.0.0.0/0 Allow
* All traffic All All 0.0.0.0/0 Deny
Группа Безопасностиразрешает весь входящий и исходящий трафик:
All Traffic 0.0.0.0/0
Это становится все более и более странным.
решение1
Попробуйте с помощью tspdump отследить пакеты — доходит пакет до хоста или нет. Если пакет доходит, то явно что-то на сервере его блокирует или отбрасывает. Полностью сбросьте все правила брандмауэра, а еще лучше — отключите его совсем (для проверки). Ну, для начала проверьте настройки веб-сервера, возможно, что-то настроено не так. Попробуйте вставить простую статическую страницу и комбинацию этих мер — вы обязательно разберетесь в проблеме.
решение2
Я нашел решение.
Я открыл nginx на порту 81, который работал нормально, поэтому я подумал, что он просто блокирует какие-то веб-порты.
После небольшого исследования выяснилось, что это произошло из-за того, что на мой EC2 поступила жалоба «Сообщение о злоупотреблении EC2».
Среди миллионов писем было одно:
Мы получили отчет(ы) о злоупотреблении, затрагивающие ресурсы на вашем аккаунте AWS. В результате мы предприняли следующие шаги против затронутых ресурсов, чтобы смягчить активность:
** Заблокированы входящие HTTP-порты 80,8080 и 443 в регионе**
Ранее в этом регионе существовал другой экземпляр EC2, на котором было установлено определенное программное обеспечение, которое было взломано и отключено.
Было бы здорово, если бы это как-то отображалось на экземпляре EC2 в консоли.