UFWまたはSimpleFirewallは、ファイアウォールの構成プロセスを簡素化するように設計された「iptables」のインターフェースです。 iptables
は信頼性が高く柔軟なツールですが、初心者がそれを使用してファイアウォールを適切に構成する方法を学ぶことは困難です。ネットワークの保護を開始したいが、使用するツールがわからない場合は、UFWが適切な選択となる可能性があります。
このチュートリアルでは、Ubuntu14.04でUFWを使用してファイアウォールを設定する方法を示します。
このチュートリアルの使用を開始する前に、root以外のスーパーユーザーアカウント(Ubuntuサーバーに設定されたsudo特権を持つユーザー)を用意しておく必要があります。この操作の実行方法については、[Linuxでroot以外のユーザーにsudo権限を追加する](https://cloud.tencent.com/developer/article/1200218?from=10680)を参照してください。サーバーをお持ちでない学生は、[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には、無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs/lab/10081?from=10680)を使用して実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。
UFWはデフォルトでUbuntuにインストールされます。何らかの理由でアンインストールされている場合は、 apt-get
コマンドを使用してインストールできます。
sudo apt-get install ufw
UbuntuサーバーでIPv6が有効になっている場合は、IPv4に加えてIPv6ファイアウォールルールも管理できるように、IPv6をサポートするようにUFWを構成してください。これを行うには、お気に入りのエディターでUFW構成を開きます。 nanoを使用します:
sudo nano /etc/default/ufw
次に、「IPV6」の値が「yes」であることを確認します。次のようになります。
...
IPV6=yes
...
保存して終了。 「Ctrl-X」をクリックしてファイルを終了し、「Y」をクリックして変更を保存し、「ENTER」をクリックしてファイル名を確認します。
UFWを有効にすると、IPv4とIPv6の両方のファイアウォールルールを書き込むように構成されます。
このチュートリアルはIPv4で書かれていますが、有効にしている限り、通常どおりIPv6を使用できます。
次のコマンドを使用して、いつでもUFWのステータスを確認できます。
sudo ufw status verbose
デフォルトではUFWは無効になっているため、次のように表示されます。
Status: inactive
UFWがアクティブな場合、出力にはアクティブであることが示され、設定されているすべてのルールが一覧表示されます。たとえば、ファイアウォールがどこからでもSSH(ポート22)接続を許可するように設定されている場合、出力は次のようになります。
Status: active
Logging:on(low)
Default:deny(incoming),allow(outgoing),disabled(routed)
New profiles: skip
To Action From
- - - - - - - - - - - - 22 /tcp ALLOW IN Anywhere
したがって、UFWがファイアウォールをどのように構成しているかを確認する必要がある場合は、statusコマンドを使用してください。
UFWを有効にする前に、SSH経由で接続できるようにファイアウォールが構成されていることを確認する必要があります。デフォルトのポリシーを設定することから始めましょう。
ファイアウォールを使い始めたばかりの場合、最初に定義するルールはデフォルトのポリシーです。これらのルールは、他のルールと明示的に一致しないトラフィックの処理方法を制御します。デフォルトでは、UFWはすべての着信接続を拒否し、すべての発信接続を許可するように設定されています。つまり、[クラウドサーバー](https://cloud.tencent.com/product/cvm?from=10680)にアクセスしようとする人は誰も接続できず、サーバー内のすべてのアプリケーションが外の世界にアクセスできます。
このチュートリアルに確実に従うことができるように、UFWルールをデフォルト値に戻しましょう。 UFWで使用されるデフォルト値を設定するには、次のコマンドを使用します。
sudo ufw default deny incoming
sudo ufw default allow outgoing
ご想像のとおり、これらのコマンドはデフォルト値を設定して、着信を拒否し、発信接続を許可します。これらのファイアウォールのデフォルトは、パーソナルコンピュータの要件を満たすにはそれ自体で十分な場合がありますが、サーバーは通常、外部ユーザーからの着信要求に応答する必要があります。次に調査します。
ここでUFWファイアウォールを有効にすると、すべての着信接続が拒否されます。つまり、サーバーがこれらのタイプの要求に応答するようにする場合は、SSHやHTTP接続などの正当な着信接続を明示的に許可するルールを作成する必要があります。クラウドサーバーを使用している場合、サーバーに接続して管理するために、着信SSH接続を許可する必要がある場合があります。
着信SSH接続を許可するようにサーバーを構成するには、次のUFWコマンドを使用できます。
sudo ufw allow ssh
これにより、SSHデーモンがリッスンするポートであるポート22ですべての接続を許可するファイアウォールルールが作成されます。 UFWは、「ssh」とは何か、および他の一連のサービス名を認識しています。これは、 / etc / services
ファイルのポート22を使用するサービスとしてリストされているためです。
サービス名の代わりにポートを指定することで、実際に同等のルールを作成できます。たとえば、このコマンドは上記のコマンドと同じです。
sudo ufw allow 22
別のポートを使用するようにSSHデーモンを構成する場合は、対応するポートを指定する必要があります。たとえば、SSHサーバーがポート2222でリッスンしている場合、次のコマンドを使用して、そのポートでの接続を許可できます。
sudo ufw allow 2222
着信SSH接続を許可するようにファイアウォールが構成されたので、有効にすることができます。
UFWを有効にするには、次のコマンドを使用します。
sudo ufw enable
「コマンドによって既存のssh接続が切断される可能性があります」という警告が表示されます。 SSH接続を許可するファイアウォールルールを設定したので、引き続き使用できます。プロンプト y
に応答します。
これでファイアウォールがアクティブになります。設定されているルールを確認するには、「sudo ufwstatusverbose」コマンドを自由に実行してください。
ここで、サーバーが応答する必要のある他のすべての接続を許可する必要があります。許可する必要のある接続は、特定のニーズによって異なります。幸い、サービス名またはポートに基づいて接続を許可するルールを作成する方法は既にご存知です。これは、ポート22のSSHに対して行いました。
許可する必要がある可能性のあるサービスの非常に一般的な例をいくつか示します。すべての着信接続を許可する他のサービスがある場合は、以下の形式に従ってください。
このコマンドを使用して、暗号化されていないWebサーバーによって使用される接続であるHTTP接続を許可します。
sudo ufw allow http
ポート番号80を使用する場合は、次のコマンドを使用します。
sudo ufw allow 80
次のコマンドを使用して、HTTPS接続(暗号化されたWebサーバーで使用される接続)を許可できます。
sudo ufw allow https
ポート番号443を使用する場合は、次のコマンドを使用します。
sudo ufw allow 443
FTP接続、暗号化されていないファイル転送の場合(おそらく使用しないでください)、次のコマンドを使用できます。
sudo ufw allow ftp
ポート番号21を使用する場合は、次のコマンドを使用します。
sudo ufw allow 21/tcp
UFWを使用してポート範囲を指定できます。一部のアプリケーションは、単一のポートではなく複数のポートを使用します。
たとえば、ポート6000-6007を使用したX11接続を許可するには、次のコマンドを使用します。
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
UFWを使用してポート範囲を指定する場合は、ルールを適用するプロトコル( tcp
または udp
)を指定する必要があります。指定されたプロトコルがなく、2つのプロトコルしか許可されていないため、これについては前に説明しませんでした。これはほとんどの場合問題ありません。
UFWを使用する場合は、IPアドレスを指定することもできます。たとえば、職場や自宅のIPアドレス 15.15.15.51
などの特定のIPアドレスからの接続を許可する場合は、「from」を指定してからIPアドレスを指定する必要があります。
sudo ufw allow from15.15.15.51
「任意のポートに」の後にポート番号を追加して、IPアドレスの接続を許可する特定のポートを指定することもできます。たとえば、 15.15.15.51
がポート22(SSH)に接続できるようにする場合は、次のコマンドを使用します。
sudo ufw allow from15.15.15.51 to any port 22
IPアドレスのサブネットを許可する場合は、CIDR表記を使用してネットマスクを指定できます。たとえば、 15.15.15.1
から 15.15.15.254
までのすべてのIPアドレス範囲を許可する場合は、次のコマンドを使用できます。
sudo ufw allow from15.15.15.0/24
同様に、 15.15.15.0 / 24
のターゲットポートを指定して、サブネット接続を許可することもできます。同様に、例としてポート22(SSH)を使用します。
sudo ufw allow from15.15.15.0/24 to any port 22
特定のネットワークインターフェイスにのみ適用されるファイアウォールルールを作成する場合は、[接続を許可]を指定してから、ネットワークインターフェイスの名前を指定することでこれを行うことができます。
続行する前に、ネットワークインターフェイスを見つけることをお勧めします。これを行うには、次のコマンドを使用します。
ip addr
出力は次のとおりです。
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
...3: eth1:<BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default...
ネットワークインターフェイス名は通常、「eth0」または「eth1」という名前です。
したがって、サーバーがパブリックネットワークインターフェイス eth0
を呼び出す場合は、次のコマンドを使用してHTTPトラフィック(ポート80)を許可できます。
sudo ufw allow in on eth0 to any port 80
そうすることで、サーバーがパブリックインターネットからHTTPリクエストを受信できるようになります。
または、たとえば、[MySQL](https://cloud.tencent.com/product/cdb?from=10680)データベースサーバー(ポート3306)でプライベートネットワークインターフェイス eth1
の接続をリッスンする場合は、次のコマンドを使用できます。
sudo ufw allow in on eth1 to any port 3306
これにより、プライベートネットワーク上の他のサーバーがMySQLデータベースに接続できるようになります。
着信接続のデフォルトポリシーが変更されていない場合、UFWはすべての着信接続を拒否するように構成されています。通常、これにより、特定のポートとIPアドレスを明示的に許可するルールを作成する必要があるため、安全なファイアウォールポリシーを作成するプロセスが簡素化されます。ただし、サーバーが攻撃を受けていることがわかっている場合など、送信元IPアドレスまたはサブネットに基づいて特定の接続を拒否したい場合があります。さらに、デフォルトの着信ポリシーを許可に変更する場合(これはセキュリティ上の理由から推奨されません)、接続を許可しないサービスまたはIPアドレスに対して拒否ルールを作成する必要があります。
** deny **ルールを作成するには、「allow」を「deny」に置き換える必要がない限り、上記のコマンドを使用できます。
たとえば、HTTP接続を拒否するには、次のコマンドを使用できます。
sudo ufw deny http
または、 15.15.15.51
からのすべての接続を拒否する場合は、次のコマンドを使用できます。
sudo ufw deny from15.15.15.51
他の拒否ルールの作成についてサポートが必要な場合は、以前の許可ルールを確認し、それに応じて更新してください。
次に、ルールを削除する方法を見てみましょう。
ファイアウォールルールを削除する方法を知ることは、ファイアウォールルールを作成する方法を知ることと同じくらい重要です。削除するルールを指定するには、ルール番号または実際のルール(ルールの作成時に指定したルールと同様)の2つの方法があります。削除する実際のルールを作成するよりもUFWを初めて使用する方が簡単なので、ルール番号メソッド削除から始めます。
ルール番号を使用してファイアウォールルールを削除する場合、最初に行う必要があるのは、ファイアウォールルールのリストを取得することです。 UFW statusコマンドでは、以下に示すように、オプションで各ルールの横に番号を表示できます。
sudo ufw status numbered
Numbered Output:Status: active
To Action From
- - - - - - - - - - - - [1]22 ALLOW IN 15.15.15.0/24[2]80 ALLOW IN Anywhere
ポート80(HTTP)接続を許可するルール2を削除する場合は、UFWdeleteコマンドで次のように指定できます。
sudo ufw delete2
これにより、確認プロンプトが表示され、ルール2が削除され、HTTP接続が許可されます。 IPv6が有効になっている場合は、対応するIPv6ルールも削除する必要があることに注意してください。
ルール番号の代わりに、削除する実際のルールを指定することもできます。たとえば、「httpを許可する」ルールを削除する場合は、次のように記述できます。
sudo ufw delete allow http
サービス名の代わりに「Allow80」でルールを指定することもできます。
sudo ufw delete allow 80
このメソッドは、IPv4およびIPv6ルール(存在する場合)を削除します。
何らかの理由でUFWを使用しないことにした場合は、次のコマンドでUFWを無効にできます。
sudo ufw disable
UFWを使用して作成したルールは、アクティブではなくなります。後でアクティブにする必要がある場合は、いつでも sudo ufwenable
を実行できます。
UFWルールを構成したが、最初からやり直すことにした場合は、resetコマンドを使用できます。
sudo ufw reset
これにより、UFWが無効になり、以前に定義されたルールが削除されます。デフォルトのポリシーをいつでも変更しても、デフォルトのポリシーは元の設定に変更されないことに注意してください。これにより、UFWの使用を再開できるようになります。
これで、ファイアウォールは(少なくとも)SSH接続を許可するように構成されているはずです。サーバーを機能的に安全にするために不要な接続を制限しながら、サーバーへの他の着信接続を許可するようにしてください。
Ubuntuオープンソース情報チュートリアルの詳細については、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細をご覧ください。
参照:「Ubuntu14.04でUFWを使用してファイアウォールを設定する方法」
Recommended Posts