UbuntuおよびDebianクラウドサーバーでUFWを使用してファイアウォールを設定する方法
序章
機能するファイアウォールを設定することは、クラウドサーバーを保護するために重要です。 以前は、ファイアウォールの設定は複雑または難解なユーティリティを介して行われました。 これらのユーティリティの多く(例: iptables
)多くの機能が組み込まれていますが、それらを学習して理解するには、ユーザーの余分な努力が必要です。
もう1つのオプションは、UFWまたはUncomplicatedFirewallです。 UFWはフロントエンドです iptables
これは、他のファイアウォール管理ユーティリティよりもユーザーフレンドリーなインターフェイスを提供することを目的としています。 UFWはLinuxコミュニティで十分にサポートされており、通常、多くのディストリビューションにデフォルトでインストールされています。
このチュートリアルでは、UFWを使用してファイアウォールを設定し、UbuntuまたはDebianクラウドサーバーを保護します。 また、ポートとIPアドレスの接続を許可または拒否するUFWデフォルトルールを設定する方法、作成したルールを削除する方法、UFWを無効または有効にする方法、必要に応じてすべてをデフォルト設定にリセットする方法についても学習します。
前提条件
このチュートリアルに従うには、UbuntuまたはDebianのいずれかを実行しているサーバーが必要です。 サーバーには、sudo権限を持つroot以外のユーザーが必要です。 これをUbuntuに設定するには、 Ubuntu20.04を使用したサーバーの初期設定に関するガイドに従ってください。 これをDebian用に設定するには、 Debian11を使用した初期サーバー設定に関するガイドに従ってください。 これらの初期サーバーセットアップガイドはどちらも、マシンにUFWがインストールされていることと、ファイアウォールルールの作成を練習するために使用できる安全な環境があることを確認します。
UFWでのIPv6の使用
仮想プライベートサーバー(VPS)がIPv6用に構成されている場合は、IPv4とIPv6の両方のファイアウォールルールを構成するように、UFWがIPv6をサポートするように構成されていることを確認してください。 これを行うには、好みのテキストエディタでUFW構成ファイルを開きます。 ここでは使用します nano
:
- sudo nano /etc/default/ufw
確認して IPV6
に設定されています yes
:
/etc/default/ufw# /etc/default/ufw
#
# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
# accepted). You will need to 'disable' and then 'enable' the firewall for
# the changes to take affect.
IPV6=yes
…
変更を加えたら、ファイルを保存して終了します。 使用している場合 nano
、 押す CTRL + X
, Y
、 その後 ENTER
.
次に、最初にファイアウォールを無効にして、ファイアウォールを再起動します。
- sudo ufw disable
OutputFirewall stopped and disabled on system startup
次に、もう一度有効にします。
- sudo ufw enable
OutputFirewall is active and enabled on system startup
これで、UFWファイアウォールが、必要に応じてIPv4とIPv6の両方のファイアウォールを構成するように設定されました。 次に、ファイアウォールへの接続のデフォルトルールを調整します。
UFWデフォルトの設定
接続を許可および拒否するためのデフォルトのルールを定義することにより、ファイアウォールの効率を向上させることができます。 UFWのデフォルトでは、すべての着信接続を拒否し、すべての発信接続を許可します。 つまり、サーバーにアクセスしようとするユーザーは接続できませんが、サーバー内のアプリケーションは外部に接続できます。 UFWによって設定されたデフォルトのルールを更新するには、最初に着信接続ルールに対処します。
- sudo ufw default deny incoming
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
次に、発信接続ルールに対処します。
- sudo ufw default allow outgoing
OutputDefault outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
注:より制限を厳しくしたい場合は、すべての送信要求を拒否できます。 このオプションは、個人の好みに基づいています。 たとえば、公開されているクラウドサーバーがある場合は、あらゆる種類のリモートシェル接続を防ぐのに役立ちます。 ただし、すべての発信接続にもルールを設定する必要があるため、ファイアウォールの管理がより面倒になります。 次の方法で、これをデフォルトとして設定できます。
- sudo ufw default deny outgoing
ファイアウォールへの接続を許可する
接続を許可するには、ファイアウォールルールを変更する必要があります。これは、ターミナルでコマンドを発行することで実行できます。 たとえば、今ファイアウォールをオンにすると、すべての着信接続が拒否されます。 SSH経由でサーバーに接続している場合は、サーバーからロックアウトされるため、これは問題になります。 サーバーへのSSH接続を有効にして、これが発生しないようにします。
- sudo ufw allow ssh
変更が成功した場合は、次の出力が表示されます。
OutputRule added
Rule added (v6)
UFWには、次のようないくつかのデフォルトがあります。 ssh
前の例で使用したコマンド。 または、ポートへの着信接続を許可することもできます 22/tcp
、伝送制御プロトコル(TCP)を使用して同じことを実行します。
- sudo ufw allow 22/tcp
すでに実行した後にこれを試した場合 allow ssh
ただし、ルールがすでに存在するため、次のメッセージが表示されます。
OutputSkipping adding existing rule
Skipping adding existing rule (v6)
SSHサーバーがポートで実行されている場合 2222
、同じ構文での接続を許可できますが、ポートに置き換えます 2222
. ポート番号を単独で使用すると、影響がありますのでご注意ください tcp
と udp
同じように:
- sudo ufw allow 2222/tcp
OutputRule added
Rule added (v6)
Webサーバーの保護
ファイル転送プロトコル(FTP)アクセスでWebサーバーを保護するには、ポートへの接続を許可する必要があります 80/tcp
.
ポートの接続を許可する 80
HTTP接続要求をリッスンするApacheやNginxなどのWebサーバーに役立ちます。 これを行うには、ポートへの接続を許可します 80/tcp
:
- sudo ufw allow 80/tcp
UFWは通常、Webサーバーが機能するために必要なルールをプロファイルに提供します。 そうでない場合、Webサーバープロファイルは「WWW」として保存され、次のように開くことができます。 ftp
また tcp
、次の例のように:
- sudo ufw allow www
使用することもできます ftp
またはポート 21
FTP接続を可能にするには:
- sudo ufw allow ftp
- sudo ufw allow 21/tcp
FTP接続の場合、ポートへの接続も許可する必要があります 20
:
- sudo ufw allow 20/tcp
調整は、開く必要のあるポートとサービスによって異なり、テストが必要になる場合があります。 SSH接続も許可したままにしておくことを忘れないでください。
ポート範囲の指定
UFWで許可または拒否するポートの範囲を指定することもできます。 これを行うには、最初に範囲の下限にあるポートを指定し、その後にコロン(:
)、次に範囲の上限でそれに続きます。 最後に、どのプロトコルを指定する必要があります(いずれか tcp
また udp
)ルールを適用する必要があります。
たとえば、次のコマンドは、からのすべてのポートへのTCPアクセスを許可します。 1000
に 2000
、包括的:
- sudo ufw allow 1000:2000/tcp
同様に、次のコマンドは、からのすべてのポートへのUDP接続を拒否します 1234
に 4321
:
- sudo ufw deny 1234:4321/udp
IPアドレスの指定
次のような特定のIPアドレスからの接続を許可できます。 必ずIPアドレスを自分の情報に置き換えてください。
- sudo ufw allow from your_server_ip
これらの例が示すように、特定のポートとIPアドレス接続を選択的に許可することにより、ファイアウォールルールを調整する際に多くの柔軟性があります。 固有のIPアドレスまたはサブネットからの着信接続を許可する方法の詳細については、ガイドをご覧ください。
接続を拒否する
サーバーのすべてのポート(は推奨されません)を開きたい場合は、すべての接続を許可してから、アクセスを許可しないポートを拒否することができます。 次の例は、ポートへのアクセスを拒否する方法です。 80
:
- sudo ufw deny 80/tcp
ルールの削除
管理したルールの一部を削除する場合は、次を使用します delete
削除するルールを指定します。
- sudo ufw delete allow 80/tcp
OutputRule deleted
Rule deleted (v6)
ルールが長く複雑な場合は、別の2段階のアプローチがあります。 まず、現在のルールの番号付きリストを生成します。
- sudo ufw status numbered
次に、この番号付きリストを使用して、現在許可されているルールを確認し、その番号を参照してルールを削除します。
- sudo ufw delete number
OutputStatus: active
To Action From
-- ------ ----
[ 1] OpenSSH ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN Anywhere
[ 3] 2222/tcp ALLOW IN Anywhere
[ 4] 80 ALLOW IN Anywhere
[ 5] 20/tcp ALLOW IN Anywhere
…
たとえば、ポートの場合 80
リストの4番目の場合は、次の構文を使用します。 操作を続行する場合は、質問が表示されることもあります。 あなたはイエスを決めることができます y
またはいいえ n
:
- sudo ufw delete 4
OutputDeleting:
allow 80
Proceed with operation (y|n)? y
Rule deleted (v6)
UFWの有効化
ファイアウォールに適用するすべてのルールを定義したら、UFWを有効にして、それらのルールの適用を開始できます。 SSH経由で接続している場合は、SSHポート(通常はポート)を設定してください 22
、接続を受信できるようにします。 そうしないと、サーバーから自分をロックアウトする可能性があります。
- sudo ufw enable
OutputFirewall is active and enabled on system startup
変更が完了したことを確認するには、ステータスを確認してルールのリストを確認します。
- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
22/tcp ALLOW Anywhere
2222/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
80/tcp DENY Anywhere
…
使用することもできます verbose
より包括的な出力の場合:
- sudo ufw status verbose
UFWを無効にするには、次のコマンドを実行します。
- sudo ufw disable
OutputFirewall stopped and disabled on system startup
デフォルト設定のリセット
何らかの理由でクラウドサーバーのルールをデフォルト設定にリセットする必要がある場合は、 ufw reset
指図。 書くためのプロンプトが表示されることに注意してください y
また n
すべてをリセットする前に、リセットすると既存のSSH接続が中断される可能性があるためです。
- sudo ufw reset
OutputResetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530'
Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530'
Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'
デフォルト設定にリセットすると、UFWが無効になり、以前に定義したルールがすべて削除されます。 ただし、デフォルト設定を変更しても、デフォルト設定は元の設定に変更されません。 これで、UFWを使い始めて、ルールと接続を好みに合わせてカスタマイズできます。
結論
このチュートリアルでは、ポートまたはIPアドレスのサブセットへのアクセスを許可または制限するようにクラウドサーバーをセットアップおよび構成する方法を学習しました。 さらに、不要になったルールを削除し、UFWファイアウォールを無効にしてから有効にすることで、それらの変更が考慮されていることを確認する練習をしました。 最後に、UFWファイアウォールをデフォルト設定にリセットする方法を学びました。 UFWで可能なことの詳細については、 UFW Essentials:Common Firewall Rules andCommandsのガイドをご覧ください。