Ubuntuファイアウォール(UFW)入門:確認・有効化・設定

はい、承知いたしました。Ubuntuファイアウォール(UFW)に関する詳細な入門記事を約5000語で記述します。記事の内容を直接ここに表示します。


Ubuntuファイアウォール(UFW)入門:確認・有効化・設定

はじめに:なぜファイアウォールが必要なのか?

インターネットに接続されたサーバーやコンピュータは、常に外部からの様々な脅威にさらされています。不正アクセス、マルウェアの侵入、サービス妨害攻撃(DDoS攻撃)など、これらの脅威はシステムを侵害し、情報漏洩、データの破壊、サービスの停止といった重大な損害を引き起こす可能性があります。

このような脅威からシステムを保護するための最も基本的なセキュリティ対策の一つが「ファイアウォール」です。ファイアウォールは、ネットワークの交通整理を行う関所のような役割を果たします。設定されたルールに基づいて、通過するネットワークパケット(通信データ)を監視し、許可された通信のみを通し、不正または不要な通信をブロックします。

Ubuntuには、標準で高性能なファイアウォール機能が搭載されています。その中でも、コマンドラインから直感的かつ簡単にファイアウォールを設定・管理できるツールが「UFW (Uncomplicated Firewall)」です。UFWはその名の通り、「複雑でないファイアウォール」を目指して開発されており、Linuxの低レベルなパケットフィルタリングツールであるiptablesの複雑な設定を、より分かりやすいコマンドで扱えるように抽象化しています。

この入門記事では、UbuntuにおけるUFWの基本的な使い方、すなわち「現在の状態を確認する方法」「ファイアウォールを有効にする方法」「具体的な通信ルールを設定する方法」について、詳細かつ網羅的に解説します。約5000語というボリュームで、UFWの基本から応用的な設定まで、初心者の方でも安心して読み進められるように、多くの具体例と注意点を交えて説明します。

UFWの基本概念

UFWを使い始める前に、いくつかの基本的な概念を理解しておくことが重要です。

  1. デフォルトポリシー (Default Policy):
    UFWが有効になった際に、明示的に許可または拒否されていない 全ての 通信に対して適用される基本方針です。主なポリシーには以下の3つがあります。

    • deny (拒否): 明示的に許可されていない 全ての 通信を拒否します。最も安全な設定であり、通常推奨されます。必要な通信(SSH、Webなど)だけを個別に許可する運用になります。
    • allow (許可): 明示的に拒否されていない 全ての 通信を許可します。これは非常に危険な設定であり、ファイアウォールが無効であるのとほぼ同じ状態になります。特殊な状況以外では絶対に使用しないでください。
    • reject (破棄/応答): deny と同様に通信をブロックしますが、通信元に対して「通信できませんでした」というエラーメッセージ(例: ICMP Port Unreachable, TCP Reset)を返します。deny は単にパケットを破棄し、通信元には何も知らせません(タイムアウトのように見える)。セキュリティ上の理由から、通常は通信元に情報を与えない deny が推奨されますが、デバッグなどの目的で reject が使われることもあります。
      デフォルトポリシーは、送られてくる通信(着信、incoming)と、システムから外に出ていく通信(発信、outgoing)に対して個別に設定できます。多くの場合、着信は deny、発信は allow に設定されます。
  2. ルール (Rules):
    デフォルトポリシーよりも優先される、特定の条件に基づいた通信の許可または拒否の設定です。「どのプロトコルの、どのポートへの/からの通信を、どのIPアドレスから/へ、許可/拒否するか」といった具体的な条件を指定します。ルールは上から順番に評価され、最初に一致したルールが適用されます。

  3. プロファイル (Application Profiles):
    一般的なアプリケーション(例: OpenSSH, Apache, Nginx)が必要とするファイアウォール設定をまとめた定義済みルール群です。/etc/ufw/applications.d/ ディレクトリにファイルとして格納されています。これを利用することで、アプリケーション名を使って簡単に必要なポートを開けることができます。例: ufw allow OpenSSH とすることで、SSH通信に必要なポート22/tcpが自動的に許可されます。

これらの基本概念を理解していれば、UFWの設定がスムーズに進められます。

UFWのインストール

多くのUbuntuバージョンでは、UFWは標準でプリインストールされています。もしインストールされていない場合、以下のコマンドでインストールできます。

bash
sudo apt update
sudo apt install ufw

通常はこの手順は不要ですが、もしUFWコマンドが見つからない場合は実行してください。

UFWの状態確認 (ufw status)

UFWを操作する上で最も頻繁に使用するコマンドは、現在のUFWの状態を確認するための ufw status コマンドです。

基本的なステータス確認

UFWが有効になっているか、無効になっているかを確認します。

bash
sudo ufw status

実行例1:UFWが無効な場合

Status: inactive

この場合、UFWは現在動作しておらず、ファイアウォール機能は無効です。すべての通信(特に着信)が許可されている可能性が高いです。

実行例2:UFWが有効な場合(ルールが何も設定されていない初期状態)

Status: active

この状態でも、具体的なルールが設定されていない場合は、デフォルトポリシーが適用されます。有効化直後は、通常デフォルトポリシーが「着信拒否」「発信許可」になっていることが多いです。

実行例3:UFWが有効な場合(ルールが設定されている場合)

“`
Status: active

To Action From
— —— —-
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
“`

この例では、UFWが有効で、いくつかのルール(TCPの22番、80番、443番ポートへの通信をAnywhere=どこからでも許可する)が設定されていることがわかります。(v6) はIPv6に対するルールであることを示します。

詳細なステータス確認 (ufw status verbose)

verbose オプションを付けると、UFWのデフォルトポリシーやロギング設定なども含めた、より詳細な情報を確認できます。

bash
sudo ufw status verbose

実行例:

“`
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To Action From
— —— —-
22/tcp ALLOW IN Anywhere # SSH
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6) # SSH
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
“`

この出力から、以下の情報がわかります。

  • Status: active: UFWは有効です。
  • Logging: on (low): ロギングが有効で、レベルはlowです。ファイアウォールによってブロックされた通信などがログファイルに記録されます。
  • Default: deny (incoming), allow (outgoing), disabled (routed):
    • 着信 (incoming) のデフォルトポリシーは deny (拒否) です。明示的に許可されていない外部からの通信は全てブロックされます。
    • 発信 (outgoing) のデフォルトポリシーは allow (許可) です。システムから外部への通信は、明示的に拒否されていない限り許可されます。
    • ルーティングされる通信 (routed) のデフォルトポリシーは disabled (無効) です。これは、このシステムがルーターとして機能しない限り通常は関係ありません。
  • New profiles: skip: 新しいアプリケーションプロファイルが追加された際の挙動を示します。
  • ルール一覧: 具体的な許可/拒否ルールが表示されます。ALLOW IN は着信を許可するルールであることを示します。# SSH のようなコメントも表示されます。

