前書き

UFWは、デフォルトでUbuntuに含まれているiptables用のファイアウォール構成ツールです。 この虎の巻スタイルのガイドは、iptablesファイアウォールルールを作成するUFWコマンドのクイックリファレンスを提供し、一般的な日常のシナリオで役立ちます。 これには、ポート、ネットワークインターフェイス、および送信元IPアドレスによってさまざまなサービスを許可およびブロックするUFWの例が含まれます。

このガイドの使用方法
  • UFWを使用してファイアウォールを設定し始めたばかりの場合は、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntuをご覧ください-14-04 [UFWの紹介]

  • ここで説明するルールのほとんどは、デフォルトのUFWルールセットを使用していることを前提としています。 つまり、デフォルトのポリシーを介して、発信トラフィックを許可し、着信トラフィックを拒否するように設定されているため、次のトラフィックを選択的に許可する必要があります。

  • 達成しようとしているものに該当する後続のセクションを使用します。 ほとんどのセクションは他のセクションに基づいていないため、以下の例を個別に使用できます。

  • このページの右側にある[コンテンツ]メニュー(広いページ幅)またはブラウザの検索機能を使用して、必要なセクションを見つけます

  • 指定されたコマンドラインの例をコピーして貼り付け、赤の値を独自の値に置き換えます

現在のUFWルールセットは、「+ sudo ufw status 」または「 sudo ufw status verbose +」で確認できることに注意してください。

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

特定のIPアドレス、たとえば「15.15.15.51」から発信されるすべてのネットワーク接続をブロックするには、次のコマンドを実行します。

sudo ufw deny from

この例では、「+ from 15.15.15.51+」は「15.15.15.51」の* source * IPアドレスを指定します。 必要に応じて、代わりに「+ 15.15.15.0 / 24 +」などのサブネットを指定できます。 送信元IPアドレスは、* allow *ルールを含む任意のファイアウォールルールで指定できます。

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

特定のIPアドレスからの接続をブロックするには、たとえば 「15.15.15.51」、特定のネットワークインターフェース、例: + eth0 +、次のコマンドを使用します:

sudo ufw deny in on eth0 from

これは前の例と同じですが、「+ in on eth0 +」が追加されています。 ネットワークインターフェイスは任意のファイアウォールルールで指定でき、ルールを特定のネットワークに制限するのに最適な方法です。

サービス:SSH

クラウドサーバーを使用している場合は、サーバーに接続して管理できるように、着信SSH接続(ポート22)を許可する必要があります。 このセクションでは、さまざまなSSH関連のルールを使用してファイアウォールを構成する方法について説明します。

SSHを許可

すべての着信SSH接続を許可するには、次のコマンドを実行します。

sudo ufw allow ssh

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

sudo ufw allow 22

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

特定のIPアドレスまたはサブネットからの着信SSH接続を許可するには、ソースを指定します。 たとえば、 `+ 15.15.15.0 / 24 +`サブネット全体を許可する場合、次のコマンドを実行します。

sudo ufw allow from   to any port 22

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

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

特定のIPアドレスまたはサブネットからの着信rsync接続を許可するには、ソースIPアドレスと宛先ポートを指定します。 たとえば、 `+ 15.15.15.0 / 24 +`サブネット全体をサーバーに再同期できるようにするには、次のコマンドを実行します。

sudo ufw allow from  to any port 873

サービス:Webサーバー

ApacheやNginxなどのWebサーバーは、通常、それぞれHTTP接続とHTTPS接続のポート80と443でリクエストをリッスンします。 着信トラフィックのデフォルトポリシーがドロップまたは拒否に設定されている場合、サーバーがそれらの要求に応答できるようにするルールを作成する必要があります。

すべての着信HTTPを許可する

すべての着信HTTP(ポート80)接続を許可するには、次のコマンドを実行します。

sudo ufw allow http

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

sudo ufw allow 80

すべての着信HTTPSを許可する

すべての着信HTTPS(ポート443)接続を許可するには、次のコマンドを実行します。

