序章

UFW( u ncomplicated f ire w all)は、上で実行されるファイアウォール構成ツールです。 iptables、Ubuntuディストリビューションにデフォルトで含まれています。 コマンドラインを介して一般的なファイアウォールのユースケースを構成するための合理化されたインターフェイスを提供します。

このチートシートスタイルガイドは、ポート、ネットワークインターフェイス、および送信元IPアドレスによってサービスを許可およびブロックする方法の例を含む、一般的なUFWのユースケースとコマンドへのクイックリファレンスを提供します。

このガイドの使用方法

  • このガイドは、自己完結型のコマンドラインスニペットを含むチートシート形式です。
  • 完了しようとしているタスクに関連するセクションにジャンプします。
  • このガイドのコマンドで強調表示されたテキストが表示された場合、このテキストは独自のネットワークのIPアドレスを参照している必要があることに注意してください。

現在のUFWルールセットを次のコマンドで確認できることを忘れないでください sudo ufw status また sudo ufw status verbose.

UFWステータスを確認する

かどうかを確認するには ufw 有効になっている場合は、次を実行します。

  1. sudo ufw status
Output
Status: inactive

出力には、ファイアウォールがアクティブかどうかが示されます。

UFWを有効にする

あなたが得た場合 Status: inactive 実行時のメッセージ ufw status、これは、ファイアウォールがシステムでまだ有効になっていないことを意味します。 有効にするには、コマンドを実行する必要があります。

デフォルトでは、UFWを有効にすると、サーバー上のすべてのポートへの外部アクセスがブロックされます。 実際には、SSH経由でサーバーに接続し、有効にする場合を意味します ufw SSHポート経由のアクセスを許可する前に、切断されます。 その場合は、ファイアウォールを有効にする前に、このガイドのSSHアクセスを有効にする方法のセクションに必ず従ってください。

システムでUFWを有効にするには、次のコマンドを実行します。

  1. sudo ufw enable

次のような出力が表示されます。

Output
Firewall is active and enabled on system startup

現在ブロックまたは許可されているものを確認するには、 verbose 実行時のパラメータ ufw status、 次のように:

  1. sudo ufw status
Output
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip

UFWを無効にする

何らかの理由でUFWを無効にする必要がある場合は、次のコマンドを使用して無効にすることができます。

  1. sudo ufw disable

このコマンドは、システムのファイアウォールサービスを完全に無効にすることに注意してください。

IPアドレスをブロックする

特定のIPアドレスから発信されたすべてのネットワーク接続をブロックするには、次のコマンドを実行して、強調表示されたIPアドレスをブロックするIPアドレスに置き換えます。

  1. sudo ufw deny from 203.0.113.100
Output
Rule added

この例では、 from 203.0.113.100 sourceIPアドレス「203.0.113.100」を指定します。

実行した場合 sudo ufw status これで、指定されたIPアドレスが拒否されたものとしてリストされます。

Output
Status: active To Action From -- ------ ---- Anywhere DENY 203.0.113.100

着信または発信するすべての接続は、指定されたIPアドレスに対してブロックされます。

サブネットをブロックする

完全なサブネットをブロックする必要がある場合は、サブネットアドレスを次のように使用できます。 from のパラメータ ufw deny 指図。 これにより、サブネット例のすべてのIPアドレスがブロックされます 203.0.113.0/24:

  1. sudo ufw deny from 203.0.113.0/24
Output
Rule added

ネットワークインターフェイスへの着信接続をブロックする

特定のIPアドレスから特定のネットワークインターフェイスへの着信接続をブロックするには、次のコマンドを実行して、強調表示されたIPアドレスをブロックするIPアドレスに置き換えます。

  1. sudo ufw deny in on eth0 from 203.0.113.100
Output
Rule added

The in パラメータは ufw 着信接続にのみルールを適用し、 on eth0 パラメータは、ルールがにのみ適用されることを指定します eth0 インターフェース。 これは、複数のネットワークインターフェイス(仮想インターフェイスを含む)を備えたシステムがあり、これらのインターフェイスのすべてではなく一部への外部アクセスをブロックする必要がある場合に役立つことがあります。

IPアドレスを許可する

