ネットワークセキュリティは、ユーザーがクラウド上に主要なビジネス運用をデプロイする際の主な懸念事項となることがよくあります。仮想プライベートクラウド (VPC) のトラフィックミラーリング機能を使用すると、ネットワークトラフィックセキュリティをリアルタイムで監視および分析できます。
シナリオ
ある企業がクラウド上にコアビジネスを展開しています。クラウドサービスの運用を確保しながら、セキュリティ監査のために ECS インスタンストラフィックの効率的で非侵入型の監視を行い、潜在的な脅威を特定して記録する必要があります。
この例では、トラフィックミラーリングを利用して、1 つの ECS インスタンスから脅威検知システムを備えた別の ECS インスタンスにネットワークトラフィックをコピーします。これにより、セキュリティルールを構成した後、ミラーリングされたトラフィックをリアルタイムで監視できます。
トラフィックミラーリング: ソース Elastic Compute Service (ECS) インスタンスの Elastic Network Interface (ENI) からネットワークトラフィックを複製し、指定された ENI に転送します。この機能は、コンテンツ検査、脅威の監視、トラブルシューティングでよく使用されます。
トラフィック監査: この例では、Suricata を使用してメッセージの受信と異常検出を行います。VXLAN カプセル化とカプセル化解除、侵入検知サービス (IDS)、侵入防止サービス (IPS)、ネットワークセキュリティ監視などの機能を提供します。Suricata は悪意のあるトラフィックパターンを識別し、ビジュアル分析システム Elasticsearch とシームレスに統合されます。Alibaba Cloud Marketplace から他のセキュリティ分析ツールを選択することもできます。
ログ処理とストレージ: Filebeat が Suricata ログを収集した後、ログはインデックスによって Elasticsearch に保存され、Kibana で視覚化されます。Kibana では、ログのクエリ、分析、表示を行うことができます。
インデックスファイルストレージ: Elasticsearch を構成した後、インデックス付きのトラフィックレコードを Alibaba Cloud Object Storage Service (OSS) に保存します。これにより、データが安全に保存され、長期間にわたってアクセスできるようになります。
前提条件
2 つの VPC が作成され、それぞれに 1 つの ECS インスタンスがあります。
必要に応じて、Elastic IP アドレス (EIP) を ECS1 に関連付けてインターネットアクセスを実現できます。
EIP は、トラフィックミラーターゲットである ECS2 に割り当てられ、インターネットアクセスと Suricata のデプロイに使用されます。
この例では、サーバーはオペレーティングシステムとして Alibaba Cloud Linux 3.2104 LTS 64 ビット を実行しています。
ECS2 のセキュリティグループでは、UDP ポート 4789 でのインバウンドトラフィックが許可されています。このポートには、ECS1 によってカプセル化された UDP メッセージがアクセスできるため、ECS1 からミラーリングされたトラフィックを受信できます。
トラフィックミラーリング機能をまだ有効にしていない場合は、プロンプトが表示されたら有効にします。
トラフィックミラーソースとミラーターゲットが異なる VPC にある場合は、2 つの VPC を接続する必要があります。この例では、2 つの VPC は VPC ピアリング接続 を介して接続されています。
Kibana [パブリックネットワークアクセス] が有効になっている Elasticsearch インスタンスが作成されます。 Kibana ホワイトリストにパブリック IP アドレスを追加する。
手順
手順 1: Suricata を構成する
ネットワークトラフィックを受信してセキュリティ監査を実施するには、ECS2 に Suricata をデプロイする必要があります。
ECS2 にログオンし、次のコマンドを実行して Suricata をインストールします。
# 依存関係をインストールする sudo dnf install -y gcc libpcap-devel pcre-devel libyaml-devel file-devel \ zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel # suricata をインストールする sudo dnf install suricata -y # suricata が自動的に起動することを確認する sudo systemctl enable suricata sudo systemctl start suricataSuricata を構成します。
Suricata の構成は
/etc/suricata/suricata.yamlにあります。デフォルト設定のままで構いません。セキュリティルールを更新します。
suricata-updateを実行してルールファイルを更新します。ルールファイルはデフォルトで/var/lib/suricata/rules/suricata.rulesに保存されます。sudo service suricata restartを実行して Suricata を再起動します。
手順 2: トラフィックミラーリングを構成する
フィルタを設定します。
VPC コンソール にログオンします。 左側のナビゲーションウィンドウで、 を選択します。
[フィルタ] ページで、[フィルタの作成] をクリックします。 [ルール構成] セクションで、[アウトバウンドルール] タブをクリックし、[ルールの作成] を選択します。設定はデフォルト値のままにして、すべてのトラフィックをキャプチャします。[保存] をクリックします。
トラフィックミラーセッションを作成してアクティブにします。
左側のナビゲーションウィンドウで、 を選択します。
[トラフィックミラーセッション] ページで、[トラフィックミラーセッションの作成] をクリックします。デフォルトの [基本構成] を維持します。[フィルタの関連付け] では、手順 1 で作成したルールを選択します。次に、ECS1 の ENI を [ミラーソース] として選択し、ECS の ENI を [ミラーターゲット] として選択します。
[トラフィックミラーセッション] ページで、設定したセッションを見つけ、[開始][アクション] 列の をクリックします。
トラフィックミラーリングと Suricata 機能が正しく完了すると、次のログファイルが /var/log/suricata/ ディレクトリに生成されます。
/var/log/suricata/ ├── certs ├── core ├── eve.json ## キャプチャされたすべてのフロー、アラート、統計、HTTP ログ (JSON 形式) ├── fast.log ## 検出と分析によるアラートログ ├── files ├── stats.log ## キャプチャおよび処理されたパケットに関する詳細な統計 ├── suricata.log ## 詳細なランタイムログ └── suricata-start.log ## 詳細な起動ログ
手順 3: Suricata ログを収集して保存する
Filebeat を使用して Suricata ログを Elasticsearch に転送してインデックスを作成および保存し、Kibana を使用してログを視覚化できます。
ECS2 にログオンし、次のコマンドを実行して Filebeat をインストールします。
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.0-x86_64.rpm sudo rpm -vi filebeat-7.10.0-x86_64.rpmSuricata 構成を調整して、収集するトラフィックログファイルを指定します。
sudo filebeat modules enable suricataを実行して Suricata モジュールを有効にします。sudo vim /etc/filebeat/modules.d/suricata.ymlを実行して Suricata 構成を変更します。- module: suricata # 収集するトラフィックログファイルを指定する eve: enabled: true var.paths: ["/var/log/suricata/eve.json"]Escキーを押し、:wqと入力し、Enter キーを押して変更を保存して終了します。
sudo vim /etc/filebeat/filebeat.ymlを実行して filebeat.yml ファイルを構成し、接続設定を完了します。Filebeat モジュールの構成を変更します。
filebeat.config.modules: # グローバルに構成ファイルをロードする path: /etc/filebeat/modules.d/suricata.yml # 動的再読み込みと新しい構成の適用を有効にする reload.enabled: true # 指定された間隔で構成の変更を確認する reload.period: 1sKibana 構成を変更します。
setup.kibana: host: "https://es-cn-8l**********2r7ln-kibana.cn-hangzhou.elasticsearch.aliyuncs.com:5601"host: これは Kibana のアドレスで、<Kibana パブリックアドレス>:5601の形式です。詳細については、「Kibana の構成」をご参照ください。Elasticsearch 出力設定を調整します。
output.elasticsearch: # ログストレージ用の Elasticsearch インスタンスを指定する hosts: ["http://es-cn-8ly**********r7ln.elasticsearch.aliyuncs.com:9200"] username: "elastic" password: "<your_password>"host: Elasticsearch のアドレスで、<インスタンスのプライベートアドレスまたはパブリックアドレス>:9200の形式です。詳細については、「クラスタの基本情報を表示する」をご参照ください。username: Elasticsearch のデフォルトのユーザー名は elastic です。password: インスタンスの作成時に設定されたパスワード。パスワードを忘れた場合は、Elasticsearch クラスタのアクセスパスワードをリセットする ことができます。Escキーを押し、:wqと入力し、Enter キーを押して変更を保存して終了します。次のコマンドを実行して、ダッシュボードなどのリソースを Elasticsearch と Kibana にアップロードし、Filebeat を起動します。
sudo filebeat setup sudo service filebeat start
手順 4: VPC トラフィックを視覚化する
Elasticsearch インスタンスの Kibana コンソールにログオンする。左側のナビゲーションウィンドウで、 をクリックし、[インデックスパターン] を filebeat に変更します。
alertフィルタを追加し、右上隅で時間範囲を選択して、指定された期間における VPC トラフィックの潜在的な脅威を確認できます。
手順 5: アラートを確認する
ECS1 にログオンし、
curl http://testmynids.org/uid/index.htmlを実行して ID コマンドの出力をシミュレートし、アラートをトリガーします。
説明Suricata ルールセットには、パケットに文字列
uid=0|28|root|29|が含まれていて、トラフィックが不明として分類されている場合に、パケットをドロップしてアラートを生成する次のルールが含まれています。alert ip any any -> any any (msg:"GPL ATTACK_RESPONSE id check returned root"; content:"uid=0|28|root|29|"; classtype:bad-unknown; sid:2100498; rev:7; metadata:created_at 2010_09_23, updated_at 2010_09_23;)Kibana インターフェースで、
GPLフィルタを適用して、Suricata IDS シグネチャルール GPL ATTACK_RESPONSE id check returned root に対応するアラートを表示します。
次の手順: データのバックアップ
Elasticsearch インデックスファイルをバックアップして、データへの長期アクセスを保護および維持できます。Elasticsearch では、データの自動バックアップがデフォルトで有効になっています。自動バックアップスナップショットを Alibaba Cloud OSS リポジトリに保存する ことができます。
よくある質問
Filebeat 構成の変更を有効にするにはどうすればよいですか?
構成ファイルを変更した後、サービスを再起動します。Filebeat を再起動するには、次のコマンドを実行します。
sudo systemctl restart filebeatトラフィックミラーリングの構成後、トラフィックがミラーターゲットに転送されていることを確認するにはどうすればよいですか?
ミラーターゲットである ECS2 にログインし、次のコマンドを実行してパケットデータが受信されていることを確認します。
tcpdump -i eth0 udp port 4789 -nne識別子 [vni 1] は、宛先がパケットを受信し、ミラーセッションが成功したことを示します。
