LinuC 303における「パケットフィルタ」では、Linuxにおけるファイアウォールの仕組みや、複数のパケットフィルタリングツール(iptables、nftables、ebtablesなど)の使い方についての深い理解が求められます。本記事では、これらのツールの役割、使い方、設定例を通して、実務に役立つ知識を解説します。
1. 一般的なファイアウォールアーキテクチャとDMZ
1.1 ファイアウォールの役割
ファイアウォールは、ネットワークを保護するために、通信トラフィックを監視・制御します。主な機能には以下があります:
- パケットフィルタリング
- アクセス制御(IPアドレス、ポートなど)
- NAT(Network Address Translation)
1.2 DMZ(De-Militarized Zone)
DMZは、外部(インターネット)と内部(LAN)の間に配置される中間ゾーンです。以下のようなサーバーを配置します:
- Webサーバー
- メールサーバー
- DNSサーバー
DMZに置かれたシステムが侵害されても、内部ネットワークへの影響を最小限に抑えます。
2. netfilter, iptables, ip6tables
2.1 netfilterとは
Linuxカーネルの中に組み込まれたパケットフィルタリングの仕組みです。iptablesやnftablesなどのフロントエンドツールを通して制御されます。
2.2 iptablesとip6tables
- iptables はIPv4向け、ip6tables はIPv6向けです。
- ルールは以下のチェーンに分類されます:
- INPUT: ローカルホストへの受信パケット
- OUTPUT: ローカルホストからの送信パケット
- FORWARD: ルーターとしての通過パケット
標準モジュールとターゲット
- モジュール例:
tcp,udp,conntrack,multiport - ターゲット例:
ACCEPT,DROP,REJECT,LOG
テストと確認コマンド
iptables -L -v
ip6tables -L
保存と復元
iptables-save > /etc/iptables/rules.v4
iptables-restore < /etc/iptables/rules.v4
3. 接続追跡(Connection Tracking)とNAT
3.1 conntrack
接続状態をトラッキングして、ステートフルなフィルタリングを実現します。
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
3.2 NATの設定
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
4. IPセット(ipset)
大量のIPアドレスを管理するための仕組み。
ipset create blacklist hash:ip
ipset add blacklist 192.0.2.1
iptables -A INPUT -m set --match-set blacklist src -j DROP
5. nftablesの基本
nftablesはiptablesの後継として推奨される新しいパケットフィルタです。
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0; }
nft add rule inet filter input ip saddr 192.0.2.1 drop
nftablesはIPv4/IPv6を統合的に管理でき、より柔軟で高速なルール管理が可能です。
6. ebtablesの基本
ebtablesはブリッジ(レイヤ2)上でのパケットフィルタに使用されます。
ebtables -A INPUT -s AA:BB:CC:DD:EE:FF -j DROP
仮想化環境などでMACアドレスベースの制御に使用されます。
7. conntrackdの認識
- conntrackd は、クラスタリング環境において接続追跡情報を同期させるためのデーモンです。
- 冗長構成において、ステート情報を他ノードと共有できます。
8. 代表的コマンドと設定ファイル
| ツール | 説明 |
|---|---|
| iptables | IPv4 パケットフィルタ |
| ip6tables | IPv6 パケットフィルタ |
| ipset | IPアドレスの集合管理 |
| nft | 新しいパケットフィルタエンジン |
| ebtables | Ethernetブリッジ用のパケットフィルタ |
| iptables-save / restore | ルールの保存・復元 |
■ 章末問題
問題1:iptables -A INPUT -p tcp --dport 22 -j ACCEPT の意味は何ですか?
A. 22番ポートからの出力トラフィックを拒否する
B. SSHポートへの入力接続を許可する
C. TCP 22番ポートの接続をログに記録する
D. 22番ポートのICMPトラフィックを許可する
解説
正解:B
解説: このコマンドは、TCPポート22(通常はSSH)への入力トラフィックを許可するルールを追加します。
問題2:
IPv6パケットフィルタリングに使用するコマンドはどれですか?
A. iptables
B. nft
C. ip6tables
D. netfilter
解説
正解:C
解説: ip6tables は IPv6 トラフィック用のパケットフィルタリングツールです。
問題3:
以下のどのツールが Ethernet フレームレベルでフィルタリングを行いますか?
A. nft
B. ebtables
C. iptables
D. ipset
解説
正解:B
解説: ebtables はブリッジ接続されたインタフェース間の Ethernet フレームをフィルタリングするために使用されます。
問題4:
nftables でルールを定義する際、ルールの集合を格納する構造は何ですか?
A. table
B. chain
C. filter
D. list
解説
正解:B
解説: nftables では、ルールは chain に属し、chain は table に属します。
問題5:
以下のどの機能が NAT を可能にするモジュールですか?
A. filter
B. mangle
C. nat
D. raw
解説
正解:C
解説: nat モジュールはアドレス変換(NAT)を実装するために使用されます。
コメント