この verbose オプションは、UFWの全体的な設定状況を把握するために非常に役立ちます。

番号付きステータス確認 (ufw status numbered)

ルールの削除や挿入を行う際には、ルール番号を指定することがあります。numbered オプションを使用すると、各ルールの前に番号が表示されます。

bash
sudo ufw status numbered

実行例:

“`
Status: active

 To                         Action      From
 --                         ------      ----

[ 1] 22/tcp ALLOW IN Anywhere # SSH
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
[ 4] 22/tcp (v6) ALLOW IN Anywhere (v6) # SSH
[ 5] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 6] 443/tcp (v6) ALLOW IN Anywhere (v6)
“`

このように、ルールの左側に [ ] で囲まれた番号が表示されます。この番号は、後述するルールの削除 (ufw delete <number>) や挿入 (ufw insert <number> <rule>) コマンドで使用します。

確認セクションのまとめ:

ufw status コマンドは、UFWが有効か無効か、そしてどのようなルールが設定されているかを確認するための基本です。verbose オプションでデフォルトポリシーやロギング設定を、numbered オプションでルールの番号を確認できます。UFWの設定を変更する前や後に、必ずこれらのコマンドで現状を確認する習慣をつけましょう。

UFWの有効化 (ufw enable)

UFWはインストールしただけではファイアウォール機能は有効になりません。手動で有効化する必要があります。UFWを有効にするには、以下のコマンドを実行します。

bash
sudo ufw enable

このコマンドを実行すると、以下のような確認メッセージが表示されます。

Command may disrupt existing SSH connections. Proceed with operation (y|n)?

これは、「このコマンドを実行すると、既存のSSH接続が切断される可能性があります。続行しますか? (y|n)?」という警告です。なぜこのような警告が出るかというと、UFWを有効にすると、それまで無制限に許可されていた 全ての 着信通信が、デフォルトポリシー(通常は deny)に従ってブロックされるようになるからです。もしSSH接続(デフォルトポートは22番)を許可するルールを事前に設定していない場合、UFWを有効にした瞬間にSSH接続が切断され、サーバーにリモートからアクセスできなくなる可能性があります。

UFW有効化前の重要な注意点:SSH接続の維持

リモートからSSHでサーバーに接続して作業している場合、UFWを有効にする前に 必ず SSH接続を許可するルールを設定してください。さもなければ、有効化した瞬間にサーバーへのアクセスを失うことになります。

SSH接続を許可する最も一般的な方法は、SSHポート(通常22番)へのTCP通信を許可することです。

bash
sudo ufw allow 22/tcp

または、アプリケーションプロファイルを使用することもできます。UbuntuにOpenSSHサーバーがインストールされていれば、OpenSSH というプロファイルが利用可能です。

bash
sudo ufw allow OpenSSH

これらのコマンドを実行すると、SSH接続に必要なポートがUFWのルールとして追加されます。(ルール追加の方法については後述の「UFWの設定」セクションで詳しく説明します。)

SSHポートを変更している場合: もしSSHサーバーのポート番号をデフォルトの22番から変更している場合は、その変更後のポート番号を許可する必要があります。例えば、SSHポートを2222番に変更している場合は、以下のコマンドを実行します。

bash
sudo ufw allow 2222/tcp

SSH接続を許可するルールを設定し、sudo ufw status コマンドでルールが追加されていることを確認してからsudo ufw enable コマンドを実行してください。

“`bash

SSHポートを許可するルールを追加 (例: デフォルトの22番)

sudo ufw allow 22/tcp

ルールが追加されたことを確認

sudo ufw status numbered

出力例で [1] 22/tcp ALLOW IN Anywhere などが表示されているか確認

UFWを有効化

sudo ufw enable
“`

sudo ufw enable を実行し、「Proceed with operation (y|n)?」と表示されたら、y と入力して Enterキーを押します。

bash
Command may disrupt existing SSH connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

これでUFWが有効になりました。「Firewall is active and enabled on system startup」というメッセージは、UFWが有効になり、システムの起動時にも自動的に有効になるように設定されたことを示します。

有効化後、再度 sudo ufw status で状態を確認しましょう。

bash
sudo ufw status verbose

Status: active となり、デフォルトポリシーが適用され、追加したSSHの許可ルールが表示されているはずです。

UFW有効化の仕組み

ufw enable コマンドを実行すると、以下の処理が行われます。

  1. UFWの設定ファイル (/etc/ufw/ufw.conf など) を読み込みます。
  2. 設定されているデフォルトポリシーとルールに基づいて、Linuxカーネルのnetfilterフレームワーク(通常はiptablesnftablesによって制御される)にパケットフィルタリングルールを適用します。
  3. UFWサービスが有効化され、システムの起動時に自動的に開始されるように設定されます。

これにより、UFWがネットワークトラフィックの監視とフィルタリングを開始します。

有効化セクションのまとめ:

UFWを有効にするには sudo ufw enable コマンドを使用します。しかし、リモートからSSH接続している場合は、必ず事前にSSH接続を許可するルールを設定してから有効化してください。そうしないと、サーバーにアクセスできなくなる可能性があります。SSHポートの許可には sudo ufw allow 22/tcpsudo ufw allow OpenSSH が便利です。

UFWの設定:ルールの追加・削除・変更

UFWの核となる部分は、特定の通信を許可または拒否する「ルール」を設定することです。ここでは、様々なルールの設定方法とその管理について詳しく解説します。

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

前述の通り、デフォルトポリシーは明示的なルールが適用されない通信に対する基本方針です。通常、着信は拒否 (deny)、発信は許可 (allow) に設定します。UFWを有効化した直後は、この設定になっていることが多いですが、念のため確認・設定方法を覚えておきましょう。

デフォルトの着信ポリシーを拒否に設定:
bash
sudo ufw default deny incoming

デフォルトの発信ポリシーを許可に設定:
bash
sudo ufw default allow outgoing

これらのコマンドは、既存のルールには影響しません。あくまで、どのルールにも一致しなかった場合の最終的な判断を指定します。セキュリティの観点から、着信ポリシーは必ず deny に設定し、必要な通信だけを個別に許可していくのがベストプラクティスです。

ルールの追加:基本的な許可と拒否

最も基本的なルールは、特定のポートやサービスへのアクセスを許可または拒否することです。