sudo ufw allow https

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

sudo ufw allow 443

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

HTTPトラフィックとHTTPSトラフィックの両方を許可する場合は、両方のポートを許可する単一のルールを作成できます。 すべての着信HTTPおよびHTTPS(ポート443)接続を許可するには、次のコマンドを実行します。

sudo ufw allow proto tcp from any to any port 80,443

複数のポートを指定する場合、 `+ proto tcp +`でプロトコルを指定する必要があることに注意してください。

サービス:MySQL

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

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

特定のIPアドレスまたはサブネットからの着信MySQL接続を許可するには、ソースを指定します。 たとえば、 `+ 15.15.15.0 / 24 +`サブネット全体を許可する場合、次のコマンドを実行します。

sudo ufw allow from  to any port 3306

MySQLを特定のネットワークインターフェイスに許可する

特定のネットワークインターフェイスへのMySQL接続を許可するには、たとえば、プライベートネットワークインターフェイス「+ eth1 +」があるとします。たとえば、次のコマンドを使用します。

sudo ufw allow in on  to any port 3306

サービス:PostgreSQL

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

特定のIPアドレスまたはサブネットからのPostgreSQL

特定のIPアドレスまたはサブネットからの着信PostgreSQL接続を許可するには、ソースを指定します。 たとえば、 `+ 15.15.15.0 / 24 +`サブネット全体を許可する場合、次のコマンドを実行します。

sudo ufw allow from  to any port 5432

確立された PostgreSQL接続の発信トラフィックを許可する2番目のコマンドは、 `+ OUTPUT `ポリシーが ` ACCEPT +`に設定されていない場合にのみ必要です。

特定のネットワークインターフェイスへのPostgreSQLの許可

特定のネットワークインターフェースへのPostgreSQL接続を許可するには、たとえばプライベートネットワークインターフェース「+ eth1 +」があるとします。たとえば、次のコマンドを使用します。

sudo ufw allow in on  to any port 5432

確立された PostgreSQL接続の発信トラフィックを許可する2番目のコマンドは、 `+ OUTPUT `ポリシーが ` ACCEPT +`に設定されていない場合にのみ必要です。

サービス:メール

SendmailやPostfixなどのメールサーバーは、メール配信に使用されているプロトコルに応じて、さまざまなポートでリッスンします。 メールサーバーを実行している場合は、使用しているプロトコルを特定し、適切な種類のトラフィックを許可します。 また、送信SMTPメールをブロックするルールを作成する方法も示します。

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

サーバーが送信メールを送信してはならない場合、その種のトラフィックをブロックすることができます。 ポート25を使用する送信SMTPメールをブロックするには、次のコマンドを実行します。

sudo ufw deny out 25

これにより、ポート25のすべての発信トラフィックが*ドロップ*されるようにファイアウォールが構成されます。 ポート25の代わりにポート番号で別のサービスを拒否する必要がある場合は、単に置き換えてください。

すべての着信SMTPを許可する

サーバーがポート25のSMTP接続に応答できるようにするには、次のコマンドを実行します。

sudo ufw allow 25

すべての着信IMAPを許可

サーバーがポート143のIMAP接続に応答できるようにするには、次のコマンドを実行します。

sudo ufw allow 143

すべての着信IMAPSを許可

サーバーがポート993のIMAPS接続に応答できるようにするには、次のコマンドを実行します。

sudo ufw allow 993

すべての着信POP3を許可

サーバーがポート110のPOP3接続に応答できるようにするには、次のコマンドを実行します。

sudo ufw allow 110

すべての着信POP3Sを許可する

サーバーがポート995のPOP3S接続に応答できるようにするには、次のコマンドを実行します。

sudo ufw allow 995

結論

これは、UFWを使用してファイアウォールを構成するときに一般的に使用されるコマンドの多くをカバーするはずです。 もちろん、UFWは非常に柔軟なツールなので、ここで説明されていない場合は、コマンドをさまざまなオプションと組み合わせて、特定のニーズに合わせて自由に組み合わせてください。

がんばろう!