Ubuntu14.04でUFWを使用してファイアウォールを設定する方法

前書き ##

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

UFWでIPv6を使用する

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のステータスとルールを確認してください

次のコマンドを使用して、いつでも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

ご想像のとおり、これらのコマンドはデフォルト値を設定して、着信を拒否し、発信接続を許可します。これらのファイアウォールのデフォルトは、パーソナルコンピュータの要件を満たすにはそれ自体で十分な場合がありますが、サーバーは通常、外部ユーザーからの着信要求に応答する必要があります。次に調査します。

SSH接続を許可する

ここで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を有効にする

UFWを有効にするには、次のコマンドを使用します。

sudo ufw enable

「コマンドによって既存のssh接続が切断される可能性があります」という警告が表示されます。 SSH接続を許可するファイアウォールルールを設定したので、引き続き使用できます。プロンプト yに応答します。

これでファイアウォールがアクティブになります。設定されているルールを確認するには、「sudo ufwstatusverbose」コマンドを自由に実行してください。

他の接続を許可する

ここで、サーバーが応答する必要のある他のすべての接続を許可する必要があります。許可する必要のある接続は、特定のニーズによって異なります。幸い、サービス名またはポートに基づいて接続を許可するルールを作成する方法は既にご存知です。これは、ポート22のSSHに対して行いました。

許可する必要がある可能性のあるサービスの非常に一般的な例をいくつか示します。すべての着信接続を許可する他のサービスがある場合は、以下の形式に従ってください。

**HTTPポート80 **

このコマンドを使用して、暗号化されていないWebサーバーによって使用される接続であるHTTP接続を許可します。

sudo ufw allow http

ポート番号80を使用する場合は、次のコマンドを使用します。

sudo ufw allow 80

**HTTPSポート443 **

次のコマンドを使用して、HTTPS接続(暗号化されたWebサーバーで使用される接続)を許可できます。

sudo ufw allow https

ポート番号443を使用する場合は、次のコマンドを使用します。

sudo ufw allow 443

**FTPポート21 **

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つのプロトコルしか許可されていないため、これについては前に説明しませんでした。これはほとんどの場合問題ありません。

特定のIPアドレスを許可する

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を使用しないことにした場合は、次のコマンドでUFWを無効にできます。

sudo ufw disable

UFWを使用して作成したルールは、アクティブではなくなります。後でアクティブにする必要がある場合は、いつでも sudo ufwenableを実行できます。

UFWルールのリセット(オプション)

UFWルールを構成したが、最初からやり直すことにした場合は、resetコマンドを使用できます。

sudo ufw reset

これにより、UFWが無効になり、以前に定義されたルールが削除されます。デフォルトのポリシーをいつでも変更しても、デフォルトのポリシーは元の設定に変更されないことに注意してください。これにより、UFWの使用を再開できるようになります。

結論として ##

これで、ファイアウォールは(少なくとも)SSH接続を許可するように構成されているはずです。サーバーを機能的に安全にするために不要な接続を制限しながら、サーバーへの他の着信接続を許可するようにしてください。

Ubuntuオープンソース情報チュートリアルの詳細については、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細をご覧ください。

参照:「Ubuntu14.04でUFWを使用してファイアウォールを設定する方法」

Recommended Posts

Ubuntu14.04でUFWを使用してファイアウォールを設定する方法
Ubuntu18.04でDNSサーバーを設定する方法
Ubuntu14.04でGogsを設定する方法
Ubuntu14.04でRを設定する方法
Ubuntu14.04で本番Elasticsearchクラスターをセットアップする方法
Ubuntu14.04でNginxを使用してパスワード認証を設定する方法
Ubuntu14.04でShinyServerをセットアップする方法
Ubuntu18.04で時刻同期を設定する方法
Ubuntu14.04でHexoを使用してブログを開始する方法
Ubuntu16.04に基づいて固定IPを設定する方法
UbuntuとRaspbianでJavaホームを設定する方法
Ubuntu16.04で匿名ダウンロード用にvsftpdを設定する方法
Ubuntu16.04でApache仮想ホストを設定する方法
Ubuntu20.04でApache仮想ホストを設定する方法
Ubuntu16.04でユーザーディレクトリ用にvsftpdを設定する方法
Ubuntu16.04でPostgreSQLの起動を設定する方法
Ubuntu14.04にDockerを使用してPrometheusをインストールする方法
Ubuntu18.04サーバーで静的IPを設定する方法
Ubuntu18.04サーバーで静的IPを設定する方法
CentOS8でSSHキーを設定する方法
ubuntu14.04で静的IPを設定する方法を詳しく説明します
Ubuntu14.04でRancherを使用してJenkinsを管理する方法
UbuntuでPython3を楽しくプレイする方法
MacOSでVirtualboxを使用してCentOSネットワークをセットアップする
Ubuntu16.04用にGhostワンクリックアプリを設定する方法
Ubuntu16.04でLet&#39;sEncryptを使用してApacheを保護する方法
Ubuntu18.04に基づいて固定IPを構成する方法
UbuntuスタートアップでTmuxサービススクリプトを実行する方法
Ubuntu20.04にRubyをインストールする方法
Ubuntu20.04にMemcachedをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVirtualBoxをインストールする方法
CentOS7でApache仮想ホストを設定する方法
UbuntuにProtobuf3をインストールするための詳細なチュートリアル
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu16.04にNode.jsをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVagrantをインストールする方法
Ubuntu14.04にBacula-Webをインストールする方法
Ubuntu16.04にPostgreSQLをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu18.04にAnaconda3をインストールする方法
UbuntuでGitサーバーを構築する方法を教えてください
Ubuntu20.04でタイムゾーンを設定または変更する方法
Ubuntu18.04にMemcachedをインストールする方法
Ubuntu14.04にMemSQLをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu16.04にMongoDBをインストールする方法
Ubuntu14.04にMailpileをインストールする方法
Ubuntu16.04にPrestaShopをインストールする方法
Ubuntu14.04でPHP7にアップグレードする方法
Ubuntu20.04にSkypeをインストールする方法
Ubuntu20.04にJenkinsをインストールする方法
Ubuntu18.04にPython3.8をインストールする方法
Ubuntu18.04にKVMをインストールする方法
Ubuntu20.04にKVMをインストールする方法
ubuntu14.04にopencv3.0.0をインストールする方法
Ubuntu20.04にAnacondaをインストールする方法
Ubuntu16.04にPrometheusをインストールする方法