言語を切り替える
テーマを切り替える

ファイアウォール設定:UFW、iptablesとセキュリティポリシー設計

深夜3時。サーバーからのアラートSMSで睡眠から引きずり出された——テスト環境のデータベースに異常なトラフィックが検出された。サーバーにログインしてみると、ファイアウォールが完全に無効になっていた。慌てて有効化したが、ルールリストは乱雑なテスト設定で埋め尽くされ、SSHポートにはレート制限も設定されていない。正直、かなり参った。

この事件で気づいたことがある:多くの人(私自身も含め)がファイアウォール設定時、適当にコマンドをコピーするだけか、UFWとiptablesの違いさえ理解していない。体系的なセキュリティポリシー設計?そんなこと考えもしない。今日はこの話をちゃんと整理しよう。


Linuxファイアウォールの真相

ファイアウォールの話をする前に、よく混同される概念を整理しよう:Netfilter。多くの人はiptables=ファイアウォールと思っているが、それは間違い。

NetfilterはLinuxカーネル内のネットワークパケット処理フレームワークだ。カーネルプロトコルスタックの重要位置にいくつかの「フック」(hooks)を埋め込んでいる。通過する各パケットがこれらのフックをトリガーし、ここで独自の処理ロジックをマウントできる——拦截、修改、記録など。

iptables、UFW、nftablesはユーザースペースの設定インターフェースに過ぎない。これらで書いたルールは最終的にNetfilterが理解できる形式に変換され、カーネルで実行される。

例えるなら:Netfilterは道路下に埋められた水管バルブシステム、iptablesは古い手動ダイヤル、UFWはタッチスクリーン付きのモダンな制御パネル——どれもバルブを開閉できるが、操作方法は全く異なる。

ユーザースペースツールの進化

Linuxファイアウォールツールは近年大きく変化した:

  • iptables:2000年頃登場の古典ツール。Netfilterを直接操作、構文は複雑だが強力。
  • nftables:iptablesの現代版代替、2014年導入。構文より統一、性能向上、新版Ubuntuはデフォルトでバックエンド使用。
  • UFW(Uncomplicated Firewall):2008年Ubuntuが発表した簡易ツール。底层はiptables/nftables、コマンドは驚くほど簡単。
  • firewalld:Red Hat系ディストロの動的ファイアウォール管理ツール、接続中断せず実行時ルール変更可能。

この記事はUFWとiptablesを重点解説——実際運用で最も使用されるから。nftablesはよりモダンだが、概念はiptablesと共通、iptables学習後の転用は難しくない。


UFW:ファイアウォール設定の苦痛を解消

UFWが人気の理由

iptables経験者なら知っている——ルール書く時の緊張感。一つパラメータ間違えればSSHポートを封鎖、自分が外にロックされる恐怖。

UFWの設計理念は「簡素第一」。1コマンドでポート開放、-A INPUT -p tcp --dport 22 -j ACCEPTのような反人間構文を覚える必要なし。

比較:

iptables:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

UFW:

ufw allow ssh

一目瞭然。UFWは自動でプロトコル、状態検査、IPv6等を処理——「SSH開放したい」と言えばいい。

基本設定:ゼロから開始

新サーバー入手時、ファイアウォール設定はこう進める:

ステップ1:デフォルトポリシー設定

デフォルトポリシーは「ルールにマッチしない時どうする」を決める。セキュリティ基本原則:全インバウンド拒否、全アウトバウンド許可。

sudo ufw default deny incoming   # 全インバウンド接続拒否
sudo ufw default allow outgoing   # 全アウトバウンド接続許可

これで、明示的に許可しない限り、外部リクエストは一切入らない。多くの人は面倒でallowに設定——サーバーは扉全開の家になり、誰でも出入り可能。

ステップ2:必要ポート開放

ここに落とし穴:SSH開放後にファイアウォール有効化必須!順序間違えばリモート接続が即切断。

