Linux UFWコマンド完全ガイド!簡単ファイアウォール設定をマスターしよう

Linuxサーバーのセキュリティを高めるには、ファイアウォールの設定が欠かせません。

でも、iptablesのコマンドは複雑で覚えにくいですよね。

「もっと簡単にファイアウォールを設定したい」
「ポートを開くだけなのに、なぜこんなに難しいの?」
「初心者でも使える方法はないかな?」

そんな方におすすめなのが、UFW(Uncomplicated Firewall)です。

この記事では、UFWコマンドについて、初心者の方にも分かりやすく、基本から実践的な使い方まで詳しく解説していきます。

スポンサーリンク
  1. UFWとは?ファイアウォール設定を「簡単に」するツール
    1. UFWの基本的な意味
    2. なぜUFWが便利なのか
    3. UFWとiptablesの関係
  2. UFWのインストール
    1. Ubuntuの場合
    2. Debian系の場合
    3. CentOS/AlmaLinux/RHEL系の場合
    4. インストール後の確認
  3. UFWの基本的な使い方
    1. UFWの有効化と無効化
    2. ステータスの確認
  4. デフォルトポリシーの設定
    1. デフォルトポリシーとは
    2. 推奨設定
    3. 確認方法
  5. ポートの開放(許可)
    1. 基本的な書式
    2. よく使うポートの開放
    3. ポート範囲の指定
    4. プロトコルを指定しない場合
  6. 特定の条件での許可
    1. 特定のIPアドレスからのみ許可
    2. サブネット全体を許可
    3. 特定のインターフェースのみ許可
  7. ポートのブロック(拒否)
    1. 基本的な拒否
    2. 特定のIPアドレスをブロック
    3. rejectとdenyの違い
  8. ルールの削除
    1. 番号指定で削除
    2. ルールを直接指定して削除
  9. アプリケーションプロファイル
    1. プロファイルとは
    2. 利用可能なプロファイルの確認
    3. プロファイルの詳細確認
    4. プロファイルを使った設定
  10. ログ機能
    1. ログの有効化
    2. ログレベルの設定
    3. ログの確認
    4. ログの無効化
  11. 実践的な設定例
    1. Webサーバーの基本設定
    2. SSHを特定のIPからのみ許可
    3. データベースサーバーの設定
    4. メールサーバーの設定
  12. トラブルシューティング
    1. SSH接続が切れてしまった
    2. ルールが反映されない
    3. 設定を初期化したい
    4. iptablesと競合する
  13. UFWの詳細設定
    1. ルールの挿入(優先順位の変更)
    2. レート制限(DDoS対策)
    3. IPv6への対応
  14. UFWとfirewalld
    1. 設計思想の違い
    2. どちらを使うべきか
  15. まとめ:UFWで簡単にセキュリティを強化しよう

UFWとは?ファイアウォール設定を「簡単に」するツール

UFWの基本的な意味

UFWは「Uncomplicated Firewall(複雑でないファイアウォール)」の略称です。

名前の通り、複雑なファイアウォール設定を簡単にするために作られたツールです。

Linuxの標準的なファイアウォール機能(iptables)を、分かりやすいコマンドで操作できるようにしています。

簡単に言えば、iptablesの「翻訳機」のようなものだと考えてください。

なぜUFWが便利なのか

従来のiptablesコマンドは、このように複雑です:

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

同じことをUFWでは、こう書けます:

sudo ufw allow 80/tcp

圧倒的に分かりやすいですよね。

UFWとiptablesの関係

UFWは、iptablesを置き換えるものではありません。

内部的にはiptablesを使っていますが、その複雑な部分を隠してくれているのです。

イメージ:

あなた → UFWコマンド → iptables → Linuxカーネル

UFWが間に入ることで、直接iptablesを触る必要がなくなります。

UFWのインストール

まず、UFWをインストールしましょう。

Ubuntuの場合

Ubuntuでは、最初からインストールされていることが多いです。

確認方法:

ufw version

バージョン情報が表示されればインストール済みです。

インストールが必要な場合:

sudo apt update
sudo apt install ufw

Debian系の場合

sudo apt install ufw

CentOS/AlmaLinux/RHEL系の場合

CentOS系では、EPELリポジトリからインストールできます。

sudo dnf install epel-release
sudo dnf install ufw

インストール後の確認

sudo ufw status

「Status: inactive」と表示されれば、正常にインストールされています。

UFWの基本的な使い方

まずは基本操作から学びましょう。

UFWの有効化と無効化

有効化:

sudo ufw enable

この瞬間から、UFWが動作し始めます。

警告: SSH経由で接続している場合、先にSSHポートを開いておかないと、自分をロックアウトしてしまいます!

無効化:

sudo ufw disable

ファイアウォールを完全に停止します。

ステータスの確認

簡易表示:

sudo ufw status

現在の状態(有効/無効)と、設定されているルールが表示されます。

詳細表示:

sudo ufw status verbose

デフォルトポリシーなど、より詳しい情報が見られます。

番号付きで表示:

sudo ufw status numbered