特定のポートを許可する

最も一般的な設定は、特定のサービスが使用するポートへのアクセスを許可することです。

構文: sudo ufw allow [port][/protocol]

  • [port]: 許可したいポート番号(例: 80, 443, 22)またはサービス名(例: http, https, ssh)。
  • [/protocol]: プロトコル (tcp または udp) を指定します。省略した場合、TCPとUDPの両方が対象となります。

例:HTTP (80番ポート) へのTCP通信を許可する
bash
sudo ufw allow 80/tcp

またはサービス名で指定
bash
sudo ufw allow http

例:HTTPS (443番ポート) へのTCP通信を許可する
bash
sudo ufw allow 443/tcp

またはサービス名で指定
bash
sudo ufw allow https

例:SSH (22番ポート) へのTCP通信を許可する (有効化前に設定すべきルール)
bash
sudo ufw allow 22/tcp

またはサービス名で指定
bash
sudo ufw allow ssh

例:DNS (53番ポート) へのUDP通信を許可する
bash
sudo ufw allow 53/udp

例:特定のポート番号でTCPとUDPの両方を許可する
bash
sudo ufw allow 1234

これは ufw allow 1234/tcpufw allow 1234/udp を同時に実行するのと同等です。

これらのコマンドを実行すると、指定したポートへの着信通信が許可されます。sudo ufw status verbose または sudo ufw status numbered でルールが追加されたことを確認しましょう。

特定のポートを拒否する

デフォルトポリシーが allow の場合に特定の通信だけをブロックしたい、あるいはデフォルトポリシーが deny の場合でも特定の不正な通信元からのアクセスを明示的に拒否したい、といった状況で使用します。

構文: sudo ufw deny [port][/protocol]

例:特定のポート (例: 1234番) へのTCP通信を拒否する
bash
sudo ufw deny 1234/tcp

デフォルトポリシーが deny の場合、通常は個別の拒否ルールを追加する必要はありませんが、特定の送信元IPからのアクセスを拒否するといった詳細な設定を行う場合に利用します。

拒否と破棄 (deny vs reject)

deny の代わりに reject を使うこともできます。

構文: sudo ufw reject [port][/protocol]

例:特定のポート (例: 1234番) へのTCP通信を破棄し、通信元に通知する
bash
sudo ufw reject 1234/tcp

前述の通り、通常は情報を与えない deny が推奨されます。

特定のIPアドレスからのアクセス制御

特定のIPアドレスやIPアドレス範囲からの通信のみを許可/拒否したい場合があります。

特定のIPアドレスからのアクセスを許可する

構文: sudo ufw allow from [ip address]

例:特定のIPアドレス 192.168.1.100 からの 全ての 着信通信を許可する
bash
sudo ufw allow from 192.168.1.100

特定のIPアドレスからのアクセスを拒否する

構文: sudo ufw deny from [ip address]

例:特定のIPアドレス 192.168.1.200 からの 全ての 着信通信を拒否する
bash
sudo ufw deny from 192.168.1.200

特定のIPアドレス範囲 (サブネット) からのアクセスを制御する

CIDR (Classless Inter-Domain Routing) 表記を使ってIPアドレス範囲を指定できます。

構文: sudo ufw allow/deny from [ip address/subnet]

例:192.168.1.0 から 192.168.1.255 までの範囲 (192.168.1.0/24) からの 全ての 着信通信を許可する
bash
sudo ufw allow from 192.168.1.0/24

例:10.0.0.0 から 10.255.255.255 までの範囲 (10.0.0.0/8) からの 全ての 着信通信を拒否する
bash
sudo ufw deny from 10.0.0.0/8

IPアドレスとポートを組み合わせたルール

最もきめ細かい制御は、特定のIPアドレスから特定のポートへの通信を許可/拒否することです。

構文: sudo ufw allow/deny from [ip address] to any port [port][/protocol]

  • to any port [port]: 通信先(ローカルシステム)のポートを指定します。any はローカルシステムの任意のアドレスを意味します。

例:IPアドレス 192.168.1.100 から、このサーバーのSSHポート (22番) へのTCP通信のみを許可する
bash
sudo ufw allow from 192.168.1.100 to any port 22/tcp

例:IPアドレス範囲 192.168.1.0/24 から、このサーバーのHTTPポート (80番) へのTCP通信のみを許可する
bash
sudo ufw allow from 192.168.1.0/24 to any port 80/tcp

これは、特定の信頼できるネットワークやIPアドレスからの特定のサービスへのアクセスのみを許可する場合に非常に役立ちます。例えば、データベースサーバーのポートは、アプリケーションサーバーのIPアドレスからのみ許可するといった設定です。

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

特定のアプリケーションに必要なポート設定を、そのアプリケーション名を使って簡単に追加できます。

利用可能なアプリケーションプロファイルの一覧表示

システムにインストールされているアプリケーションのうち、UFWのプロファイルが定義されているものを一覧表示します。

bash
sudo ufw app list

実行例:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Nginx Full
Nginx HTTP
Nginx HTTPS
CUPS
Postfix
Postfix SMTPS
Postfix Submission
...

アプリケーションプロファイルの詳細表示

特定のアプリケーションプロファイルがどのポートとプロトコルを使用するかを確認できます。

構文: sudo ufw app info [profile name]

例:OpenSSHプロファイルの詳細を確認する
bash
sudo ufw app info OpenSSH

実行例:
“`
Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a FREE implementation of the Secure Shell protocol.

Ports:
22/tcp
“`
この出力から、OpenSSHプロファイルはTCPの22番ポートを使用することがわかります。

例:Apache Fullプロファイルの詳細を確認する
bash
sudo ufw app info "Apache Full"

引用符が必要なのは、プロファイル名にスペースが含まれているためです。

実行例:
“`
Profile: Apache Full
Title: Web Server (HTTP, HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache Web Server. This profile allows http and https traffic.

Ports:
80/tcp
443/tcp
“`
Apache Fullプロファイルは、HTTP (80番) と HTTPS (443番) のTCPポートを使用することがわかります。

アプリケーションプロファイルを使ってルールを追加する

アプリケーションプロファイルを使ってルールを追加するのは非常に簡単です。

構文: sudo ufw allow/deny [profile name]

例:OpenSSHプロファイルで定義されているポートを許可する
bash
sudo ufw allow OpenSSH

これは sudo ufw allow 22/tcp と同等です。

例:Apache Fullプロファイルで定義されているポートを許可する
bash
sudo ufw allow "Apache Full"

これは sudo ufw allow 80/tcpsudo ufw allow 443/tcp を実行するのと同等です。