特定のIPアドレスから発信されたすべてのネットワーク接続を許可するには、次のコマンドを実行して、強調表示されたIPアドレスをアクセスを許可するIPアドレスに置き換えます。

  1. sudo ufw allow from 203.0.113.101
Output
Rule added

実行した場合 sudo ufw status これで、これに似た出力が表示され、単語が表示されます ALLOW 追加したIPアドレスの横。

Output
Status: active To Action From -- ------ ---- ... Anywhere ALLOW 203.0.113.101

次のようなホストに対応するサブネットマスクを提供することで、サブネット全体からの接続を許可することもできます。 203.0.113.0/24.

ネットワークインターフェイスへの着信接続を許可する

特定のIPアドレスから特定のネットワークインターフェイスへの着信接続を許可するには、次のコマンドを実行して、強調表示されたIPアドレスを許可するIPアドレスに置き換えます。

  1. sudo ufw allow in on eth0 from 203.0.113.102
Output
Rule added

The in パラメータは ufw 着信接続にのみルールを適用し、 on eth0 パラメータは、ルールがにのみ適用されることを指定します eth0 インターフェース。

実行した場合 sudo ufw status これで、次のような出力が表示されます。

Output
Status: active To Action From -- ------ ---- ... Anywhere on eth0 ALLOW 203.0.113.102

UFWルールを削除する

以前にUFW内で設定したルールを削除するには、 ufw delete ルールが続く(allow また deny)およびターゲット仕様。 次の例では、IPアドレスからのすべての接続を許可するように以前に設定されたルールを削除します。 203.0.113.101:

  1. sudo ufw delete allow from 203.0.113.101
Output
Rule deleted

削除するルールを指定するもう1つの方法は、ルールIDを指定することです。 この情報は、次のコマンドで取得できます。

  1. sudo ufw status numbered
Output
Status: 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番目のルールは、 eth0 IPアドレスから入ってくるインターフェース 203.0.113.102.

デフォルトでは、明示的に許可されていない限り、UFWはすでにすべての外部アクセスをブロックしているため、最初のルールは冗長であるため、削除できます。 IDでルールを削除するには、次のコマンドを実行します。

  1. sudo ufw delete 1

操作を確認し、提供するIDが削除する正しいルールを参照していることを確認するように求められます。

Output
Deleting: deny from 203.0.113.100 Proceed with operation (y|n)? y Rule deleted

ルールをもう一度リストすると sudo ufw status、ルールが削除されたことがわかります。

利用可能なアプリケーションプロファイルのリスト

インストール時に、ネットワーク通信に依存するアプリケーションは通常、外部アドレスからの接続を許可するために使用できるUFWプロファイルを設定します。 これは多くの場合、実行と同じです ufw allow from、サービスが使用する特定のポート番号を抽象化し、参照されるサービスにユーザーフレンドリーな命名法を提供するショートカットを提供するという利点があります。

現在利用可能なプロファイルを一覧表示するには、次のコマンドを実行します。

  1. sudo ufw app list

Webサーバーやその他のネットワーク依存ソフトウェアなどのサービスをインストールし、プロファイルがUFW内で利用可能になっていない場合は、最初にサービスが有効になっていることを確認してください。 リモートサーバーの場合、通常、OpenSSHをすぐに利用できます。

Output
Available applications: OpenSSH

アプリケーションプロファイルを有効にする

UFWアプリケーションプロファイルを有効にするには、 ufw allow 有効にするアプリケーションプロファイルの名前が続きます。これは、 sudo ufw app list 指図。 次の例では、OpenSSHプロファイルを有効にしています。これにより、デフォルトのSSHポートですべての着信SSH接続が許可されます。

  1. sudo ufw allow “OpenSSH”
Output
Rule added Rule added (v6)

次のような複数の単語で構成されるプロファイル名を引用することを忘れないでください。 Nginx HTTPS.

アプリケーションプロファイルを無効にする

以前にUFW内で設定したアプリケーションプロファイルを無効にするには、対応するルールを削除する必要があります。 たとえば、次の出力について考えてみます。 sudo ufw status:

  1. sudo ufw status
Output
Status: 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 ルール:

  1. sudo ufw allow "Nginx HTTPS"
  2. sudo ufw delete allow "Nginx Full"

利用可能なすべてのアプリケーションプロファイルをリストできることを忘れないでください sudo ufw app list.