ルールに番号が付くため、削除する時に便利です。

デフォルトポリシーの設定

すべてのルールの「基本方針」を決めます。

デフォルトポリシーとは

個別に許可・拒否を指定していない通信について、どうするかを決める設定です。

セキュリティの基本原則:

  • 外部からの接続はすべて拒否
  • 内部からの接続はすべて許可

これが最も安全な設定です。

推奨設定

sudo ufw default deny incoming
sudo ufw default allow outgoing

意味:

  • 外部から入ってくる通信は拒否(deny incoming)
  • 内部から出ていく通信は許可(allow outgoing)

この設定により、必要なポートだけを個別に開くことになります。

確認方法

sudo ufw status verbose

以下のように表示されます:

Default: deny (incoming), allow (outgoing), disabled (routed)

ポートの開放(許可)

サービスを公開するために、ポートを開きます。

基本的な書式

sudo ufw allow ポート番号/プロトコル

よく使うポートの開放

SSH(22番ポート):

sudo ufw allow 22/tcp

または、サービス名で指定:

sudo ufw allow ssh

HTTP(80番ポート):

sudo ufw allow 80/tcp

または:

sudo ufw allow http

HTTPS(443番ポート):

sudo ufw allow 443/tcp

または:

sudo ufw allow https

複数のポートを一度に開く:

sudo ufw allow 80,443/tcp

ポート範囲の指定

連続したポートをまとめて開けます。

sudo ufw allow 6000:6010/tcp

6000番から6010番までのTCPポートが開きます。

プロトコルを指定しない場合

プロトコルを省略すると、TCPとUDPの両方が開きます。

sudo ufw allow 53

これは、以下と同じ意味です:

sudo ufw allow 53/tcp
sudo ufw allow 53/udp

特定の条件での許可

より細かい制御ができます。

特定のIPアドレスからのみ許可

特定のIPからのすべての接続を許可:

sudo ufw allow from 192.168.1.100

特定のIPから特定のポートへの接続を許可:

sudo ufw allow from 192.168.1.100 to any port 22

これで、192.168.1.100からのSSH接続だけが許可されます。

サブネット全体を許可

192.168.1.0/24の範囲全体を許可:

sudo ufw allow from 192.168.1.0/24

社内ネットワークからのアクセスを許可する場合などに便利です。

特定のインターフェースのみ許可

eth0からの接続だけを許可:

sudo ufw allow in on eth0 to any port 80

複数のネットワークインターフェースがある場合に使います。

ポートのブロック(拒否)

特定の通信を明示的に拒否します。

基本的な拒否

sudo ufw deny 25/tcp

メールサーバー機能を使わない場合、SMTPポート(25番)を閉じておくと安全です。

特定のIPアドレスをブロック

攻撃元のIPをブロック:

sudo ufw deny from 203.0.113.10

特定のIPから特定のポートへのアクセスをブロック:

sudo ufw deny from 203.0.113.10 to any port 22

rejectとdenyの違い

deny:
パケットを破棄し、応答しません(DROP)。

reject:
接続を拒否して、エラーメッセージを返します(REJECT)。

sudo ufw reject 25/tcp

通常はdenyの方が安全です(攻撃者に情報を与えない)。

ルールの削除

不要になったルールを削除します。

番号指定で削除

手順1:番号付きでルールを表示

sudo ufw status numbered

出力例:

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere

手順2:番号を指定して削除

sudo ufw delete 2

2番のルール(HTTPの80番ポート)が削除されます。

確認メッセージが表示されるので、yを入力します。

ルールを直接指定して削除

追加した時と同じコマンドにdeleteを付けます。

追加時:

sudo ufw allow 8080/tcp

削除時:

sudo ufw delete allow 8080/tcp

アプリケーションプロファイル

よく使うサービスを簡単に設定できます。

プロファイルとは

UFWには、主要なサービス用の設定がプロファイルとして登録されています。

ポート番号を覚えなくても、サービス名で設定できます。

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

sudo ufw app list

出力例:

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

プロファイルの詳細確認

sudo ufw app info "Nginx Full"

どのポートが開かれるか確認できます。

プロファイルを使った設定

sudo ufw allow "OpenSSH"

または:

sudo ufw allow "Nginx Full"

これで、HTTPとHTTPSの両方のポートが開きます。

ログ機能

ブロックされた通信を記録します。

ログの有効化

sudo ufw logging on

ログレベルの設定

sudo ufw logging low
sudo ufw logging medium
sudo ufw logging high
  • low: 最小限のログ
  • medium: 標準的なログ(推奨)
  • high: 詳細なログ

高すぎるレベルに設定すると、ログファイルが肥大化します。

ログの確認

sudo tail -f /var/log/ufw.log

リアルタイムでブロックされた通信を確認できます。

ログの無効化

sudo ufw logging off

実践的な設定例

実際のサーバー構築での使用例です。

Webサーバーの基本設定

# デフォルトポリシー設定
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH接続を許可(ロックアウト防止)
sudo ufw allow 22/tcp

# HTTP/HTTPS を許可
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# UFWを有効化
sudo ufw enable