アプリケーションプロファイルは、よく使われるサービスのポート設定を覚えずに済むため便利です。ただし、アプリケーションがデフォルト以外のポートを使用している場合や、特定のIPアドレスからのアクセスのみを許可したい場合は、ポート番号やIPアドレスを直接指定してルールを作成する必要があります。

アプリケーションプロファイルの定義ファイルは /etc/ufw/applications.d/ ディレクトリにあります。必要であれば、これらのファイルを編集したり、新しいファイルを作成したりして、独自のプロファイルを定義することも可能です。

ポート範囲の指定

特定の範囲のポートをまとめて許可/拒否したい場合があります。これは、FTPのパッシブモード(データ転送にランダムなポートを使用する)や、特定のオンラインゲームなどで利用されることがあります。

構文: sudo ufw allow/deny [start_port]:[end_port][/protocol]

例:TCPの6000番ポートから6007番ポートまでの範囲を許可する
bash
sudo ufw allow 6000:6007/tcp

例:UDPの50000番ポートから51000番ポートまでの範囲を拒否する
bash
sudo ufw deny 50000:51000/udp

ポート範囲を指定する場合、プロトコル(/tcp または /udp)を必ず指定する必要があることに注意してください。

ルールの詳細設定:通信方向とインターフェース

デフォルトでは、UFWは着信 (incoming) 通信に対してルールを適用します。しかし、発信 (outgoing) 通信や、特定のネットワークインターフェースに対するルールを設定することも可能です。

通信方向を指定する (in/out)

デフォルトは着信 (in) です。発信 (out) に対するルールを追加することもできます。ただし、デフォルトポリシーで発信を allow にしている場合、個別に発信を許可するルールは通常不要です。特定の宛先への発信だけをブロックしたい場合などに使用します。

構文: sudo ufw allow/deny in/out [rule details]

例:外部の特定のIPアドレス 1.2.3.4 へのTCP 80番ポートの発信通信を拒否する
bash
sudo ufw deny out to 1.2.3.4 port 80/tcp

この例では to 1.2.3.4 port 80/tcp の部分で通信先を指定しています。着信ルールの場合は from [ip address]to any port [port] を使用しましたが、発信ルールの場合は to [ip address]from any port [port] を使用します。通常は from any は省略されます。

例:特定のIPアドレス 5.6.7.8 からのUDP 123番ポートへの着信通信を許可する (デフォルトは着信なので in は省略可だが明示することも可能)
bash
sudo ufw allow in from 5.6.7.8 to any port 123/udp

特定のネットワークインターフェースを指定する

複数のネットワークインターフェースを持つシステムで、特定のインターフェースを通る通信に対してのみルールを適用したい場合に指定します。例えば、eth0 は外部ネットワーク、eth1 は内部ネットワークに接続されている場合などです。

構文: sudo ufw allow/deny in/out on [interface] [rule details]

例:ネットワークインターフェース eth0 からのSSH (22/tcp) 通信のみを許可する
bash
sudo ufw allow in on eth0 to any port 22/tcp

例:ネットワークインターフェース eth1 へのHTTP (80/tcp) 発信通信を拒否する
bash
sudo ufw deny out on eth1 to any port 80/tcp

(この to any port 80/tcpany は発信元のローカルシステムアドレスを指します。発信ルールの場合は to [destination ip] port [destination port] from any port [source port] の形式になりますが、通常は from any port [source port] の部分は省略されます。)

これらのオプションを組み合わせることで、より複雑なファイアウォールポリシーを実装できます。

ロギングの設定

UFWが通信をブロックしたり許可したりした際に、その情報をログに記録するように設定できます。これは、ファイアウォールの設定が意図した通りに機能しているかを確認したり、不正アクセスの試みを検出したりするために非常に重要です。

構文: sudo ufw logging [level]

  • level: ロギングレベルを指定します。
    • off: ロギングを無効にします。
    • on: ロギングを有効にし、デフォルトレベル (low) を使用します。
    • low: デフォルトレベル。ブロックされたパケットのみをログに記録します。
    • medium: lowよりも多くの情報を記録します。許可されたパケットの一部も記録されることがあります。
    • high: 全てのパケットを詳細に記録します。ディスク容量を大量に消費する可能性があるため注意が必要です。

例:ロギングを有効にする (デフォルトレベル low)
bash
sudo ufw logging on

例:ロギングレベルを medium に設定する
bash
sudo ufw logging medium

例:ロギングを無効にする
bash
sudo ufw logging off

ログファイルは通常 /var/log/ufw.log に出力されます。ログを確認するには、catgreptail などのコマンドを使用します。

例:UFWログの最新10行を表示する
bash
sudo tail /var/log/ufw.log

例:UFWログから特定のIPアドレスからの通信に関する行を検索する
bash
sudo grep 'SRC=1.2.3.4' /var/log/ufw.log

ロギングを有効にすることは、セキュリティ監視の観点から強く推奨されます。ただし、highレベルのロギングはディスク容量を圧迫する可能性があるため、通常はlowまたはmediumレベルで十分です。

ルールの管理:削除と挿入

設定したルールを後から削除したり、既存のルールの間に新しいルールを挿入したりすることができます。

ルールの削除

ルールを削除するには、ufw status numbered で確認した番号を使う方法と、ルール内容を直接指定する方法があります。番号を使う方が確実で一般的です。

  1. sudo ufw status numbered で削除したいルールの番号を確認する。
    bash
    sudo ufw status numbered

    出力例:
    “`
    Status: active

     To                         Action      From
     --                         ------      ----
    

    [ 1] 22/tcp ALLOW IN Anywhere # SSH
    [ 2] 80/tcp ALLOW IN Anywhere
    [ 3] 443/tcp ALLOW IN Anywhere
    [ 4] 192.168.1.100 ALLOW IN Anywhere
    [ 5] 22/tcp (v6) ALLOW IN Anywhere (v6) # SSH
    [ 6] 80/tcp (v6) ALLOW IN Anywhere (v6)
    [ 7] 443/tcp (v6) ALLOW IN Anywhere (v6)
    “`

  2. 削除したいルールの番号を指定して削除コマンドを実行する。
    構文: sudo ufw delete [number]

    例:番号 4 のルール (192.168.1.100 ALLOW IN Anywhere) を削除する
    bash
    sudo ufw delete 4

    実行すると確認メッセージが表示されます。
    Deleting:
    allow from 192.168.1.100 to any
    Proceed with operation (y|n)?

    y と入力して Enterキーを押すと削除が実行されます。

  3. 削除後、再度 sudo ufw status numbered でルールが消えているか確認する。

