はい、承知いたしました。Ubuntuファイアウォール(UFW)に関する詳細な入門記事を約5000語で記述します。記事の内容を直接ここに表示します。
Ubuntuファイアウォール(UFW)入門:確認・有効化・設定
はじめに:なぜファイアウォールが必要なのか?
インターネットに接続されたサーバーやコンピュータは、常に外部からの様々な脅威にさらされています。不正アクセス、マルウェアの侵入、サービス妨害攻撃(DDoS攻撃)など、これらの脅威はシステムを侵害し、情報漏洩、データの破壊、サービスの停止といった重大な損害を引き起こす可能性があります。
このような脅威からシステムを保護するための最も基本的なセキュリティ対策の一つが「ファイアウォール」です。ファイアウォールは、ネットワークの交通整理を行う関所のような役割を果たします。設定されたルールに基づいて、通過するネットワークパケット(通信データ)を監視し、許可された通信のみを通し、不正または不要な通信をブロックします。
Ubuntuには、標準で高性能なファイアウォール機能が搭載されています。その中でも、コマンドラインから直感的かつ簡単にファイアウォールを設定・管理できるツールが「UFW (Uncomplicated Firewall)」です。UFWはその名の通り、「複雑でないファイアウォール」を目指して開発されており、Linuxの低レベルなパケットフィルタリングツールであるiptables
の複雑な設定を、より分かりやすいコマンドで扱えるように抽象化しています。
この入門記事では、UbuntuにおけるUFWの基本的な使い方、すなわち「現在の状態を確認する方法」「ファイアウォールを有効にする方法」「具体的な通信ルールを設定する方法」について、詳細かつ網羅的に解説します。約5000語というボリュームで、UFWの基本から応用的な設定まで、初心者の方でも安心して読み進められるように、多くの具体例と注意点を交えて説明します。
UFWの基本概念
UFWを使い始める前に、いくつかの基本的な概念を理解しておくことが重要です。
-
デフォルトポリシー (Default Policy):
UFWが有効になった際に、明示的に許可または拒否されていない 全ての 通信に対して適用される基本方針です。主なポリシーには以下の3つがあります。deny
(拒否): 明示的に許可されていない 全ての 通信を拒否します。最も安全な設定であり、通常推奨されます。必要な通信(SSH、Webなど)だけを個別に許可する運用になります。allow
(許可): 明示的に拒否されていない 全ての 通信を許可します。これは非常に危険な設定であり、ファイアウォールが無効であるのとほぼ同じ状態になります。特殊な状況以外では絶対に使用しないでください。reject
(破棄/応答):deny
と同様に通信をブロックしますが、通信元に対して「通信できませんでした」というエラーメッセージ(例: ICMP Port Unreachable, TCP Reset)を返します。deny
は単にパケットを破棄し、通信元には何も知らせません(タイムアウトのように見える)。セキュリティ上の理由から、通常は通信元に情報を与えないdeny
が推奨されますが、デバッグなどの目的でreject
が使われることもあります。
デフォルトポリシーは、送られてくる通信(着信、incoming
)と、システムから外に出ていく通信(発信、outgoing
)に対して個別に設定できます。多くの場合、着信はdeny
、発信はallow
に設定されます。
-
ルール (Rules):
デフォルトポリシーよりも優先される、特定の条件に基づいた通信の許可または拒否の設定です。「どのプロトコルの、どのポートへの/からの通信を、どのIPアドレスから/へ、許可/拒否するか」といった具体的な条件を指定します。ルールは上から順番に評価され、最初に一致したルールが適用されます。 -
プロファイル (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
コマンドを実行すると、以下の処理が行われます。
- UFWの設定ファイル (
/etc/ufw/ufw.conf
など) を読み込みます。 - 設定されているデフォルトポリシーとルールに基づいて、Linuxカーネルの
netfilter
フレームワーク(通常はiptables
やnftables
によって制御される)にパケットフィルタリングルールを適用します。 - UFWサービスが有効化され、システムの起動時に自動的に開始されるように設定されます。
これにより、UFWがネットワークトラフィックの監視とフィルタリングを開始します。
有効化セクションのまとめ:
UFWを有効にするには sudo ufw enable
コマンドを使用します。しかし、リモートからSSH接続している場合は、必ず事前にSSH接続を許可するルールを設定してから有効化してください。そうしないと、サーバーにアクセスできなくなる可能性があります。SSHポートの許可には sudo ufw allow 22/tcp
や sudo 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/tcp
と ufw 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/tcp
と sudo 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/tcp
の any
は発信元のローカルシステムアドレスを指します。発信ルールの場合は 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
に出力されます。ログを確認するには、cat
や grep
、tail
などのコマンドを使用します。
例: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
で確認した番号を使う方法と、ルール内容を直接指定する方法があります。番号を使う方が確実で一般的です。
-
sudo ufw status numbered
で削除したいルールの番号を確認する。
bash
sudo ufw status numbered
出力例:
“`
Status: activeTo 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)
“` -
削除したいルールの番号を指定して削除コマンドを実行する。
構文: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キーを押すと削除が実行されます。 -
削除後、再度
sudo ufw status numbered
でルールが消えているか確認する。
ルール内容を直接指定して削除する方法:
削除したいルールを追加した時と全く同じコマンドに delete
を付けて実行します。
構文: sudo ufw delete [rule]
例:sudo ufw allow 80/tcp
で追加したルールを削除する
bash
sudo ufw delete allow 80/tcp
複数のルールが一致する場合、それら全てが削除対象となる可能性があります。そのため、番号による削除の方が安全で推奨されます。
ルールの挿入
既存のルールのリストの途中に新しいルールを挿入したい場合があります。ルールはリストの上から順番に評価されるため、特定のルールを他のルールよりも優先させたい場合に挿入を行います。
-
sudo ufw status numbered
で挿入したい位置の番号を確認する。新しいルールはその番号の位置に挿入され、元々その番号だったルール以降の番号は一つずつずれます。 -
挿入したい位置の番号とルールを指定して挿入コマンドを実行する。
構文: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 delete
や ufw insert
でルールを管理しましょう。デフォルトポリシーと個別のルールの優先順位を理解することが重要です。ロギングを有効にすることで、ファイアウォールの動作状況やセキュリティイベントを監視できます。
UFWの無効化とリセット
一時的にファイアウォールを完全に無効にしたい場合や、全ての設定を初期状態に戻したい場合があります。
UFWの無効化 (ufw disable
)
UFWを停止し、全てのファイアウォール機能を無効にします。これはトラブルシューティングの際に、問題がファイアウォールの設定によるものかを切り分けるためなどに使用されます。
bash
sudo ufw disable
実行すると、以下のようなメッセージが表示されます。
Firewall stopped and disabled on system startup
これでUFWは停止し、システムの起動時にも自動で起動しなくなります。
注意: UFWを無効にすると、システムは外部からの保護を失います。必要な作業が終わり次第、速やかに再度有効化 (sudo ufw enable
) することを忘れないでください。
UFWを無効にしても、設定したルール自体は削除されません。ufw status
は Status: 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ポートのみを許可する最も基本的な設定です。
-
デフォルトポリシーを設定:
bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
着信を拒否、発信を許可します。 -
SSHポートを許可:
bash
# デフォルトポート (22/tcp) を許可する場合
sudo ufw allow 22/tcp
# またはアプリケーションプロファイルを使用 (OpenSSHサーバーがインストールされている場合)
# sudo ufw allow OpenSSH
もしSSHポートを2222番などに変更している場合は、そのポート番号を指定します。
bash
# SSHポートが2222番の場合
sudo ufw allow 2222/tcp -
特定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
``
192.168.1.100` 以外のIPからの22番ポートへの通信はデフォルトポリシーによって拒否されます。
この設定の場合、デフォルトポリシーが deny なので、 -
UFWを有効化:
bash
sudo ufw enable
警告が出たらy
を入力します。(事前にSSHルールを設定済みなので、SSH接続は維持されます。)
2. Webサーバー (HTTP/HTTPS)
Webサーバー (Apache, Nginxなど) を運用する場合、HTTP (80番) と HTTPS (443番) ポートへのアクセスを許可する必要があります。
-
デフォルトポリシーを設定:
bash
sudo ufw default deny incoming
sudo ufw default allow outgoing -
SSHポートを許可 (管理のため):
bash
sudo ufw allow 22/tcp
# または sudo ufw allow OpenSSH
または、特定のIPからのSSHのみ許可する場合はsudo ufw allow from <管理IP> to any port 22/tcp
を使用します。 -
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”
“`
-
UFWを有効化:
bash
sudo ufw enable
3. データベースサーバー (例: MySQL/MariaDB)
データベースサーバーは通常、内部ネットワークや特定のアプリケーションサーバーからのみアクセスを許可し、インターネットからの直接アクセスは拒否すべきです。MySQL/MariaDBのデフォルトポートは3306/tcpです。
-
デフォルトポリシーを設定:
bash
sudo ufw default deny incoming
sudo ufw default allow outgoing -
SSHポートを許可 (管理のため):
bash
sudo ufw allow 22/tcp
または、特定のIPからのSSHのみ許可。 -
特定の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)によってブロックされます。 -
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サポートを無効にすることができます。
- 設定ファイルを編集します。
bash
sudo nano /etc/default/ufw - ファイル内の
IPV6=
で始まる行を見つけ、値をyes
からno
に変更します。
IPV6=no
- ファイルを保存して閉じます。
- UFWをリロードするか、無効化してから再度有効化します。
bash
# 無効化・有効化で変更を反映させる
sudo ufw disable
sudo ufw enable
# または、reloadでも反映されることがあるが disable/enable が確実
# sudo ufw reload
これでIPv6に関するルールは無視され、IPv4のみが対象となります。
IPv6を使用する場合は、IPv4と同様に、必要なポートに対してIPv6のルールも適切に設定されていることを確認してください。多くの ufw allow
や ufw 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の状態(有効/無効)、デフォルトポリシー、および設定されているルールを確認できます。verbose
やnumbered
オプションは状況把握に役立ちます。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を使用して効果的なファイアウォール設定を行うための一助となれば幸いです。