sudo ufw allow ssh        # SSH開放(ポート22)
sudo ufw allow 80/tcp     # HTTP
sudo ufw allow 443/tcp    # HTTPS

他のサービス実行時、例えばカスタムSSHポート(2222と仮定):

sudo ufw allow 2222/tcp

ステップ3:ファイアウォール有効化

sudo ufw enable

システム警告:「This may disrupt existing ssh connections」——慌てない、前にallow ssh実行済みなら問題なし。y入力で確認。

ステップ4:状態確認

sudo ufw status verbose

出力例:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere

Status: active表示でファイアウォール稼働確認。

上級テクニック:設定をより安全に

アプリケーションプロファイル(App Profiles)

UFWの超便利機能——App Profiles。多くの一般的サービス(Nginx、Apache、OpenSSH)に事前定義設定がある。

利用可能プロファイル確認:

sudo ufw app list

出力例:

Available applications:
  Apache
  Apache Full
  Apache Secure
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

アプリ名でポート開放:

sudo ufw allow 'Nginx Full'

このコマンドでHTTP (80)とHTTPS (443)同時開放——2ルール手書きの手間省略。

レート制限:ブルートフォース防止

SSHポートはブルートフォース攻撃の最頻繁ターゲット。UFW内蔵レート制限:

sudo ufw limit ssh

このルール:あるIPが30秒内に6回以上接続試行すれば一時封鎖。単純なallow sshより大幅に安全。

特定IPアクセス制限

特定IPのみサービスアクセス許可したい時、例えばDB管理画面は会社内网のみ:

# 192.168.1.100のみMySQLアクセス許可
sudo ufw allow from 192.168.1.100 to any port 3306

# 悪意IP拒否
sudo ufw deny from 203.0.113.100

ログ記録

ファイアウォールログはトラブルシューティングの鍵:

sudo ufw logging on
sudo ufw logging medium   # ログレベル:low/medium/high

ログは/var/log/ufw.logに保存、形式例:

Mar 15 10:23:45 server kernel: [UFW BLOCK] IN=eth0 OUT= MAC=... SRC=203.0.113.100 DST=... PROTO=TCP SPT=54321 DPT=22

[UFW BLOCK]表示でファイアウォールがリクエスト拦截確認。

UFWの限界

UFWは便利だが境界がある:

  • NATとポートフォワーディング:限定的サポート、複雑設定はiptables必要
  • 複雑ルールチェーン:カスタムチェーン、条件嵌套未サポート
  • コンテンツフィルタリング:不可能(HTTPリクエスト内恶意Payloadフィルタ等)

需要がこれら境界を超える場合、iptablesに切り替え必須。


iptables:精密制御の利器

iptablesアーキテクチャ理解

iptablesはUFWより複雑、但し底层逻辑は実は明確。「テーブル-チェーン-ルール」3層構造理解が鍵。

テーブル(Tables)

異なるテーブルが異なるタスクタイプ処理:

  • filterテーブル(デフォルト):パケットフィルタリング、接受或拒否決定
  • natテーブル:アドレス変換(NAT)、源/宛先アドレス書換
  • mangleテーブル:パケットのTOS、TTL等メタデータ修改
  • rawテーブル:例外設定、接続追跡バイパス

大部分场景はfilterテーブルのみ使用、デフォルトで操作。

チェーン(Chains)

チェーンはルール集合、順次実行。filterテーブルは5内蔵チェーン:

  • INPUT:インバウンドパケット(宛先は本地マシン)
  • OUTPUT:アウトバウンドパケット(源は本地マシン)
  • FORWARD:転送パケット(マシンは中継のみ)
  • PREROUTING:ルーティング前処理
  • POSTROUTING:ルーティング後処理

日常設定はINPUTとOUTPUT主使用、FORWARDはルータやゲートウェイ時に使用。

ルールマッチング順序

