UFWEssentials:一般的なファイアウォールルールとコマンド
序章
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を有効にする
あなたが得た場合 Status: inactive
実行時のメッセージ ufw status
、これは、ファイアウォールがシステムでまだ有効になっていないことを意味します。 有効にするには、コマンドを実行する必要があります。
デフォルトでは、UFWを有効にすると、サーバー上のすべてのポートへの外部アクセスがブロックされます。 実際には、SSH経由でサーバーに接続し、有効にする場合を意味します ufw
SSHポート経由のアクセスを許可する前に、切断されます。 その場合は、ファイアウォールを有効にする前に、このガイドのSSHアクセスを有効にする方法のセクションに必ず従ってください。
システムでUFWを有効にするには、次のコマンドを実行します。
- sudo ufw enable
次のような出力が表示されます。
OutputFirewall is active and enabled on system startup
現在ブロックまたは許可されているものを確認するには、 verbose
実行時のパラメータ ufw status
、 次のように:
- 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
sourceIPアドレス「203.0.113.100」を指定します。
実行した場合 sudo ufw status
これで、指定されたIPアドレスが拒否されたものとしてリストされます。
OutputStatus: active
To Action From
-- ------ ----
Anywhere DENY 203.0.113.100
着信または発信するすべての接続は、指定されたIPアドレスに対してブロックされます。
サブネットをブロックする
完全なサブネットをブロックする必要がある場合は、サブネットアドレスを次のように使用できます。 from
のパラメータ ufw deny
指図。 これにより、サブネット例のすべてのIPアドレスがブロックされます 203.0.113.0/24
:
- 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
The in
パラメータは ufw
着信接続にのみルールを適用し、 on eth0
パラメータは、ルールがにのみ適用されることを指定します eth0
インターフェース。 これは、複数のネットワークインターフェイス(仮想インターフェイスを含む)を備えたシステムがあり、これらのインターフェイスのすべてではなく一部への外部アクセスをブロックする必要がある場合に役立つことがあります。
IPアドレスを許可する
特定のIPアドレスから発信されたすべてのネットワーク接続を許可するには、次のコマンドを実行して、強調表示されたIPアドレスをアクセスを許可するIPアドレスに置き換えます。
- sudo ufw allow from 203.0.113.101
OutputRule added
実行した場合 sudo ufw status
これで、これに似た出力が表示され、単語が表示されます ALLOW
追加したIPアドレスの横。
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
The 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
)およびターゲット仕様。 次の例では、IPアドレスからのすべての接続を許可するように以前に設定されたルールを削除します。 203.0.113.101
:
- 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番目のルールは、 eth0
IPアドレスから入ってくるインターフェース 203.0.113.102
.
デフォルトでは、明示的に許可されていない限り、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アドレスからのSSH接続のみを許可します 203.0.113.103
:
- 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を許可する
ポートで実行されるRsyncプログラム 873
、あるコンピュータから別のコンピュータにファイルを転送するために使用できます。
着信を許可するには rsync
特定のIPアドレスまたはサブネットからの接続には、 from
送信元IPアドレスと port
宛先ポートを設定するパラメータ 873
. 次のコマンドは、IPアドレスからのRsync接続のみを許可します 203.0.113.103
:
- 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のみを許可します。
次のコマンドは、サーバー(ポート)でHTTPトラフィックとHTTPSトラフィックの両方を許可します 80
と 443
):
- 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
. それ以外の場合は、いずれかを選択してください Apache
HTTPまたは Apache Secure
HTTPSの場合。
次のコマンドは、サーバー(ポート)でHTTPトラフィックとHTTPSトラフィックの両方を許可します 80
と 443
):
- sudo ufw allow "Nginx Full"
OutputRule added
Rule added (v6)
すべての着信HTTPを許可する(ポート 80
)
ApacheやNginxなどのWebサーバーは通常、ポートでHTTPリクエストをリッスンします 80
. 着信トラフィックのデフォルトポリシーがドロップまたは拒否に設定されている場合は、ポートでの外部アクセスを許可するUFWルールを作成する必要があります 80
. ポート番号またはサービス名のいずれかを使用できます(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
. 着信トラフィックのデフォルトポリシーがドロップまたは拒否に設定されている場合は、ポートでの外部アクセスを許可するUFWルールを作成する必要があります 443
. ポート番号またはサービス名のいずれかを使用できます(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などのメールサーバーは通常、ポートを使用します 25
SMTPトラフィックの場合。 サーバーが送信メールを送信してはならない場合は、そのような種類のトラフィックをブロックすることをお勧めします。 送信SMTP接続をブロックするには、次のコマンドを実行します。
- sudo ufw deny out 25
OutputRule added
Rule added (v6)
これにより、ファイアウォールがポート上のすべての発信トラフィックをドロップするように構成されます 25
. 別のポート番号での発信接続を拒否する必要がある場合は、このコマンドを繰り返して置き換えることができます 25
ブロックするポート番号を指定します。
結論
UFWは、適切に構成されている場合にサーバーのセキュリティを大幅に向上させることができる強力なツールです。 このリファレンスガイドでは、Ubuntuでファイアウォールを構成するためによく使用される一般的なUFWルールについて説明します。
このガイドのほとんどのコマンドは、送信元IPアドレスや宛先ポートなどのパラメーターを変更することにより、さまざまなユースケースやシナリオに合わせて調整できます。 各コマンドパラメータと使用可能な修飾子の詳細については、 man
UFWのマニュアルをチェックするユーティリティ:
- man ufw
Ubuntuのドキュメントの公式UFWページは、より高度なユースケースと例のリファレンスとして使用できるもう1つのリソースです。