はじめに
ファイアウォールルールは、必要なサービスを維持しながら、意図したアクセス境界を作って初めて有用です。既定ポリシーが ACCEPT の下で許可ルールを追加するだけでは、誰かが制限された証明にはなりません。
この実習では、専用の Kali サービスと二つの演習クライアントを提供します。最初のアクセスを調べ、Kali 内で順序を付けた送信元ベースのルールを適用し、演習ポリシーを保存・復元して、両方のクライアント経路をテストします。
アクセス制限前の演習ネットワークを観測する
このステップでは、提供された二つのクライアントの視点からテストし、演習サービスを保護するファイアウォールを調べます。
この実習は VM 内に小さな専用ネットワークを提供します。Kali の演習サービスは 172.30.77.10:8080、許可するクライアントは 172.30.77.20、遮断するクライアントは 172.30.77.30 です。最初は両方がアクセスできます。これらは演習ネットワークのアドレスで、公開ターゲットではありません。
最初の Ubuntu ホストの Terminal から始めます。準備された training-client コマンドは、指定した演習クライアントから要求を送ります。これはホストで実行し、ファイアウォール管理は Kali 内で行います。共有ワークスペースを選びます。
cd /home/labex/project
許可クライアントの最初の HTTP ステータスを保存します。
training-client allowed > allowed-before.txt
cat allowed-before.txt
ステータス行には 200 OK があるはずです。もう一方のクライアントの最初のアクセスを記録します。
training-client blocked > blocked-before.txt
cat blocked-before.txt
こちらも 200 OK を報告するはずです。ラベルは最初の状態ではなく、これから遮断するクライアントの名前です。
Kali に入り、ファイアウォールを調べます。
kali
iptables は、チェーン内のパケットフィルタリングルールを評価します。INPUT はこの環境宛てのパケット、OUTPUT はローカル生成パケット、FORWARD は転送パケットを扱います。-L INPUT は入力チェーンを一覧表示し、-n はアドレスとポートを数値に保ち、-v はカウンターを含めます。
sudo iptables -L INPUT -n -v
演習チェーンの初期ポリシーは ACCEPT です。チェーンポリシーは、それまでのルールでパケットの処理が決まっていない場合に適用されます。この実習では、既定ポリシーやホストのファイアウォールは変更せず、専用サービスへの限定したルールを追加します。
順序付きのサービスポリシーを適用して保存する
このステップでは、同じサービスに対して他の演習ネットワークの送信元を拒否する前に、指定クライアントを許可します。
Kali 内で続けます。-A INPUT は入力チェーンにルールを追加し、-p tcp は TCP、-s は送信元アドレス、--dport は宛先ポートを照合し、-j は動作を選びます。まず限定した許可ルールを追加します。
sudo iptables -A INPUT -p tcp -s 172.30.77.20 --dport 8080 -j ACCEPT
次に、同じポートに対する専用演習サブネットの他の送信元を拒否します。/24 プレフィックスは 172.30.77.0 のネットワーク範囲を識別します。
sudo iptables -A INPUT -p tcp -s 172.30.77.0/24 --dport 8080 -j REJECT
ルールは順番に評価されます。許可した送信元は最初の最終判断を行う ACCEPT ルールに一致し、もう一方の演習クライアントは後の REJECT に到達します。順序を逆にすると、許可クライアントも拒否されます。他のポートや送信元は、変更していない既定ポリシーに従います。
ルールの順序とカウンターを表示します。--line-numbers は各ルールの位置を含めます。
sudo iptables -L INPUT -n -v --line-numbers
最初のルールは指定クライアントの TCP 8080 を許可し、後のルールはそのサービスへの残りの演習サブネット通信を拒否するはずです。
iptables-save は、有効なルールを復元可能な形式で表示します。この演習設定を共有ワークスペースに保存します。
sudo iptables-save > /home/labex/project/training.rules
シェルの < はファイルをコマンドの標準入力として渡します。iptables-restore は保存設定を読みます。ここでは、今保存した演習ルールをそのまま復元します。
sudo iptables-restore < /home/labex/project/training.rules
操作するのは専用の Kali ネットワーク環境だけです。限定したサービス制限のために、ホストのファイアウォールを消去したり、既定ポリシーを置き換えたりしないでください。
許可・拒否されるクライアントアクセスを検証する
このステップでは、両方のクライアント送信元からポリシーをテストし、演習サービスが利用可能なままか確認します。
提供されたクライアントの視点を使うため、Kali から Ubuntu ホストの Terminal に戻ります。
exit
ホストのプロンプトは labex を示します。許可クライアントの新しい結果を記録します。
training-client allowed > /home/labex/project/allowed-after.txt
cat /home/labex/project/allowed-after.txt
引き続き 200 OK を報告するはずです。
次のコマンドは、接続拒否または他の接続エラーで失敗する想定です。意図的に遮断したクライアントだからです。この意図した失敗の後も続けてください。
training-client blocked
遮断クライアントの要求失敗は、許可経路が動いている間だけ意味を持ちます。Web サービスの終了は両経路を壊し、必要なポリシーの実証にはなりません。
Kali に戻り、テスト後のカウンターを調べます。
kali
sudo iptables -L INPUT -n -v --line-numbers
関連ルールのカウンターが増えているはずです。ルールのテキストと実際の通信動作の両方を確認でき、演習中ずっと LabEx ホストの Terminal は利用可能なままです。
まとめ
チェーンのポリシーを調べ、一つのサービスに対する順序付きの送信元ベースのルールを追加し、演習設定を保存・復元して、二つのクライアントから実際のアクセスをテストしました。許可した送信元とサービスを利用可能なまま保ち、指定した送信元を拒否しました。



