AWS EC2インスタンスのCentOS 7に要塞SSHサーバーを作成しています。 ACL で次のルールを使用すると、サーバーに正常に接続できます。
参加ルール
- 私のクライアントIPのポート22からのトラフィックを許可します。
- 他のすべてのトラフィックをブロック
アウトバウンドルール
- 私のクライアントIPへのすべてのトラフィックを許可します。
- 他のすべてのトラフィックをブロック
AWS ACL ルールは iptables とほぼ同様です。これは、Amazonのクラウドインフラストラクチャに実装されている一連のiptableルールの単純化されたWebインターフェイスにすぎません。
私が理解したところによると、アウトバウンドルールセットは次に適用されます。どのサーバーから送信されたパケット - 接続を開始した接続の終わりに関係なく。
また、私のSSHサーバーは、クライアント起動接続を使用するときにポート22を介してのみSSHトラフィックを送信することを知っています。
ただし、次のルールセットを使用すると、SSH経由でサーバーに接続できなくなります。
参加ルール
- 私のクライアントIPのポート22からのトラフィックを許可します。
- 他のすべてのトラフィックをブロック
アウトバウンドルール
- ポート22のトラフィックがクライアントのIPに到達できるようにする
- 他のすべてのトラフィックをブロック
トラフィックをブロックできる他のすべてのAWS機能はすべてのトラフィックを許可するように設定されており、iptablesもインスタンスオペレーティングシステムですべてのトラフィックを許可するように設定されています。
サーバーからのアウトバウンドトラフィックがポート22に制限されているため、クライアントがSSH接続を確立できないのはなぜですか?
答え1
AWS の ACL はステートレスストレージファイアウォールです。つまり、すべての要求(インバウンドまたはアウトバウンド)を独立した接続として扱います。したがって、クライアントがサーバーのポート22にアクセスできるようにするには、両側で接続を有効にする必要があります(サーバーのポート22へのインバウンド+クライアントのランダム[1024-65535]ポートへのアウトバウンド)。
ただし、「セキュリティグループ」を扱う場合は、インバウンドポート22を許可するだけです。これは、セキュリティグループがステートフルファイアウォールであり、インバウンド接続を追跡するため、クライアントの任意の[1024-65535]ポートへのアウトバウンド接続を明示的に許可する必要がないためです。