IPマスカレードとDNS名を指定したファイアウォールでDev.IOにしか接続できないVPCを作ってみた

Sophos UTMをNATインスタンス兼ファイアウォールとして利用し、Dev.IOにしか接続できないVPCを作ってみました。
2018.06.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Sophos UTMをNATインスタンス兼ファイアウォールとして利用してみました。 Sophos UTMのファイアウォール機能は、送信元や宛先にDNS名を指定できます。 Windowsインスタンスのインターネット接続は、Sophos UTMを経由しファイアウォールで許可された宛先(Dev.IO)のみ接続可能にしました。

VPC内の通信はUTMを経由しないため許可されます。 本記事では記載しませんが、VPC内の通信はNetwork ACLやセキュリティグループで制御するといいでしょう。

UTMでNATインスタンスを作成

UTMのローンチ、言語、タイムゾーン、アップデートの手順はこちらをご覧ください。 アップデートまでが完了している前提で記載します。

UTMのセキュリティグループに許可を追加

UTMのセキュリティグループに、VPC内からの全ての接続を許可するルールを追加します。

IPマスカレードの有効化

今回はNATにIPマスカレードを利用することにしました。 VPC内のEC2がインターネット接続するとき、送信元IPはUTMのElastic IPになります。

[ネットワークプロテクション]-[NAT]-[新規マスカレードルール]を選択します。 "ネットワーク"の"+"を選択し、VPCのアドレスを登録します。

スイッチを選択し、有効化します。

ファイアウォールルールの追加

初期状態では、ファイアウォールが有効でルールがない状況です。 許可ルールを追加するために、[ネットワークプロテクション]-[ファイアウォール]-[新規ルール]を選択します。

送信元にVPC、宛先にインターネット、アクションに許可を指定します。 サービスはAny(全部)としました。

スイッチを選択し、有効化します。

送信元/送信先チェックの無効化

UTMの送信元/送信先チェックの無効化を無効化します。 NATとして利用する場合は無効にする必要があります。詳細はこちらをご覧下ください。 EC2コンソールからアクションを選択します。

ルートテーブルの変更

UTM経由でインターネット接続するサブネットのルートテーブルを変更します。 インターネット宛て(0.0.0.0/0)のターゲットをUTMにします。

Windowsインスタンスでの確認

Windowsインスタンスで、Chromeを起動しhttps://checkip.amazonaws.com/に接続します。 UTMのIPアドレスが表示されれば、成功です。 UTM経由でインターネット接続できました!

Dev.IOにだけ接続を許可

特定の宛先にのみ接続できるようにしてみます。 ファイアウォールルールを編集し、"Internet IPv4"を削除します。 代わりに本サイト関連のドメインを登録します。 タイプはDNSグループとします。

DNSグループでは、TTLにしたがって定期的に再解決します。 DNSホストでは単一の1IPアドレスを受け取りますが、DNSグループを指定すると複数のリソースレコードを受け取れます。 dev.classmethod.jpで2つのIPを受け取りました。

Windowsインスタンスで本サイトに接続すると、記事を閲覧できます。 https://checkip.amazonaws.com/には接続できません。ファイアウォールの許可ルールがなくなったからです。

ログの確認

[ネットワークプロテクション]-[ファイアウォール]-[ライブログを開く]から、リアルタイムのログを確認できます。

[ログとレポート]-[ネットワークプロテクション]-[ファイアウォール]から、様々な視点で状況を確認できます。 利用されているサービスを確認すると、4位はHTTPで15パケットです。

おわりに

Sophos UTMをNATインスタンス兼ファイアウォールとして利用してみました。 UTMのファイアウォール機能は、送信元や宛先にDNS名を指定できます。

EC2からインターネットへの接続は、本サイトのみ可能にしました。 ファイアウォールルールの宛先にDNS名を指定したい場合、Sophos UTMが活躍すると思います。

参考