Linuxネットワークセキュリティ: iptablesとfirewalldの比較と活用

ネットワークファイアウォールはシステム管理者が定義したルールに基づきデータパケットの受信/送信を制御し、内部ネットワークのセキュリティを保護します。Linuxでは主にiptablesとfirewalldの2種類のツールが利用され、いずれもnetfilterを介してパケットフィルタリングを実行します。

iptables: 静的ファイアウォール

デフォルトではすべてのトラフィックを許可し、拒否ルールを明示的に設定する必要があります。インターネット経由のパケットのみフィルタリング可能で、内部ネットワーク間の通信には対応しません。ルール変更後は再読み込みが必要です。

テーブルとチェーン構造

テーブル機能
filterパケット許可/拒否(INPUT/OUTPUT/FORWARD)
raw状態トラッキング(OUTPUT/PREROUTING)
mangleパケット内容変更(全チェーン)
natアドレス変換(OUTPUT/PREROUTING/POSTROUTING)

基本コマンド例

# HTTPサービスを許可(8080ポート)
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

# ルール削除
iptables -D INPUT 2

# 設定保存
iptables-save > /etc/sysconfig/iptables

firewalld: 動的ファイアウォール

「ゾーン」を概念として導入し、外部/内部ネットワークの両方をフィルタリング可能。デフォルトではすべてを拒否し、許可ルールを追加して動作します。リアルタイムでルールを更新でき、サービスを再起動せずに反映できます。

主要ゾーン機能

  • public: SSHとDHCPv6のみ許可(デフォルト)
  • internal: SSHとIPPクライアントのみ許可
  • trusted: すべてのトラフィックを許可
  • block: すべての受信トラフィックを拒否(応答あり)

サービス設定例

# HTTPDサービスを公開ゾーンに追加
firewall-cmd --permanent --zone=public --add-service=httpd

# 設定再読み込み
firewall-cmd --reload

# 設定確認
firewall-cmd --list-all --zone=public

パケットフローの動作原理

  1. ネットワークインターフェース受信時: PREROUTINGチェーンで処理
  2. ルーティング決定前: ルール適用・変換
  3. ルーティング後: POSTROUTINGチェーンで最終処理
  4. ローカル生成トラフィック: OUTPUTチェーンで処理

タグ: iptables firewalld netfilter linux-networking security-policy

6月13日 21:27 投稿