【第5回】ネットワーク制御とnftables:firewalldの裏側にある最新フィルタリング技術の攻略

こんにちは、リナックス先生です。第4回ではsystemdを使い、サービスを安定稼働させる手法を学びました。しかし、サービスが動いていても、外部からのパケットが適切にフィルタリングされていなければ、サーバーは常に危険に晒されます。逆に、設定を間違えれば正当なアクセスまで遮断してしまいます。

第5回のテーマは、Linuxネットワークセキュリティの要、「ネットワーク制御とnftables」です。AlmaLinux 10では、長年親しまれたiptablesに代わり、より高速で柔軟なnftablesが完全に標準となっています。私たちは firewalld という管理ツールを通じてこの強力な門番を操作しますが、プロとしてその「裏側の仕組み」まで踏み込んで理解を深めていきましょう。

コウ君

先生!「ポートを開ける」とか「ファイアウォール」って言葉はよく聞くんですけど、firewalldとnftablesってどう違うんですか?どちらを覚えればいいんでしょうか?

リナックス先生

いい質問ね。一言で言うと、nftablesは「実際にパケットを仕分ける現場作業員」で、firewalldは「作業員に指示を出す現場監督」よ。AlmaLinux 10では監督(firewalld)に指示を出すのが基本だけど、複雑なトラブルを解決するには作業員の動き(nftables)を知っておく必要があるわ。今日はその両方のレベルをマスターしましょう!

【全8回】AlmaLinux 10 徹底攻略:次世代サーバー構築・運用講座

  • 第1回:AlmaLinux 10 爆速構築編
  • 第2回:初期設定と次世代セキュリティ編
  • 第3回:DNFとパッケージ管理の深淵編
  • 第4回:systemdと現代的なサービス管理編
  • ▶ 第5回:ネットワーク制御とnftables編(今ここ!)
  • 第6回:Web・DBサーバー構築(LEMPスタック)編
  • 第7回:パフォーマンス分析とリソース監視編
  • 第8回:自動化とバックアップの極意編

1. 現代のパケットフィルタリング:iptablesからnftablesへ

Linuxカーネルには、パケットを検査して通過・遮断を判定する「Netfilter」という枠組みがあります。長年、これを利用するためのツールとして iptables が君臨してきましたが、以下の理由から nftables への移行が完了しました。

  • コードの効率化: iptablesはプロトコル(IPv4/IPv6/ARP/Bridge)ごとにツールが分かれていましたが、nftablesは単一のエンジンでこれらすべてを処理します。
  • パフォーマンスの向上: nftablesは独自の「仮想マシン(VM)」をカーネル内で実行し、パケット処理を非常に高速かつ低CPU負荷で行います。
  • 原子的なルール更新: 設定反映時に通信が途切れることなく、一貫性を保ったままルールを入れ替えることが可能です。

AlmaLinux 10において iptables コマンドを実行しても、実は裏側で nftables のルールに変換して処理されています。しかし、新機能や高いパフォーマンスを100%引き出すには、nftablesをベースとした firewalld の使いこなしが不可欠です。


2. firewalldの核心概念「ゾーン」を理解する

firewalldの最大の特徴は「ゾーン(Zone)」という考え方です。これは、ネットワーク接続の「信頼レベル」に応じてルールをパッケージ化したものです。

ゾーン名 信頼レベル 標準的な用途
public 低い VPSやインターネットに直接繋がるインターフェース(デフォルト)
internal 高い 社内LANやプライベートネットワーク
trusted 最高 すべての通信を許可。検証時以外は非推奨
drop 皆無 外部からの全パケットを破棄(応答も返さない)

初心者は「どのポートを開けるか」ばかりに目が行きがちですが、プロは「どのネットワークインターフェース(eth0など)をどのゾーンに所属させるか」をまず定義します。