SSHを特定のIPからのみ許可

# デフォルトポリシー設定
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 自宅のIPアドレスからのSSHだけ許可
sudo ufw allow from 203.0.113.5 to any port 22

# Webサービスは全開放
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# UFWを有効化
sudo ufw enable

データベースサーバーの設定

# デフォルトポリシー設定
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 管理用SSH
sudo ufw allow 22/tcp

# Webサーバー(192.168.1.10)からのMySQLアクセスのみ許可
sudo ufw allow from 192.168.1.10 to any port 3306

# UFWを有効化
sudo ufw enable

メールサーバーの設定

# デフォルトポリシー設定
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH
sudo ufw allow 22/tcp

# SMTP
sudo ufw allow 25/tcp

# SMTP over TLS
sudo ufw allow 587/tcp

# IMAP over SSL
sudo ufw allow 993/tcp

# POP3 over SSL
sudo ufw allow 995/tcp

# UFWを有効化
sudo ufw enable

トラブルシューティング

よくある問題と解決方法です。

SSH接続が切れてしまった

原因:
SSH用のポート(22番)を開かずにUFWを有効化してしまいました。

対処法:

VPSやクラウドサービスの場合、コンソールアクセス(Webブラウザから操作できる画面)を使います。

sudo ufw allow 22/tcp
sudo ufw reload

予防策:
UFWを有効化する前に、必ずSSHポートを開いておきましょう。

ルールが反映されない

原因:
UFWが有効になっていないか、ルールの順序の問題です。

対処法:

まず、UFWが有効か確認:

sudo ufw status

ルールを追加した後、リロード:

sudo ufw reload

設定を初期化したい

すべてのルールを削除:

sudo ufw reset

確認メッセージでyを入力すると、すべての設定がクリアされます。

注意: UFWは無効化されるので、再度設定が必要です。

iptablesと競合する

原因:
iptablesを直接編集していると、UFWと競合することがあります。

対処法:

UFWだけを使うか、iptablesだけを使うか、どちらかに統一しましょう。

UFWを使う場合は、iptablesの直接編集は避けます。

UFWの詳細設定

より高度な設定方法です。

ルールの挿入(優先順位の変更)

ルールは上から順に評価されるため、順序が重要です。

特定の位置にルールを挿入:

sudo ufw insert 1 allow from 192.168.1.100

1番目の位置にルールが追加されます。

レート制限(DDoS対策)

短時間に大量の接続を試みるIPを自動的にブロックします。

sudo ufw limit 22/tcp

これで、30秒間に6回以上の接続を試みたIPは一時的にブロックされます。

SSHへのブルートフォース攻撃対策に有効です。

IPv6への対応

UFWは、デフォルトでIPv6にも対応しています。

設定ファイル:

sudo nano /etc/default/ufw

IPV6=yesになっていることを確認します。

UFWとfirewalld

CentOS系でよく使われるfirewalldとの違いです。

設計思想の違い

UFW:

  • シンプルで分かりやすい
  • Ubuntu/Debian系で標準
  • 学習コストが低い

firewalld:

  • ゾーンベースの管理
  • RHEL/CentOS系で標準
  • より柔軟だが複雑

どちらを使うべきか

使用しているディストリビューションの標準に合わせるのが無難です。

  • Ubuntu/Debian → UFW
  • CentOS/AlmaLinux/RHEL → firewalld

ただし、どちらも両方のディストリビューションにインストール可能です。

まとめ:UFWで簡単にセキュリティを強化しよう

UFWコマンドについて、重要なポイントをおさらいしましょう。

UFWとは:

  • Uncomplicated Firewall(複雑でないファイアウォール)
  • iptablesを簡単に操作できるツール
  • 初心者でも扱いやすい

基本的なコマンド:

sudo ufw enable              # 有効化
sudo ufw disable             # 無効化
sudo ufw status              # ステータス確認
sudo ufw allow 80/tcp        # ポート開放
sudo ufw deny 25/tcp         # ポート拒否
sudo ufw delete allow 80/tcp # ルール削除

デフォルトポリシー(推奨):

sudo ufw default deny incoming
sudo ufw default allow outgoing

実用的な設定例:

# Webサーバーの基本設定
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

特定条件の設定:

# 特定のIPからのみSSH許可
sudo ufw allow from 192.168.1.100 to any port 22

# レート制限でブルートフォース対策
sudo ufw limit 22/tcp

トラブル回避:

  • UFW有効化の前にSSHポートを開く
  • リモート接続時は特に注意
  • 設定後は必ず動作確認

便利な機能:

  • アプリケーションプロファイル
  • ログ機能
  • 番号指定でのルール削除
  • レート制限

UFWは、iptablesの複雑さを隠して、直感的にファイアウォールを設定できる優れたツールです。

サーバーのセキュリティを高めるために、ぜひUFWを活用してください。

まずは基本的な設定から始めて、徐々に高度な機能を使いこなせるようになりましょう!

最後の注意: UFWを有効化する前に、必ずSSHポートを開くことを忘れずに!

コメント

タイトルとURLをコピーしました