ルール内容を直接指定して削除する方法:

削除したいルールを追加した時と全く同じコマンドに delete を付けて実行します。

構文: sudo ufw delete [rule]

例:sudo ufw allow 80/tcp で追加したルールを削除する
bash
sudo ufw delete allow 80/tcp

複数のルールが一致する場合、それら全てが削除対象となる可能性があります。そのため、番号による削除の方が安全で推奨されます。

ルールの挿入

既存のルールのリストの途中に新しいルールを挿入したい場合があります。ルールはリストの上から順番に評価されるため、特定のルールを他のルールよりも優先させたい場合に挿入を行います。

  1. sudo ufw status numbered で挿入したい位置の番号を確認する。新しいルールはその番号の位置に挿入され、元々その番号だったルール以降の番号は一つずつずれます。

  2. 挿入したい位置の番号とルールを指定して挿入コマンドを実行する。
    構文: sudo ufw insert [number] [rule]

    例:番号 1 の位置に、IPアドレス 192.168.1.50 からのSSH (22/tcp) 通信を許可するルールを挿入する
    bash
    sudo ufw insert 1 allow from 192.168.1.50 to any port 22/tcp

    このコマンド実行後、元々番号1だったルールが番号2に、番号2だったルールが番号3に、といった具合に番号がずれます。

ルールリストの上位にあるルールほど優先順位が高くなります。例えば、全てのIPからのSSH接続を拒否するルール(deny 22/tcp)があり、その下に特定のIPからのSSH接続を許可するルール(allow from 192.168.1.100 to any port 22/tcp)がある場合、拒否ルールの方が先に評価されるため、特定のIPからのアクセスも拒否されてしまいます。このような場合に、許可ルールを拒否ルールよりも上に挿入する必要があります。

注意: デフォルトポリシーはルールの 全て が評価された後に適用されます。つまり、個別の許可/拒否ルールは常にデフォルトポリシーよりも優先されます。

高度な設定例

複数ポートの指定

カンマ区切りで複数のポートを同時に指定できます。ただし、プロトコルは同じである必要があります。

例:TCPの80番と443番ポートを許可する
bash
sudo ufw allow 80,443/tcp

特定のインターフェースから特定のインターフェースへのルーティングを制御

システムが複数のネットワークに接続されており、ルーターのようにパケットを転送する場合に使用します。routed デフォルトポリシーが deny の場合、明示的にルーティングを許可する必要があります。

構文: sudo ufw route allow/deny in on [in_interface] out on [out_interface] to [destination] from [source]

例:インターフェース eth0 (外部) から eth1 (内部) への、内部ネットワーク 192.168.1.0/24 宛ての通信を許可する
bash
sudo ufw route allow in on eth0 out on eth1 to 192.168.1.0/24

この例では、通信元 (from) は省略されています(任意を意味します)。

rate limiting (レート制限) の利用

特定のポートへの接続試行回数を制限することで、ブルートフォース攻撃などからシステムを保護できます。これは特にSSHポートなどで有効です。

構文: sudo ufw limit [port][/protocol]

例:SSHポート (22/tcp) への接続試行を制限する
bash
sudo ufw limit 22/tcp

このルールは、短時間(デフォルトでは30秒間)に6回以上の接続試行があった場合、それ以降の接続をブロックします。正当な接続は引き続き許可されます。

limit ルールは、対応する allow ルールよりも 上に 配置される必要があります。例えば、全てのIPからのSSH接続を許可するルール (allow 22/tcp) がある場合、その limit 22/tcp を挿入します。
“`bash

まず limit ルールを追加 (通常はルールの最初に追加されることが多い)

sudo ufw limit 22/tcp

次に allow ルールを追加

sudo ufw allow 22/tcp

もしくは、numbered で番号を確認し、insert で適切な位置に挿入する

sudo ufw status numbered で allow 22/tcp の番号を確認し、その番号の前に挿入

sudo ufw insert limit 22/tcp

“`

ルール設定セクションのまとめ:

UFWのルール設定は非常に柔軟です。ポート番号やサービス名、プロトコル、IPアドレス、IPアドレス範囲、ポート範囲、通信方向、ネットワークインターフェースなどを組み合わせて、細かく通信を制御できます。アプリケーションプロファイルは一般的なサービスの設定を簡略化するのに役立ちます。ufw status numbered で現在のルールリストを確認し、必要に応じて ufw deleteufw insert でルールを管理しましょう。デフォルトポリシーと個別のルールの優先順位を理解することが重要です。ロギングを有効にすることで、ファイアウォールの動作状況やセキュリティイベントを監視できます。

UFWの無効化とリセット

一時的にファイアウォールを完全に無効にしたい場合や、全ての設定を初期状態に戻したい場合があります。

UFWの無効化 (ufw disable)

UFWを停止し、全てのファイアウォール機能を無効にします。これはトラブルシューティングの際に、問題がファイアウォールの設定によるものかを切り分けるためなどに使用されます。

bash
sudo ufw disable

実行すると、以下のようなメッセージが表示されます。
Firewall stopped and disabled on system startup
これでUFWは停止し、システムの起動時にも自動で起動しなくなります。

注意: UFWを無効にすると、システムは外部からの保護を失います。必要な作業が終わり次第、速やかに再度有効化 (sudo ufw enable) することを忘れないでください。

UFWを無効にしても、設定したルール自体は削除されません。ufw statusStatus: inactive と表示されますが、ufw status verbose でルール一覧を確認すると、ルール自体は残っていることがわかります。ufw enable を実行すれば、保存されていたルールが再度適用されて有効になります。

UFWのリセット (ufw reset)

UFWを有効化する前の初期状態に戻したい場合、つまり、設定した 全てのルールを削除 し、デフォルトポリシーをリセット するには ufw reset コマンドを使用します。

bash
sudo ufw reset

実行すると、以下のような強い警告メッセージが表示されます。
Resetting all firewall rules to installation defaults. Proceed with operation (y|n)?
「全てのファイアウォールルールをインストールのデフォルト状態にリセットします。続行しますか?」という意味です。デフォルト状態では、通常、UFWは無効 (inactive) で、ルールは何も設定されていません。

注意: ufw reset は設定を完全に消去します。一度リセットすると、手動で追加したルールや変更したデフォルトポリシーは全て失われます。この操作は元に戻せません。実行する際は細心の注意を払い、本当に全てのルールを消去しても問題ないか確認してください。