SSHを許可する

リモートサーバーを使用する場合は、サーバーにリモートでログインできるように、SSHポートが接続に対して開いていることを確認する必要があります。

次のコマンドは、OpenSSH UFWアプリケーションプロファイルを有効にし、サーバー上のデフォルトのSSHポートへのすべての接続を許可します。

  1. sudo ufw allow OpenSSH
Output
Rule added Rule added (v6)

ユーザーフレンドリーではありませんが、別の構文では、SSHサービスの正確なポート番号を指定します。これは通常、次のように設定されます。 22 デフォルト:

  1. sudo ufw allow 22
Output
Rule added Rule added (v6)

特定のIPアドレスまたはサブネットからの着信SSHを許可する

特定のIPアドレスまたはサブネットからの着信接続を許可するには、 from 接続のソースを定義するディレクティブ。 これには、宛先アドレスも指定する必要があります。 to パラメータ。 このルールをSSHのみにロックするには、 proto (プロトコル)から tcp 次に、 port パラメータを設定し、 22、SSHのデフォルトポート。

次のコマンドは、IPアドレスからのSSH接続のみを許可します 203.0.113.103:

  1. sudo ufw allow from 203.0.113.103 proto tcp to any port 22
Output
Rule added

サブネットアドレスを次のように使用することもできます from ネットワーク全体からの着信SSH接続を許可するパラメータ:

  1. sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22
Output
Rule added

特定のIPアドレスまたはサブネットからの着信Rsyncを許可する

ポートで実行されるRsyncプログラム 873、あるコンピュータから別のコンピュータにファイルを転送するために使用できます。

着信を許可するには rsync 特定のIPアドレスまたはサブネットからの接続には、 from 送信元IPアドレスと port 宛先ポートを設定するパラメータ 873. 次のコマンドは、IPアドレスからのRsync接続のみを許可します 203.0.113.103:

  1. sudo ufw allow from 203.0.113.103 to any port 873
Output
Rule added

全体を許可するには 203.0.113.0/24 できるサブネット rsync サーバーに次のコマンドを実行します。

  1. sudo ufw allow from 203.0.113.0/24 to any port 873
Output
Rule added

Nginx HTTP/HTTPSを許可する

インストール時に、NginxWebサーバーはサーバー内にいくつかの異なるUFWプロファイルを設定します。 Nginxをインストールしてサービスとして有効にしたら、次のコマンドを実行して、使用可能なプロファイルを特定します。

  1. sudo ufw app list | grep Nginx
Output
Nginx Full Nginx HTTP Nginx HTTPS

HTTPトラフィックとHTTPSトラフィックの両方を有効にするには、 Nginx Full. それ以外の場合は、いずれかを選択してください Nginx HTTP HTTPまたは Nginx HTTPS HTTPSのみを許可します。

次のコマンドは、サーバー(ポート)でHTTPトラフィックとHTTPSトラフィックの両方を許可します 80443):

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

Apache HTTP/HTTPSを許可する

インストール時に、ApacheWebサーバーはサーバー内にいくつかの異なるUFWプロファイルを設定します。 Apacheをインストールしてサービスとして有効にしたら、次のコマンドを実行して、使用可能なプロファイルを特定します。

  1. sudo ufw app list | grep Apache
Output
Apache Apache Full Apache Secure

HTTPトラフィックとHTTPSトラフィックの両方を有効にするには、 Apache Full. それ以外の場合は、いずれかを選択してください Apache HTTPまたは Apache Secure HTTPSの場合。

次のコマンドは、サーバー(ポート)でHTTPトラフィックとHTTPSトラフィックの両方を許可します 80443):

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

すべての着信HTTPを許可する(ポート 80)

ApacheやNginxなどのWebサーバーは通常、ポートでHTTPリクエストをリッスンします 80. 着信トラフィックのデフォルトポリシーがドロップまたは拒否に設定されている場合は、ポートでの外部アクセスを許可するUFWルールを作成する必要があります 80. ポート番号またはサービス名のいずれかを使用できます(http)このコマンドのパラメータとして。

すべての着信HTTP(ポート)を許可するには 80)接続、実行:

  1. sudo ufw allow http
Output
Rule added Rule added (v6)