ルールは上から下に順次マッチング、最初マッチでアクション実行、後続ルールは検査なし。

例:

iptables -A INPUT -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -j DROP

この2ルール、192.168.1.100は最初のACCEPTにマッチ、直接通過、第二ルール検査なし。但し順序逆なら、192.168.1.100は最初のDROPで拦截、第二ルール到達不能。

これがiptables設定の核心原則:より具体的なルールを前、より一般的なルールを後

基本構文解析

iptablesコマンド基本形式:

iptables -t テーブル名 -A チェーン名 マッチ条件 -j アクション

常用パラメータ:

  • -t:テーブル指定(デフォルトfilter、省略可)
  • -A:チェーン末尾にルール追加(Append)
  • -I:指定位置にルール挿入(Insert)
  • -D:ルール削除(Delete)
  • -L:ルールリスト(List)
  • -F:全ルール消去(Flush)
  • -P:デフォルトポリシー設定(Policy)

マッチ条件

  • -s:源IPアドレス(例-s 192.168.1.100
  • -d:宛先IPアドレス
  • -p:プロトコル(tcp、udp、icmp)
  • --sport:源ポート
  • --dport:宛先ポート
  • -i:インバウンドNIC(例-i eth0
  • -o:アウトバウンドNIC
  • -m state --state:接続状態検査

アクション(Target)

  • ACCEPT:パケット接受
  • DROP:静默破棄(情報返却なし)
  • REJECT:拒否しエラーメッセージ返却
  • LOG:ログ記録(拦截なし、後続ルールマッチ継続)
  • RETURN:現在チェーン停止、上位チェーン復帰

実戦設定:安全なサーバーファイアウォール

完全な本番環境設定流程:

ステップ1:既存ルール消去

新サーバーはデフォルトルール常有、先に清理:

sudo iptables -F        # 全ルール消去
sudo iptables -X        # 全カスタムチェーン削除
sudo iptables -t nat -F
sudo iptables -t mangle -F

ステップ2:デフォルトポリシー設定

UFW同様、デフォルトでインバウンド拒否:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

ステップ3:確立済接続許可

このルールは極重要:応答トラフィックと確立済接続データ通過許可。

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

意味:ウェブサイト訪問時、発信リクエストはOUTPUT(デフォルトACCEPT)、サイト応答はINPUT。このルールなし、応答パケットはDROP、データ受信不能。

ESTABLISHEDは接続確立済、RELATEDは関連接続(FTPデータ接続等)。

ステップ4:必要ポート開放

# SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# HTTP
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# HTTPS
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

ステップ5:ICMP制限(オプション)

ICMPはping使用プロトコル。一部セキュリティポリシーはping無効化:

# ping許可
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# 或いはping拒否
sudo iptables -A INPUT -p icmp -j DROP

ステップ6:ログ記録

DROP前にLOGルール追加、トラブルシューティング用:

sudo iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 4

--limit 5/minはログ爆発防止、最大5件/分。

ステップ7:最終DROP

デフォルトポリシーは既にDROP、但し明示的書くはより明確:

sudo iptables -A INPUT -j DROP

ステップ8:ルール保存

iptablesルールはデフォルトでメモリのみ、再起動で消失。Ubuntu/Debianはiptables-persistent使用:

sudo apt install iptables-persistent
sudo netfilter-persistent save

或いは手動保存:

sudo iptables-save > /etc/iptables/rules.v4
sudo ip6tables-save > /etc/iptables/rules.v6  # IPv6ルール

ルール状態確認**

sudo iptables -L -n -v --line-numbers
  • -n:数値表示(ドメイン解決なし、高速)
  • -v:詳細モード(パケット计数表示)
  • --line-numbers:ルール番号表示

出力例:

Chain INPUT (policy DROP 0 packets, 0 bytes)
num  pkts bytes target     prot opt in     out     source               destination
1      42  2848 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state ESTABLISHED,RELATED
2       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
3       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
4       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
5       0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 5/min burst 5 LOG flags 0 level 4 prefix "iptables denied: "
6       0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

UFWとiptables:どちらを選ぶべきか**

これまで説明後、まだ悩むかもしれない:UFWかiptablesか?

核心差異:簡易性vs灵活性

次元UFWiptables
コマンド簡潔度超簡単(ufw allow ssh複雑(iptables -A INPUT -p tcp --dport 22 -j ACCEPT
学習曲線数時間で習得数日〜数週の深学習必要
底层機制iptables/nftables使用iptables直接操作
性能同一(Netfilter依存)同一
NAT/ポートフォワーディング基本サポート、複雑场景不足完全サポート
複雑ルールチェーンカスタムチェーン未サポート完全サポート、多層嵌套可
アプリ設定App Profiles有、便利手動ルール書込必要
IPv6自動処理ip6tables別設定必要
スクリプト管理手動設定向きスクリプト批量展開向き

性能の真相

多くの人はiptables性能優秀と信じるが、底层機制は完全同一——双方Netfilterがカーネルで作業。唯一性能差はルール数量:ルール増、マッチング遅。但し中小サーバーへの影響は微細。

選択アドバイス

UFW推奨场景

  • VPS、クラウドサーバー、専用サーバー
  • ウェブサービス、APIサービス展開
  • 複雑ネットワーク需要なし(NAT、ポートフォワーディングなし)
  • 非専門システム管理者(iptables構文学習不要)
  • 高速セキュリティ設定(緊急攻撃対応等)

iptables推奨场景

  • ゲートウェイ、ルータ、VPNサーバー
  • NAT、ポートフォワーディング、負荷分散必要
  • 複雑ルールチェーン、多層条件判断
  • 大規模展開(数十台サーバースクリプト管理)
  • 高度フィルタリング(パケット内容、レート、時間)
  • 運用チーム(専門ネット設定担当者)

混用可能か?

非推奨。双方同一Netfilterルール操作、混用で容易冲突。

例:iptablesでSSH開放後、UFWでSSH拒否——最後のルールが有効、ロックアウト発生。

混用必須時、ルール順序記憶:UFWルールはbefore.rulesafter.rules間、iptables直接追加ルールはUFWデフォルトルールで覆写可能。


ファイアウォールセキュリティポリシー設計の核心原則**

ツール習熟は第一歩のみ、より重要なのは合理的セキュリティポリシー設計。多くの人はルール適当追加、結果漏洞多数。

原則1:デフォルト拒否(Default Deny)**

これはセキュリティ設定の基石。

核心思想:明示許可除外、全拒否。

逆は「デフォルト許可」——全開後、危険ポート逐一封鎖。この思考は2問題有:

  1. 全危険ポート不明(攻撃者は65535ポート全扫描)
  2. 1ポート漏れ、1隐患残

正解:

# UFW
sudo ufw default deny incoming
sudo ufw default allow outgoing

# iptables
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT

業務必要ポートのみ開放。各ポート開放時、問:このポート用途?源IP制限可能か?

原則2:最小権限原則**

各ルールは1機能、開放範囲は最小化。

ポート開放

  • ufw allow 3306(全世界MySQL接続可能)
  • ufw allow from 192.168.1.100 to any port 3306(特定IPのみ許可)

サービスアクセス

  • ❌ 全内部サービスポート開放
  • ✅ 公開面向サービスのみ(Web、API)、内部サービスは内网或VPNアクセス

SSH管理

  • ufw allow ssh(誰でもログイン試行可能)
  • ufw allow from 会社IP to any port 22 + ufw limit ssh

原則3:多層防御(Defense-in-Depth)**

ファイアウォール万能ではない、第一防御層のみ。完全セキュリティ体系は多層保護必要:

  1. ネットワーク層ファイアウォール(UFW/iptables):恶意トラフィック拦截
  2. アプリケーション層ファイアウォール(WAF):SQL注入、XSS等HTTP層攻撃フィルタ
  3. ホスト層保護(SELinux/AppArmor):プロセス権限制限
  4. 侵入検査(IDS/IPS):リアルタイム異常行動監視
  5. 定期監査:ログ分析、脆弱性扫描

例:ファイアウォールHTTPポート80開放、WAFはHTTPリクエスト内恶意Payload検査、SELinuxはウェブサーバーファイルアクセス権限制限。3層突破後、攻撃者はアプリ層到達——但しアプリはコードセキュリティ有(入力検証、権限検査)。

原則4:ネットワーク分段(Network Segmentation)**

大規模ネットワークは一锅粥不可、区域分割必要。

典型分段モデル:

  • DMZ(Demilitarized Zone):公開面向サービス(ウェブサーバー、メールサーバー)
  • 内部区域:データベース、内部サービス、オフィスネットワーク
  • 管理区域:運用管理、監視、ログ

分段利点:

  1. 故障隔离:DMZ突破、攻撃者は更に1防线突破必要で内部進入
  2. 伝播制限:ワーム virus1区域伝播、越区域はファイアウォール拦截
  3. 権限細化:異区域ユーザーは異アクセス権限

iptables設定分段時、FORWARDチェーンは鍵:

# DMZから内部:DBアクセスのみ許可
iptables -A FORWARD -s dmz_network -d internal_network -p tcp --dport 3306 -j ACCEPT
iptables -A FORWARD -s dmz_network -d internal_network -j DROP

原則5:定期監査と更新**

ファイアウォール設定は一度完了ではない。

ルール審査

  • 月次検査:过期ルール有?(テストポート削除忘れ等)
  • 季度評価:業務変化後、ポート開放合理?
  • 年次重构:冗長ルール清理、性能优化

ログ分析

  • 週次ファイアウォールログ確認:どのIP拦截?理由?
  • 異常トラフィック警告:阈值設定、超過自動通知
  • 攻撃溯源:ログから攻撃源発見、针对性强化

変化対応

  • 新サービス上線:セキュリティリスク評価後ポート開放
  • 攻撃事件:ルール調整、恶意IP封鎖、レート制限追加
  • 業務調整:不要ルール削除、暴露面減少

本番環境実戦:落とし穴回避**

設定流程の安全ステップ**

ステップ1:テスト環境検証

本番サーバーで新ルール直接試験不可。先にテストVM或開発環境設定、問題ない確認後本番適用。

ステップ2:SSH後路保持

設定前SSHポート開放確認。カスタムポート使用時、記憶:

# UFW
ufw allow 2222/tcp  # カスタムSSHポート

# iptables
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

ステップ3:段階的ポート開放

全ポート一度開放不可。核心(SSH)先、ログイン確認、次Webポート、次他サービス。

ステップ4:設定変化記録

各ファイアウォールルール修改記録:

  • 修改時間
  • 修改内容
  • 修改理由
  • 検証結果

Gitでルール設定ファイル管理、或ドキュメント記録。

常見エラーと解決**

エラー1:SSHロックアウト**

症状:ファイアウォール有効化後、SSH切断、再ログイン不可。

原因:SSHポート未開放、或ルール順序誤(DROP後ACCEPT)。

予防

  1. 設定前現SSHポート確認
  2. ufw allow ssh、次ufw enable
  3. iptables使用時、SSHルールDROP前に確保

緊急解決

  • VPS:プロバイダーConsole経由ログイン(SSHバイパス)
  • クラウドサーバー:プロバイダー「Recovery Mode」或「Rescue System」提供
  • 物理サーバー:本地ログイン

エラー2:ルール順序混乱**

症状:ポートにACCEPTルール明記、接続不能。

原因:ルール順序問題、前方DROP先マッチ。

トラブルシューティング

iptables -L -n -v --line-numbers

ルール番号確認、ACCEPTがDROP前にある確認。

解決

# 誤位置ルール削除
iptables -D INPUT 3

# 正位置挿入
iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT

エラー3:設定未永続化**

症状:再起動後ファイアウォールルール全消失。

原因:iptablesルールはデフォルトメモリのみ、再起動で消去。

解決

# Ubuntu/Debian
sudo apt install iptables-persistent
sudo netfilter-persistent save

# CentOS/RHEL
sudo service iptables save

UFWはデフォルト永続化、追加処理不要。

エラー4:IPv6無視**

症状:IPv4正常、IPv6アクセス不可。

原因:iptablesはIPv4のみ設定、IPv6はip6tables必要。

解決

# IPv6ルール(IPv4類似)
sudo ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT

# 保存
sudo ip6tables-save > /etc/iptables/rules.v6

UFWはIPv6自動処理、別設定不要。

トラブルシューティングテクニック**

ファイアウォール設定問題時、この順序で排查:

1. ファイアウォール状態確認

# UFW
sudo ufw status verbose

# iptables
sudo iptables -L -n -v

ファイアウォール有効、ルール正確確認。

2. ポート接続性テスト

# 外部からテスト
telnet server_ip 22
nc -zv server_ip 80

# 本地テスト
sudo netstat -tulnp | grep :22

3. ファイアウォールログ確認

# UFW
tail -f /var/log/ufw.log

# iptables
tail -f /var/log/kern.log | grep "iptables"

拦截リクエスト記録有無確認。

4. 一時無効化排查

# UFW
sudo ufw disable

# iptables
sudo iptables -F

無効化後接続性テスト、ファイアウォール問題或サービス自体問題確認。

注意:ファイアウォール無効化後サーバー完全暴露、排查完了直後復帰!


まとめ:ファイアウォールセキュリティ体系構築**

長々説明後、核心要点整理。

ツール選択**

  • 簡单场景:UFW十分、数分で設定、安心
  • 複雑场景:iptablesより灵活、ゲートウェイ、NAT、高度フィルタリング向き
  • 混用不可:1ツール統一管理選択、ルール冲突回避

設定原則**

  • デフォルト拒否:全インバウンド拒否、必要ポートのみ開放
  • 最小権限:各ルール範囲最小、源IP制限
  • 多層防御:ファイアウォールは第一層、WAF、SELinux多重保護
  • ネットワーク分段:DMZ、内部、管理区域隔离
  • 定期監査:月次ルール検査、季度評価、年次重构

実戦要点**

  • SSH先開放:ファイアウォール設定前SSHポートアクセス確保
  • ルール順序:iptablesルールは具体→一般、順序重要
  • 永続化保存:iptablesルール保存、再起動後自動読込
  • IPv6設定:iptablesは別ip6tables設定、UFW自動処理
  • テスト環境検証:本番設定前テスト環境試験
  • ログ保持:ファイアウォールログ有効、定期的異常トラフィック分析

次歩学習**

ファイアウォールとサーバーセキュリティ深化希望時、探索:

  • nftables:iptablesの現代代替、構文より統一、性能向上
  • firewalld:動的ファイアウォール管理、実行時修改支援
  • WAF設定:Nginx ModSecurity、Cloudflare WAF
  • 侵入検査:Fail2ban(自動ブルートフォース封鎖)、OSSEC
  • SELinux/AppArmor:ホスト層権限制御

ファイアウォール設定はサーバーセキュリティの基盤。UFWとiptables用法習熟、セキュリティポリシー設計原則理解、サーバーは扉全開の家にならず、誰でも出入り可能状態回避。深夜3時アラートSMS事件も減少可能。


完全Linuxファイアウォール設定流程

ゼロからUFW或iptablesファイアウォール設定、サーバーセキュリティ保護

⏱️ 目安時間: 30 分

  1. 1

    ステップ1: デフォルトポリシー設定

    デフォルト全インバウンド接続拒否、全アウトバウンド許可:

    • UFW: `sudo ufw default deny incoming`と`sudo ufw default allow outgoing`
    • iptables: `sudo iptables -P INPUT DROP`と`sudo iptables -P OUTPUT ACCEPT`
    • これはセキュリティ設定の基石、必要ポートのみ開放確保
  2. 2

    ステップ2: SSHポート開放

    ファイアウォール設定前にSSH開放、ロックアウト回避:

    • UFW: `sudo ufw allow ssh`或`sudo ufw allow 22/tcp`
    • iptables: `sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT`
    • カスタムポートは対応ポート変更記憶(例2222)
  3. 3

    ステップ3: サービスポート開放

    ウェブサービスと他必要ポート開放:

    • HTTP: `sudo ufw allow 80/tcp`或`sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT`
    • HTTPS: `sudo ufw allow 443/tcp`或`sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT`
    • 他サービスは必要開放、源IP制限試行
  4. 4

    ステップ4: ファイアウォール有効化と検証

    ファイアウォール有効化と状態確認:

    • UFW: `sudo ufw enable`次`sudo ufw status verbose`
    • iptables: ルール確認`sudo iptables -L -n -v --line-numbers`
    • ルール正確且ファイアウォールactive状態確認
  5. 5

    ステップ5: 永続化ルール保存

    iptablesルールはデフォルト非永続化、再起動消失:

    • Ubuntu/Debian: `sudo apt install iptables-persistent`次`sudo netfilter-persistent save`
    • 手動保存: `sudo iptables-save > /etc/iptables/rules.v4`
    • UFWはデフォルト永続化、追加操作不要

FAQ

UFWとiptablesは同時使用可能?
混用非推奨。双方同一Netfilterルール操作、容易冲突。例:iptablesでSSH開放後、UFWでSSH拒否——最後ルール有効、ロックアウト可能。1ツール統一管理選択。
UFWとiptablesに性能差有?
性能完全同一。UFW底层はiptables/nftables、双方Netfilterがカーネル作業。唯一性能差はルール数量:ルール増、マッチング遅。但し中小サーバー影響微細。
ファイアウォール設定時ロックアウト対応?
緊急解決はサーバータイプ依存:

• VPS/クラウドサーバー:プロバイダーConsole経由ログイン(SSHバイパス)
• 物理サーバー:本地ログイン
• 予防:設定前`ufw allow ssh`実行、次`ufw enable`;iptablesはSSHルールDROP前に確保
iptablesルール再起動後消失対応?
iptablesルールはデフォルトメモリのみ、再起動消去。解決:Ubuntu/Debianは`iptables-persistent`インストール、`netfilter-persistent save`実行;或手動`iptables-save > /etc/iptables/rules.v4`。UFWはデフォルト永続化。
UFWのlimitコマンド意味?
レート制限機能、ブルートフォース防止。例`sudo ufw limit ssh`:あるIPが30秒内6回以上接続試行、一時封鎖。単純`allow ssh`より大幅安全。
何时iptables選択べき?
以下场景iptables使用:

• NAT、ポートフォワーディング、負荷分散
• 複雑ルールチェーン、多層条件判断
• ゲートウェイ、ルータ、VPNサーバー
• 大規模展開(数十台サーバースクリプト管理)
• 高度フィルタリング(パケット内容、レート、時間)

他场景(VPS、Webサービス)UFW十分且より簡易。
ファイアウォール設定最適セキュリティ原則?
核心原則:

• デフォルト拒否(Default Deny):全インバウンド拒否、必要ポートのみ開放
• 最小権限:各ルール範囲最小、源IP制限
• 多層防御:ファイアウォール + WAF + SELinux多重保護
• 定期監査:月次ルール検査、季度評価、年次重构

参考文献**

11 min read · 公開日: 2026年4月3日 · 更新日: 2026年4月5日

コメント

GitHubアカウントでログインしてコメントできます

関連記事