y と入力してEnterキーを押すとリセットが実行されます。
bash
Resetting all firewall rules to installation defaults. Proceed with operation (y|n)? y
Backing up '/etc/ufw/user.rules' to '/etc/ufw/user.rules.20231027_100000'
Backing up '/etc/ufw/before.rules' to '/etc/ufw/before.rules.20231027_100000'
Backing up '/etc/ufw/after.rules' to '/etc/ufw/after.rules.20231027_100000'
Backing up '/etc/ufw/user6.rules' to '/etc/ufw/user6.rules.20231027_100000'
Backing up '/etc/ufw/before6.rules' to '/etc/ufw/before6.rules.20231027_100000'
Backing up '/etc/ufw/after6.rules' to '/etc/ufw/after6.rules.20231027_100000'

リセット前に設定ファイルがバックアップされることがわかります。

リセット後、sudo ufw status を実行すると Status: inactive と表示され、ルール一覧は空になります。

無効化/リセットセクションのまとめ:

ufw disable はUFWを一時停止し、全ての通信を許可する状態に戻しますが、ルール設定は保持されます。トラブルシューティングなどに使用し、終了後は忘れずに有効化してください。ufw reset は設定した全てのルールとデフォルトポリシーを削除し、UFWを初期状態(通常は無効)に戻します。この操作は不可逆であり、全てのカスタム設定が失われるため、実行には十分な注意が必要です。

実践的なシナリオ例

ここでは、いくつかの一般的なサーバー用途におけるUFWの設定例を紹介します。

1. SSHサーバー

リモートからの安全な管理のためにSSHが必要です。デフォルトポリシーを拒否にしつつ、SSHポートのみを許可する最も基本的な設定です。

  1. デフォルトポリシーを設定:
    bash
    sudo ufw default deny incoming
    sudo ufw default allow outgoing

    着信を拒否、発信を許可します。

  2. SSHポートを許可:
    bash
    # デフォルトポート (22/tcp) を許可する場合
    sudo ufw allow 22/tcp
    # またはアプリケーションプロファイルを使用 (OpenSSHサーバーがインストールされている場合)
    # sudo ufw allow OpenSSH

    もしSSHポートを2222番などに変更している場合は、そのポート番号を指定します。
    bash
    # SSHポートが2222番の場合
    sudo ufw allow 2222/tcp

  3. 特定IPからのSSHのみを許可:
    より安全にするために、特定の管理用IPアドレスからのみSSH接続を許可するように設定します。
    “`bash
    # 全てのSSH接続を許可するルールがあれば削除
    # sudo ufw delete allow 22/tcp または sudo ufw delete OpenSSH
    # sudo ufw status numbered で番号を確認し、番号で削除する方が確実
    # sudo ufw delete

    特定IP (例: 192.168.1.100) からのSSHのみを許可

    sudo ufw allow from 192.168.1.100 to any port 22/tcp
    ``
    この設定の場合、デフォルトポリシーが deny なので、
    192.168.1.100` 以外のIPからの22番ポートへの通信はデフォルトポリシーによって拒否されます。

  4. UFWを有効化:
    bash
    sudo ufw enable

    警告が出たら y を入力します。(事前にSSHルールを設定済みなので、SSH接続は維持されます。)

2. Webサーバー (HTTP/HTTPS)

Webサーバー (Apache, Nginxなど) を運用する場合、HTTP (80番) と HTTPS (443番) ポートへのアクセスを許可する必要があります。

  1. デフォルトポリシーを設定:
    bash
    sudo ufw default deny incoming
    sudo ufw default allow outgoing

  2. SSHポートを許可 (管理のため):
    bash
    sudo ufw allow 22/tcp
    # または sudo ufw allow OpenSSH

    または、特定のIPからのSSHのみ許可する場合は sudo ufw allow from <管理IP> to any port 22/tcp を使用します。

  3. HTTP (80/tcp) と HTTPS (443/tcp) ポートを許可:
    bash
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp

    または、アプリケーションプロファイルを使用します(Apache, Nginxがインストールされている場合)。
    “`bash
    # Apacheの場合 (HTTPとHTTPSの両方)
    # sudo ufw allow “Apache Full”

    Nginxの場合 (HTTPとHTTPSの両方)

    sudo ufw allow “Nginx Full”

    “`

  4. UFWを有効化:
    bash
    sudo ufw enable

3. データベースサーバー (例: MySQL/MariaDB)

データベースサーバーは通常、内部ネットワークや特定のアプリケーションサーバーからのみアクセスを許可し、インターネットからの直接アクセスは拒否すべきです。MySQL/MariaDBのデフォルトポートは3306/tcpです。

  1. デフォルトポリシーを設定:
    bash
    sudo ufw default deny incoming
    sudo ufw default allow outgoing

  2. SSHポートを許可 (管理のため):
    bash
    sudo ufw allow 22/tcp

    または、特定のIPからのSSHのみ許可。

  3. 特定のIPアドレスやネットワークからのデータベースポートを許可:
    例えば、アプリケーションサーバーのIPアドレスが 192.168.1.200 で、内部ネットワークが 192.168.1.0/24 の場合。
    “`bash
    # アプリケーションサーバーのIPから3306/tcpを許可
    sudo ufw allow from 192.168.1.200 to any port 3306/tcp

    または、内部ネットワーク全体から3306/tcpを許可

    sudo ufw allow from 192.168.1.0/24 to any port 3306/tcp

    “`
    これらのルールにより、指定されたIPやネットワークからのみ3306番ポートへのアクセスが可能になります。その他のIPからのアクセスはデフォルトポリシー(deny)によってブロックされます。

  4. UFWを有効化:
    bash
    sudo ufw enable

これらの例は基本的な設定ですが、ほとんどのサーバーで必要となるファイアウォール設定の出発点となります。必要に応じて、他のサービス(FTP, Samba, NFSなど)に応じたポートを開けたり、特定のIPからのアクセスを拒否するルールを追加したりすることで、セキュリティを強化できます。

トラブルシューティング:UFWで問題が発生した場合

UFWの設定中に、サーバーに接続できなくなったり、サービスにアクセスできなくなったりといった問題が発生することがあります。ここでは、一般的な問題とその解決策を紹介します。

問題1: UFWを有効化したらSSH接続が切断され、再接続できない

原因: UFWを有効化する前に、SSH接続を許可するルールを設定し忘れたことが最も可能性の高い原因です。デフォルトポリシーが着信拒否になったため、SSH通信がブロックされています。

解決策:
サーバーに物理的にアクセスできる場合は、コンソールからログインしてUFWを無効にします。
bash
sudo ufw disable