別の構文は、HTTPサービスのポート番号を指定することです。

  1. sudo ufw allow 80
Output
Rule added Rule added (v6)

すべての着信HTTPSを許可する(ポート 443)

HTTPSは通常、ポートで実行されます 443. 着信トラフィックのデフォルトポリシーがドロップまたは拒否に設定されている場合は、ポートでの外部アクセスを許可するUFWルールを作成する必要があります 443. ポート番号またはサービス名のいずれかを使用できます(https)このコマンドのパラメータとして。

すべての着信HTTPS(ポート)を許可するには 443)接続、実行:

  1. sudo ufw allow https
Output
Rule added Rule added (v6)

別の構文は、HTTPSサービスのポート番号を指定することです。

  1. sudo ufw allow 443
Output
Rule added Rule added (v6)

すべての着信HTTPおよびHTTPSを許可する

HTTPトラフィックとHTTPSトラフィックの両方を許可する場合は、両方のポートを許可する単一のルールを作成できます。 この使用法では、プロトコルを次のように定義する必要があります。 proto パラメータ。この場合は次のように設定する必要があります。 tcp.

すべての着信HTTPおよびHTTPS(ポート)を許可するには 80443)接続、実行:

  1. sudo ufw allow proto tcp from any to any port 80,443
Output
Rule added Rule added (v6)

特定のIPアドレスまたはサブネットからのMySQL接続を許可する

MySQLはポートでクライアント接続をリッスンします 3306. MySQLデータベースサーバーがリモートサーバー上のクライアントによって使用されている場合は、そのアクセスを許可するUFWルールを作成する必要があります。

特定のIPアドレスまたはサブネットからの着信MySQL接続を許可するには、 from 送信元IPアドレスと port 宛先ポートを設定するパラメータ 3306.

次のコマンドはIPアドレスを許可します 203.0.113.103 サーバーのMySQLポートに接続するには:

  1. sudo ufw allow from 203.0.113.103 to any port 3306
Output
Rule added

全体を許可するには 203.0.113.0/24 MySQLサーバーに接続できるようにするサブネット、実行:

  1. sudo ufw allow from 203.0.113.0/24 to any port 3306
Output
Rule added

特定のIPアドレスまたはサブネットからのPostgreSQL接続を許可する

PostgreSQLはポートでクライアント接続をリッスンします 5432. PostgreSQLデータベースサーバーがリモートサーバー上のクライアントによって使用されている場合は、そのトラフィックを許可する必要があります。

特定のIPアドレスまたはサブネットからの着信PostgreSQL接続を許可するには、 from パラメータを設定し、ポートをに設定します 5432:

  1. sudo ufw allow from 203.0.113.103 to any port 5432
Output
Rule added

全体を許可するには 203.0.113.0/24 PostgreSQLサーバーに接続できるようにするには、サブネットを実行します。

  1. sudo ufw allow from 203.0.113.0/24 to any port 5432
Output
Rule added

送信SMTPメールをブロックする

SendmailやPostfixなどのメールサーバーは通常、ポートを使用します 25 SMTPトラフィックの場合。 サーバーが送信メールを送信してはならない場合は、そのような種類のトラフィックをブロックすることをお勧めします。 送信SMTP接続をブロックするには、次のコマンドを実行します。

  1. sudo ufw deny out 25
Output
Rule added Rule added (v6)

これにより、ファイアウォールがポート上のすべての発信トラフィックをドロップするように構成されます 25. 別のポート番号での発信接続を拒否する必要がある場合は、このコマンドを繰り返して置き換えることができます 25 ブロックするポート番号を指定します。

結論

UFWは、適切に構成されている場合にサーバーのセキュリティを大幅に向上させることができる強力なツールです。 このリファレンスガイドでは、Ubuntuでファイアウォールを構成するためによく使用される一般的なUFWルールについて説明します。

このガイドのほとんどのコマンドは、送信元IPアドレスや宛先ポートなどのパラメーターを変更することにより、さまざまなユースケースやシナリオに合わせて調整できます。 各コマンドパラメータと使用可能な修飾子の詳細については、 man UFWのマニュアルをチェックするユーティリティ:

  1. man ufw

Ubuntuのドキュメント公式UFWページは、より高度なユースケースと例のリファレンスとして使用できるもう1つのリソースです。