Elastic IP を使用して AWS EC2 (Ubuntu) 上の apache2 サーバーのデフォルト サイトをホストしています。
セキュリティ グループがすべての受信を開くように設定されています (テスト目的)。
パブリック IP を使用して SSH 経由でサーバーにアクセスすることができますが、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 *:*
ファイアウォールは非アクティブです。
また、同じサブネット上でスピンした 2 番目の VM に nginx をインストールしようとしましたが、不思議なことに、ポート 80 の Web サーバーにもアクセスできません。
そこで、別のサブネット上に新しいインスタンスも作成しましたが、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 を使用してパケットを追跡してみてください。パケットがホストに到着するかどうかは関係ありません。パケットが到着した場合、明らかにサーバー上の何かがパケットをブロックまたは破棄しています。すべてのファイアウォール ルールを完全にリセットするか、または完全にオフにしてください (テスト用)。まず、Web サーバーの設定を確認してください。何かが正しく構成されていない可能性があります。単純な静的ページを挿入し、これらの対策を組み合わせてみてください。間違いなく問題がわかります。
答え2
解決策を見つけました。
ポート 81 で nginx を開きましたが、問題なく動作したので、Web ポートのみがブロックされているに違いないと思いました。
少し調べてみたところ、これは私の EC2 が「EC2 不正使用レポート」で報告されていたためであることがわかりました。
何百万通ものメールの中に、1通のメールがありました。
お客様の AWS アカウントのリソースが不正使用されたとの報告を受けました。その結果、アクティビティを軽減するために、関係するリソースに対して以下の手順を実行しました。
** リージョン内の受信 HTTP ポート 80、8080、443 がブロックされました**
以前、そのリージョンには特定のソフトウェアがインストールされた別の EC2 インスタンスがありましたが、ハッキングされてシャットダウンされました。
それがコンソールの EC2 インスタンスに何らかの形で表示されれば素晴らしいと思います。