その後、SSH接続を許可するルール(例: sudo ufw allow 22/tcp または sudo ufw allow OpenSSH)を設定し、ルールが sudo ufw status で表示されることを確認してから、再度 sudo ufw enable を実行します。

物理的にアクセスできない場合は、クラウドプロバイダーの提供するコンソール機能やレスキューモードを利用してサーバーにアクセスし、同様の手順でUFWを無効化、設定、有効化を行います。プロバイダーによっては、ファイアウォール設定ミスに対する復旧機能を提供している場合もあります。

予防策: UFWを有効にする前に、必ず sudo ufw status numbered でSSHポート(通常22番、または変更後のポート)を許可するルールが存在することを確認してください。特定のIPからのSSHのみを許可する場合は、そのルールが正しく設定されているか確認してください。

問題2: 特定のサービス (Webサーバー, データベースなど) にアクセスできない

原因: サービスが使用するポートがUFWによってブロックされている可能性があります。デフォルトポリシーが着信拒否になっているにも関わらず、そのサービスポートを許可するルールが設定されていないか、設定が間違っていることが考えられます。

解決策:
1. UFWのステータスを確認: sudo ufw status verbose を実行し、UFWが有効 (active) であること、そして問題のサービスが使用するポート(例: Webサーバーなら80番や443番)を許可するルールが存在するか確認します。
2. ルールの確認:
* ルール一覧に該当ポートの ALLOW IN ルールがありますか?
* IPアドレス制限を設けている場合、アクセス元のIPアドレスが許可リストに含まれていますか?
* 拒否 (DENY IN または REJECT IN) ルールで、該当ポートやアクセス元IPが意図せずブロックされていませんか?(ルールは上から順番に評価されるため、許可ルールよりも上に拒否ルールがあるとブロックされます。)
3. ルールの追加または修正: もし必要な許可ルールが存在しない場合は、適切なルールを追加します(例: sudo ufw allow 80/tcp, sudo ufw allow from <許可IP> to any port 3306/tcp)。ルールが間違っている場合は、sudo ufw status numbered で番号を確認し、sudo ufw delete <number> で削除してから正しいルールを追加します。
4. UFWを再ロード (必要であれば): ルールを追加/削除すると通常は自動的に適用されますが、設定ファイルを手動で編集した場合などは sudo ufw reload コマンドで設定を再ロードする必要があります。ただし、通常の使用ではこのコマンドは不要です。
5. UFWを一時的に無効にしてテスト: 問題が本当にUFWによるものか切り分けるために、一時的にUFWを無効 (sudo ufw disable) にして、サービスにアクセスできるか試します。アクセスできるようになった場合、原因はUFWの設定にあります。テスト後は忘れずに sudo ufw enable で再度有効化してください。
6. サービスのステータスを確認: UFWの設定が正しくても、サービス自体が起動していない、設定が間違っている、別の原因でポートをlistenしていないといった可能性もあります。systemctl status <service_name> などでサービスの状態を確認してください。

問題3: UFWが有効なのに特定の通信がブロックされない、または意図しない通信が許可されている

原因: ルール設定の誤りや、ルールの評価順序が意図通りになっていない可能性があります。

解決策:
1. sudo ufw status numbered で全てのルールを番号付きで確認します。
2. ルールの評価順序を確認: UFWはリストの上から順番にルールを評価します。特定の通信を拒否したいルールがある場合、それを許可するルールよりも に配置する必要があります。意図せず通信を許可しているルールがないか確認します。
3. デフォルトポリシーを確認: sudo ufw status verbose でデフォルトポリシーを確認します。着信が allow になっていないか確認します。通常は deny にすべきです。
4. ルールの修正: 評価順序が間違っている場合は、sudo ufw delete <number> でルールを削除し、sudo ufw insert <number> <rule> で適切な位置に挿入し直します。
5. 詳細なロギングを有効化: 問題の通信がUFWによってどのように処理されているかを確認するために、ロギングレベルを上げます(例: sudo ufw logging medium または high)。その後、問題の通信を試みて、/var/log/ufw.log ファイルを確認します。UFWがその通信を ALLOW または BLOCK した記録が残っているはずです。ログメッセージの詳細を分析することで、どのルールが適用されたか、またはなぜブロックされなかったかを特定できる場合があります。問題解決後、ロギングレベルを元に戻すか off にすることを忘れないでください。
6. iptablesとの競合: UFWは内部的にiptablesを使用しています。稀に、UFWを介さずに直接iptablesコマンドでルールを設定した場合、予期しない動作を引き起こすことがあります。通常はUFWのみを使用してファイアウォールを管理することを推奨します。もしiptablesを直接操作したことがある場合は、iptablesのルールも確認する必要があるかもしれません(sudo iptables -L -n -v コマンドなど)。

問題4: IPv6のファイアウォール設定について

UFWはデフォルトでIPv4とIPv6の両方に対応しています。ufw enable コマンドは、IPv4とIPv6の両方でファイアウォールを有効にします。ufw status の出力で、(v6) と表示されているルールがIPv6に対するものです。

もしIPv6を使用しない環境であれば、UFWの設定ファイルでIPv6サポートを無効にすることができます。

  1. 設定ファイルを編集します。
    bash
    sudo nano /etc/default/ufw
  2. ファイル内の IPV6= で始まる行を見つけ、値を yes から no に変更します。
    IPV6=no
  3. ファイルを保存して閉じます。
  4. UFWをリロードするか、無効化してから再度有効化します。
    bash
    # 無効化・有効化で変更を反映させる
    sudo ufw disable
    sudo ufw enable
    # または、reloadでも反映されることがあるが disable/enable が確実
    # sudo ufw reload

    これでIPv6に関するルールは無視され、IPv4のみが対象となります。

IPv6を使用する場合は、IPv4と同様に、必要なポートに対してIPv6のルールも適切に設定されていることを確認してください。多くの ufw allowufw deny コマンドは、自動的に対応するIPv6ルールも追加します。

UFWとセキュリティ対策の全体像

UFWはサーバーのセキュリティを強化するための強力なツールですが、それだけで全ての脅威を防げるわけではありません。UFWは「ネットワークの関所」であり、不正な通信の侵入を防ぐ役割を果たしますが、システム内部の脆弱性や、許可された通信経路を使った攻撃には対応できません。