💡 プロのノウハウ:デフォルトゾーンの変更
実務では、万が一の設定漏れを防ぐために sudo firewall-cmd --set-default-zone=drop と設定し、すべての通信を一度拒否してから必要なものだけを許可する「ホワイトリスト方式」を採ることもあります。現在の設定は firewall-cmd --get-default-zone で確認できます。


3. 実務で即戦力!firewall-cmd基本・応用リファレンス

firewalldの操作は firewall-cmd コマンドで行います。絶対に忘れてはいけないのが、「一時的な反映」「永続的な反映(–permanent)」の区別です。

3-1. 現在の状況を確認する

# 有効なすべての設定を表示
sudo firewall-cmd --list-all

# 許可されているサービス一覧を確認
sudo firewall-cmd --list-services

3-2. サービス・ポートの許可

# HTTP(80番)を一時的に許可
sudo firewall-cmd --add-service=http

# HTTPS(443番)を永続的に許可(再起動後も有効)
sudo firewall-cmd --add-service=https --permanent

# 任意のポート番号(例:8080番)を許可
sudo firewall-cmd --add-port=8080/tcp --permanent

# 設定をリロードして --permanent の内容を反映(必須!)
sudo firewall-cmd --reload

⚠️ トラブルシューティング / 注意点
--permanent を付けて実行しただけでは、現在の通信には反映されません。必ず firewall-cmd --reload をセットで行う必要があります。逆に --permanent なしで実行した場合は、即時反映されますがサーバー再起動後に消えてしまいます。テストは --permanent なしで行い、確信が持てたら --permanent 付きで再実行するのがプロの安全策です。


4. 現場の流儀:リッチルールとnftablesによるデバッグ

「特定のIPアドレスからのみSSHを許可したい」といった複雑な条件は、リッチルール(Rich Language)を使用します。

4-1. 特定IPの制限(リッチルール)

# 192.168.10.100 からの SSH 通信のみを許可する
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.100" service name="ssh" accept'

# 攻撃元IP(例:203.0.113.5)を完全に拒絶する
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" reject'

4-2. 裏側の実体を確認する (nft)

firewall-cmdで設定した内容が、実際にどうパケットフィルタとして動いているかは nft コマンドで見ることができます。

# 現在のnftables全ルールセットを表示
sudo nft list ruleset

ここには、firewalldが生成したテーブルやチェーンがズラリと並びます。firewall-cmd では正常に見えるのに通信が通らない場合、ここで直接ルールを読み解くことで、「どのチェーンでDROPされているか」という真実を知ることができます。

💡 プロのノウハウ:パケットの「ログ」を取る
通信トラブル時、パケットが捨てられているのか届いていないのかを判断するために、一時的にログを出すルールを追加します。
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="対象IP" log prefix="FIREWALL_DEBUG: " level="info" limit value="1/m" accept'
これで journalctl -f を監視すれば、条件に合致したパケットが来た瞬間にログが表示されます。


5. まとめと次回予告

第5回、お疲れ様でした!ネットワークの門番をマスターしたことで、あなたのサーバーはインターネットという大海原でも自律して身を守れるようになりました。

  • nftables はカーネル内で動く次世代の高速フィルタリングエンジン。
  • firewalld は「ゾーン」を使って管理を抽象化・簡略化する。
  • 永続化(–permanent)リロード(–reload) の関係は鉄則。
  • リッチルール を使いこなせば、特定の相手だけに門戸を開く高度な運用ができる。

守りが完璧になったら、次はいよいよ「サービスの本丸」を構築します。Webサイトを公開し、データを保存するための基盤作りです。

次回の第6回は、「Web・DBサーバー構築(LEMPスタック)編」です。Nginx, MariaDB, PHPの最新版をAlmaLinux 10上で協調動作させる、最も需要の高いサーバー構成に挑戦しましょう。お楽しみに!

▼ サーバー構築・開発を学ぶならVPSで ▼

エンジニア必須の環境
「おすすめVPS」

VPSランキングを見る

技術スキルを活かす
「ITエンジニア転職」

転職エージェントを見る

コメント