序章
UFW( u ncomplicated f ire w all)は、iptables
上で実行されるファイアウォール構成ツールであり、デフォルトでUbuntuディストリビューションに含まれています。 。 コマンドラインを介して一般的なファイアウォールのユースケースを構成するための合理化されたインターフェイスを提供します。
このチートシートスタイルガイドは、ポート、ネットワークインターフェイス、および送信元IPアドレスによってサービスを許可およびブロックする方法の例を含む、一般的なUFWのユースケースとコマンドへのクイックリファレンスを提供します。
このガイドの使用方法
- このガイドは、自己完結型のコマンドラインスニペットを含むチートシート形式です。
- 完了しようとしているタスクに関連するセクションにジャンプします。
- このガイドのコマンドで強調表示されたテキストが表示された場合、このテキストは独自のネットワークのIPアドレスを参照している必要があることに注意してください。
現在のUFWルールセットはsudo ufw status
またはsudo ufw status verbose
で確認できることを忘れないでください。
UFWステータスを確認する
ufw
が有効になっているかどうかを確認するには、次のコマンドを実行します。
sudo ufw status
OutputStatus: inactive
出力には、ファイアウォールがアクティブかどうかが示されます。
UFWを有効にする
ufw status
の実行中にStatus: inactive
メッセージが表示された場合は、システムでファイアウォールがまだ有効になっていないことを意味します。 有効にするには、コマンドを実行する必要があります。
デフォルトでは、UFWを有効にすると、サーバー上のすべてのポートへの外部アクセスがブロックされます。 実際には、SSH経由でサーバーに接続し、SSHポート経由のアクセスを許可する前にufw
を有効にすると、切断されます。 その場合は、ファイアウォールを有効にする前に、このガイドのSSHアクセスを有効にする方法のセクションに必ず従ってください。
システムでUFWを有効にするには、次のコマンドを実行します。
sudo ufw enable
次のような出力が表示されます。
OutputFirewall is active and enabled on system startup
現在ブロックまたは許可されているものを確認するには、次のようにufw status
を実行するときにverbose
パラメーターを使用できます。
sudo ufw status
OutputStatus: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip
UFWを無効にする
何らかの理由でUFWを無効にする必要がある場合は、次のコマンドを使用して無効にすることができます。
sudo ufw disable
このコマンドは、システムのファイアウォールサービスを完全に無効にすることに注意してください。
IPアドレスをブロックする
特定のIPアドレスから発信されたすべてのネットワーク接続をブロックするには、次のコマンドを実行して、強調表示されたIPアドレスをブロックするIPアドレスに置き換えます。
sudo ufw deny from 203.0.113.100
OutputRule added
この例では、from 203.0.113.100
はソースのIPアドレス「203.0.113.100」を指定しています。
ここでsudo ufw status
を実行すると、指定されたIPアドレスが拒否されたものとしてリストされます。
OutputStatus: active To Action From -- ------ ---- Anywhere DENY 203.0.113.100
着信または発信するすべての接続は、指定されたIPアドレスに対してブロックされます。
サブネットをブロックする
完全なサブネットをブロックする必要がある場合は、ufw deny
コマンドのfrom
パラメーターとしてサブネットアドレスを使用できます。 これにより、サブネット203.0.113.0/24
の例のすべてのIPアドレスがブロックされます。
sudo ufw deny from 203.0.113.0/24
OutputRule added
ネットワークインターフェイスへの着信接続をブロックする
特定のIPアドレスから特定のネットワークインターフェイスへの着信接続をブロックするには、次のコマンドを実行して、強調表示されたIPアドレスをブロックするIPアドレスに置き換えます。
sudo ufw deny in on eth0 from 203.0.113.100
OutputRule added
in
パラメーターは、ufw
に着信接続にのみルールを適用するように指示し、on eth0
パラメーターは、ルールがeth0
インターフェース。 これは、複数のネットワークインターフェイス(仮想インターフェイスを含む)を備えたシステムがあり、これらのインターフェイスのすべてではなく一部への外部アクセスをブロックする必要がある場合に役立つことがあります。
IPアドレスを許可する
特定のIPアドレスから発信されたすべてのネットワーク接続を許可するには、次のコマンドを実行して、強調表示されたIPアドレスをアクセスを許可するIPアドレスに置き換えます。
sudo ufw allow from 203.0.113.101
OutputRule added
ここでsudo ufw status
を実行すると、これと同様の出力が表示され、追加したIPアドレスの横にALLOW
という単語が表示されます。
OutputStatus: active To Action From -- ------ ---- ... Anywhere ALLOW 203.0.113.101
203.0.113.0/24
など、ホストに対応するサブネットマスクを指定することで、サブネット全体からの接続を許可することもできます。
ネットワークインターフェイスへの着信接続を許可する
特定のIPアドレスから特定のネットワークインターフェイスへの着信接続を許可するには、次のコマンドを実行して、強調表示されたIPアドレスを許可するIPアドレスに置き換えます。
sudo ufw allow in on eth0 from 203.0.113.102
OutputRule added
in
パラメーターは、ufw
に着信接続にのみルールを適用するように指示し、on eth0
パラメーターは、ルールがeth0
インターフェース。
ここでsudo ufw status
を実行すると、次のような出力が表示されます。
OutputStatus: active To Action From -- ------ ---- ... Anywhere on eth0 ALLOW 203.0.113.102
UFWルールを削除する
以前にUFW内で設定したルールを削除するには、ufw delete
に続いて、ルール(allow
またはdeny
)とターゲット仕様を使用します。 次の例では、203.0.113.101
のIPアドレスからのすべての接続を許可するように以前に設定されたルールを削除します。
sudo ufw delete allow from 203.0.113.101
OutputRule deleted
削除するルールを指定するもう1つの方法は、ルールIDを指定することです。 この情報は、次のコマンドで取得できます。
sudo ufw status numbered
OutputStatus: active To Action From -- ------ ---- [ 1] Anywhere DENY IN 203.0.113.100 [ 2] Anywhere on eth0 ALLOW IN 203.0.113.102
出力から、2つのアクティブなルールがあることがわかります。 値が強調表示されている最初のルールは、IPアドレス203.0.113.100
からのすべての接続を拒否します。 2番目のルールは、IPアドレス203.0.113.102
からのeth0
インターフェースでの接続を許可します。
デフォルトでは、明示的に許可されていない限り、UFWはすでにすべての外部アクセスをブロックしているため、最初のルールは冗長であるため、削除できます。 IDでルールを削除するには、次のコマンドを実行します。
sudo ufw delete 1
操作を確認し、提供するIDが削除する正しいルールを参照していることを確認するように求められます。
OutputDeleting: deny from 203.0.113.100 Proceed with operation (y|n)? y Rule deleted
sudo ufw status
を使用してルールを再度リストすると、ルールが削除されたことがわかります。
利用可能なアプリケーションプロファイルのリスト
インストール時に、ネットワーク通信に依存するアプリケーションは通常、外部アドレスからの接続を許可するために使用できるUFWプロファイルを設定します。 これは多くの場合、ufw allow from
の実行と同じですが、サービスが使用する特定のポート番号を抽象化し、参照されるサービスにわかりやすい命名法を提供するショートカットを提供するという利点があります。
現在利用可能なプロファイルを一覧表示するには、次のコマンドを実行します。
sudo ufw app list
Webサーバーやその他のネットワーク依存ソフトウェアなどのサービスをインストールし、プロファイルがUFW内で利用可能になっていない場合は、最初にサービスが有効になっていることを確認してください。 リモートサーバーの場合、通常、OpenSSHをすぐに利用できます。
OutputAvailable applications: OpenSSH
アプリケーションプロファイルを有効にする
UFWアプリケーションプロファイルを有効にするには、ufw allow
を実行してから、有効にするアプリケーションプロファイルの名前を実行します。これは、sudo ufw app list
コマンドで取得できます。 次の例では、OpenSSHプロファイルを有効にしています。これにより、デフォルトのSSHポートですべての着信SSH接続が許可されます。
sudo ufw allow “OpenSSH”
OutputRule added Rule added (v6)
Nginx HTTPS
など、複数の単語で構成されるプロファイル名を引用することを忘れないでください。
アプリケーションプロファイルを無効にする
以前にUFW内で設定したアプリケーションプロファイルを無効にするには、対応するルールを削除する必要があります。 たとえば、sudo ufw status
からの次の出力について考えてみます。
sudo ufw status
OutputStatus: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)
この出力は、Nginx Full
アプリケーションプロファイルが現在有効になっており、HTTPとHTTPSの両方を介したWebサーバーへのすべての接続を許可していることを示しています。 Webサーバーとの間のHTTPS要求のみを許可する場合は、最初に最も制限の厳しいルール(この場合はNginx HTTPS
)を有効にしてから、現在アクティブなNginx Full
ルール:
sudo ufw allow "Nginx HTTPS" sudo ufw delete allow "Nginx Full"
sudo ufw app list
を使用して、使用可能なすべてのアプリケーションプロファイルを一覧表示できることを忘れないでください。
SSHを許可する
リモートサーバーを使用する場合は、サーバーにリモートでログインできるように、SSHポートが接続に対して開いていることを確認する必要があります。
次のコマンドは、OpenSSH UFWアプリケーションプロファイルを有効にし、サーバー上のデフォルトのSSHポートへのすべての接続を許可します。
sudo ufw allow OpenSSH
OutputRule added Rule added (v6)
ユーザーフレンドリーではありませんが、代替構文はSSHサービスの正確なポート番号を指定することです。これは通常、デフォルトで22
に設定されています。
sudo ufw allow 22
OutputRule added Rule added (v6)
特定のIPアドレスまたはサブネットからの着信SSHを許可する
特定のIPアドレスまたはサブネットからの着信接続を許可するには、from
ディレクティブを含めて接続のソースを定義します。 これには、to
パラメーターを使用して宛先アドレスも指定する必要があります。 このルールをSSHのみにロックするには、proto
(プロトコル)をtcp
に制限してから、port
パラメーターを使用して22
に設定します。 、SSHのデフォルトポート。
次のコマンドは、IPアドレス203.0.113.103
からのSSH接続のみを許可します。
sudo ufw allow from 203.0.113.103 proto tcp to any port 22
OutputRule added
サブネットアドレスをfrom
パラメータとして使用して、ネットワーク全体からの着信SSH接続を許可することもできます。
sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22
OutputRule added
特定のIPアドレスまたはサブネットからの着信Rsyncを許可する
ポート873
で実行されるRsyncプログラムを使用して、あるコンピューターから別のコンピューターにファイルを転送できます。
特定のIPアドレスまたはサブネットからの着信rsync
接続を許可するには、from
パラメーターを使用して送信元IPアドレスを指定し、port
パラメーターを使用して宛先ポート873
。 次のコマンドは、IPアドレス203.0.113.103
からのRsync接続のみを許可します。
sudo ufw allow from 203.0.113.103 to any port 873
OutputRule added
203.0.113.0/24
サブネット全体がサーバーに対してrsync
できるようにするには、次のコマンドを実行します。
sudo ufw allow from 203.0.113.0/24 to any port 873
OutputRule added
Nginx HTTP/HTTPSを許可する
インストール時に、NginxWebサーバーはサーバー内にいくつかの異なるUFWプロファイルを設定します。 Nginxをインストールしてサービスとして有効にしたら、次のコマンドを実行して、使用可能なプロファイルを特定します。
sudo ufw app list | grep Nginx
Output Nginx Full Nginx HTTP Nginx HTTPS
HTTPトラフィックとHTTPSトラフィックの両方を有効にするには、Nginx Full
を選択します。 それ以外の場合は、Nginx HTTP
を選択してHTTPのみを許可するか、Nginx HTTPS
を選択してHTTPSのみを許可します。
次のコマンドは、サーバー(ポート80
および443
)でHTTPトラフィックとHTTPSトラフィックの両方を許可します。
sudo ufw allow "Nginx Full"
OutputRule added Rule added (v6)
Apache HTTP/HTTPSを許可する
インストール時に、ApacheWebサーバーはサーバー内にいくつかの異なるUFWプロファイルを設定します。 Apacheをインストールしてサービスとして有効にしたら、次のコマンドを実行して、使用可能なプロファイルを特定します。
sudo ufw app list | grep Apache
Output Apache Apache Full Apache Secure
HTTPトラフィックとHTTPSトラフィックの両方を有効にするには、Apache Full
を選択します。 それ以外の場合は、HTTPの場合はApache
を選択し、HTTPSの場合はApache Secure
を選択します。
次のコマンドは、サーバー(ポート80
および443
)でHTTPトラフィックとHTTPSトラフィックの両方を許可します。
sudo ufw allow "Nginx Full"
OutputRule added Rule added (v6)
すべての着信HTTPを許可する(ポート80
)
ApacheやNginxなどのWebサーバーは通常、ポート80
でHTTPリクエストをリッスンします。 着信トラフィックのデフォルトポリシーがドロップまたは拒否に設定されている場合は、ポート80
での外部アクセスを許可するUFWルールを作成する必要があります。 このコマンドのパラメーターとして、ポート番号またはサービス名(http
)のいずれかを使用できます。
すべての着信HTTP(ポート80
)接続を許可するには、次のコマンドを実行します。
sudo ufw allow http
OutputRule added Rule added (v6)
別の構文は、HTTPサービスのポート番号を指定することです。
sudo ufw allow 80
OutputRule added Rule added (v6)
すべての着信HTTPSを許可する(ポート443
)
HTTPSは通常、ポート443
で実行されます。 着信トラフィックのデフォルトポリシーがドロップまたは拒否に設定されている場合は、ポート443
での外部アクセスを許可するUFWルールを作成する必要があります。 このコマンドのパラメーターとして、ポート番号またはサービス名(https
)のいずれかを使用できます。
すべての着信HTTPS(ポート443
)接続を許可するには、次のコマンドを実行します。
sudo ufw allow https
OutputRule added Rule added (v6)
別の構文は、HTTPSサービスのポート番号を指定することです。
sudo ufw allow 443
OutputRule added Rule added (v6)
すべての着信HTTPおよびHTTPSを許可する
HTTPトラフィックとHTTPSトラフィックの両方を許可する場合は、両方のポートを許可する単一のルールを作成できます。 この使用法では、proto
パラメーターを使用してプロトコルも定義する必要があります。この場合、このパラメーターはtcp
に設定する必要があります。
すべての着信HTTPおよびHTTPS(ポート80
および443
)接続を許可するには、次のコマンドを実行します。
sudo ufw allow proto tcp from any to any port 80,443
OutputRule added Rule added (v6)
特定のIPアドレスまたはサブネットからのMySQL接続を許可する
MySQLはポート3306
でクライアント接続をリッスンします。 MySQLデータベースサーバーがリモートサーバー上のクライアントによって使用されている場合は、そのアクセスを許可するUFWルールを作成する必要があります。
特定のIPアドレスまたはサブネットからの着信MySQL接続を許可するには、from
パラメーターを使用して送信元IPアドレスを指定し、port
パラメーターを使用して宛先ポート3306
を設定します。
次のコマンドにより、IPアドレス203.0.113.103
がサーバーのMySQLポートに接続できるようになります。
sudo ufw allow from 203.0.113.103 to any port 3306
OutputRule added
203.0.113.0/24
サブネット全体がMySQLサーバーに接続できるようにするには、次のコマンドを実行します。
sudo ufw allow from 203.0.113.0/24 to any port 3306
OutputRule added
特定のIPアドレスまたはサブネットからのPostgreSQL接続を許可する
PostgreSQLはポート5432
でクライアント接続をリッスンします。 PostgreSQLデータベースサーバーがリモートサーバー上のクライアントによって使用されている場合は、そのトラフィックを許可する必要があります。
特定のIPアドレスまたはサブネットからの着信PostgreSQL接続を許可するには、from
パラメーターで送信元を指定し、ポートを5432
に設定します。
sudo ufw allow from 203.0.113.103 to any port 5432
OutputRule added
203.0.113.0/24
サブネット全体がPostgreSQLサーバーに接続できるようにするには、次のコマンドを実行します。
sudo ufw allow from 203.0.113.0/24 to any port 5432
OutputRule added
送信SMTPメールをブロックする
SendmailやPostfixなどのメールサーバーは通常、SMTPトラフィックにポート25
を使用します。 サーバーが送信メールを送信してはならない場合は、そのような種類のトラフィックをブロックすることをお勧めします。 送信SMTP接続をブロックするには、次のコマンドを実行します。
sudo ufw deny out 25
OutputRule added Rule added (v6)
これにより、ファイアウォールがポート25
のすべての発信トラフィックをドロップするように構成されます。 別のポート番号での発信接続を拒否する必要がある場合は、このコマンドを繰り返して、25
をブロックするポート番号に置き換えることができます。
結論
UFWは、適切に構成されている場合にサーバーのセキュリティを大幅に向上させることができる強力なツールです。 このリファレンスガイドでは、Ubuntuでファイアウォールを構成するためによく使用される一般的なUFWルールについて説明します。
このガイドのほとんどのコマンドは、送信元IPアドレスや宛先ポートなどのパラメーターを変更することにより、さまざまなユースケースやシナリオに合わせて調整できます。 各コマンドパラメータと使用可能な修飾子の詳細については、man
ユーティリティを使用してUFWのマニュアルを確認できます。
man ufw
Ubuntuのドキュメントの公式UFWページは、より高度なユースケースと例のリファレンスとして使用できるもう1つのリソースです。