サーバーセキュリティは多層防御で考える必要があります。UFWはあくまでその一つの層です。他の重要なセキュリティ対策としては以下が挙げられます。

  • ソフトウェアの定期的なアップデート: OSやアプリケーションの脆弱性を修正するために、常に最新の状態に保ちます。
  • 強力なパスワードとSSH鍵認証: 推測されにくいパスワードを使用し、可能な限りパスワード認証を無効にしてSSH鍵認証を使用します。
  • 不要なサービスの停止: 使用しないサービス(デーモン)は停止しておき、攻撃対象を減らします。UFWでポートを閉じていても、サービスが起動していることは脆弱性になり得ます。
  • 侵入検知システム (IDS)/侵入防御システム (IPS): 不正な挙動を検知したりブロックしたりするシステムを導入します。
  • ログ監視と分析: システムログやアプリケーションログ、そしてUFWのログを定期的に確認し、異常なパターンがないか監視します。
  • セキュリティ監査と脆弱性スキャン: 定期的にシステムのセキュリティ設定や既知の脆弱性をチェックします。

UFWはこれらの対策と組み合わせて使用することで、その効果を最大限に発揮します。ファイアウォールで不要な通信を遮断することは、攻撃のリスクを大幅に低減するための第一歩です。

まとめ

UbuntuにおけるUFW (Uncomplicated Firewall) は、サーバーを外部からの脅威から保護するための、簡単かつ強力なファイアウォール管理ツールです。本記事では、UFWの基本的な概念から、状態の確認 (ufw status)、有効化 (ufw enable)、そして最も重要なルールの設定方法まで、詳細に解説しました。

  • ufw status: 現在のUFWの状態(有効/無効)、デフォルトポリシー、および設定されているルールを確認できます。verbosenumbered オプションは状況把握に役立ちます。
  • ufw enable: UFWを有効化し、ファイアウォール機能を動作させます。リモートからのSSH接続が切断されないよう、事前にSSHポートを許可するルールを設定しておくことが極めて重要です。
  • ufw allow/ufw deny/ufw reject: 特定のポート、プロトコル、IPアドレス、IP範囲、通信方向、インターフェースなどを指定して、通信の許可または拒否ルールを追加します。アプリケーションプロファイルを利用すると、一般的なサービスに必要なポート設定を簡単に行えます。
  • ufw default allow/ufw default deny: ルールに一致しない通信に対するデフォルトの挙動を設定します。通常、着信は deny、発信は allow に設定します。
  • ufw logging: ファイアウォールのログ機能を有効化し、セキュリティイベントを監視できるようにします。
  • ufw delete/ufw insert: 設定したルールを番号や内容で削除したり、特定の場所に挿入したりすることで、ルールの管理や評価順序の調整を行います。
  • ufw disable: UFWを一時的に無効にします。トラブルシューティングに便利ですが、使用後は速やかに再有効化してください。
  • ufw reset: 設定した全てのルールとデフォルトポリシーを削除し、UFWを初期状態に戻します。この操作は不可逆であるため、実行には十分な注意が必要です。

UFWを適切に設定・管理することは、Ubuntuサーバーのセキュリティを守る上で不可欠なステップです。本記事で解説した内容を参考に、ご自身の環境に必要なファイアウォール設定を実装し、安全なサーバー運用を目指してください。

ファイアウォールの設定は一度行えば終わりではなく、システム構成の変更や新しいサービス導入、セキュリティ上の脅威の変化に応じて、定期的に見直し、必要に応じて更新していくことが重要です。常に最新の情報を入手し、システムのセキュリティ向上に努めましょう。

付録:UFW主要コマンド一覧

コマンド 説明
sudo ufw status UFWの現在の状態を表示する
sudo ufw status verbose デフォルトポリシー、ロギング設定なども含めた詳細な状態を表示する
sudo ufw status numbered ルールを番号付きで表示する(削除・挿入に便利)
sudo ufw enable UFWを有効にする。システム起動時に自動有効化されるように設定する。
sudo ufw disable UFWを無効にする。システム起動時の自動有効化も無効にする。
sudo ufw reset 全てのルールとデフォルトポリシーを初期状態に戻す(設定を消去する)。
sudo ufw default allow <dir> 特定方向 (incoming/outgoing/routed) のデフォルトを許可にする
sudo ufw default deny <dir> 特定方向 (incoming/outgoing/routed) のデフォルトを拒否にする
sudo ufw default reject <dir> 特定方向 (incoming/outgoing/routed) のデフォルトを破棄/応答する
sudo ufw allow <port>[/<proto>] 特定ポート/プロトコルの通信を許可する
sudo ufw deny <port>[/<proto>] 特定ポート/プロトコルの通信を拒否する
sudo ufw reject <port>[/<proto>] 特定ポート/プロトコルの通信を破棄/応答する
sudo ufw allow from <ip addr> 特定IPアドレスからの全ての通信を許可する
sudo ufw deny from <ip addr> 特定IPアドレスからの全ての通信を拒否する
sudo ufw allow from <ip> to any port <port>[/<proto>] 特定IPから特定ポートへの通信を許可する
sudo ufw deny from <ip> to any port <port>[/<proto>] 特定IPから特定ポートへの通信を拒否する
sudo ufw allow <start>:<end>/<proto> 特定ポート範囲の通信を許可する
sudo ufw allow in on <iface> to any port <port> 特定インターフェースへの着信通信を許可する
sudo ufw allow out on <iface> to <ip> port <port> 特定インターフェースからの発信通信を許可する
sudo ufw limit <port>[/<proto>] 特定ポートへの接続試行をレート制限する
sudo ufw app list 利用可能なアプリケーションプロファイル一覧を表示する
sudo ufw app info <name> アプリケーションプロファイルの詳細を表示する
sudo ufw allow <app name> アプリケーションプロファイルを使ってポートを許可する
sudo ufw logging on/off/low/medium/high UFWのロギングレベルを設定する
sudo ufw delete <number> 番号を指定してルールを削除する
sudo ufw delete <rule> ルール内容を指定してルールを削除する
sudo ufw insert <number> <rule> 指定した番号の位置にルールを挿入する
sudo ufw reload UFWの設定ファイルを再ロードする(通常、ルール変更で自動適用)

UFW設定ファイルの場所:

  • /etc/default/ufw: UFWの基本的な設定(IPv6サポートなど)
  • /etc/ufw/user.rules: 手動で追加したIPv4ルールが格納されるファイル(ufwコマンドで操作するのが基本)
  • /etc/ufw/user6.rules: 手動で追加したIPv6ルールが格納されるファイル
  • /etc/ufw/before.rules, /etc/ufw/after.rules, etc.: UFW内部で使用される高度なルールファイル。通常は編集しない。
  • /etc/ufw/applications.d/: アプリケーションプロファイルの定義ファイルが格納されるディレクトリ。

この記事が、Ubuntu環境でUFWを使用して効果的なファイアウォール設定を行うための一助となれば幸いです。


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール