ウェブサイト検索

Ubuntu および Debian で UFW ファイアウォールをセットアップする方法


正しく機能するファイアウォールは、完全な Linux システム セキュリティの最も重要な部分です。 Debian および Ubuntu ディストリビューションには、デフォルトで UFW (Uncomplicated Firewall) と呼ばれるファイアウォール構成ツールが付属しています。これは、構成および設定を行うための最も人気があり使いやすいコマンド ライン ツールです。 Ubuntu および Debian ディストリビューションでのファイアウォールの管理。

この記事では、Ubuntu および Debian ディストリビューションにUFW ファイアウォールをインストールして設定する方法について説明します。

前提条件

この記事を始める前に、sudo ユーザーまたは root アカウントを使用して Ubuntu または Debian サーバーにログインしていることを確認してください。 sudo ユーザーをお持ちでない場合は、root ユーザーとして次の手順を使用して作成できます。

adduser username
usermod -aG sudo username 
su - username
sudo whoami

Ubuntu と Debian に UFW ファイアウォールをインストールする

UFW (Uncomplicated Firewall) は Ubuntu と Debian にデフォルトでインストールされている必要があります。インストールされていない場合は、次のコマンドを使用して APT パッケージ マネージャーを使用してインストールします。

sudo apt install ufw

UFW ファイアウォールを確認する

インストールが完了したら、次のように入力して UFW のステータスを確認できます。

sudo ufw status verbose

最初のインストールでは、UFW ファイアウォールはデフォルトで無効になっており、出力は以下のようになります。

Status: inactive

UFW ファイアウォールを有効にする

次のコマンドを使用して UFW ファイアウォールをアクティブ化または有効にすることができます。これにより、ファイアウォールがロードされ、起動時に起動できるようになります。

sudo ufw enable

UFW ファイアウォールを無効にするには、次のコマンドを使用します。これにより、ファイアウォールがアンロードされ、起動時にファイアウォールが起動されなくなります。

sudo ufw disable 

UFW のデフォルト ポリシー

デフォルトでは、UFW ファイアウォールはすべての受信接続を拒否し、サーバーへのすべての送信接続のみを許可します。つまり、特別にポートを開かない限り、誰もサーバーにアクセスできませんが、サーバー上で実行中のすべてのサービスやアプリケーションは外部ネットワークにアクセスできます。

デフォルトの UFW ファイアウォール ポリシーは /etc/default/ufw ファイルに配置されており、次のコマンドを使用して変更できます。

sudo ufw default deny incoming
sudo ufw default allow outgoing

UFW アプリケーション プロファイル

APT パッケージ マネージャーを使用してソフトウェア パッケージをインストールすると、サービスを定義し、UFW 設定を保持するアプリケーション プロファイルが /etc/ufw/applications.d ディレクトリに含まれます。

次のコマンドを使用して、サーバー上で使用可能なすべてのアプリケーション プロファイルを一覧表示できます。

sudo ufw app list

システムにインストールされているソフトウェア パッケージに応じて、出力は次のようになります。

Available applications:
  APACHE
  APACHE Full
  APACHE SECURE
  CUPS
  OpenSSH
  Postfix
  Postfix SMTPS
  Postfix Submission

特定のプロファイルおよび定義されたルールに関する詳細情報を取得したい場合は、次のコマンドを使用できます。

sudo ufw app info 'Apache'
Profile: Apache
Title: Web Server 
Description: Apache V2 is the next generation f the omnipresent Apache web server.

Ports:
  80/tcp

UFW で IPv6 を有効にする

サーバーがIPv6で構成されている場合は、UFWIPv6およびIPv4をサポートするように構成されていることを確認してください。これを確認するには、好みのエディターを使用して UFW 構成ファイルを開きます。

sudo vi /etc/default/ufw

次に、図に示すように、構成ファイルで 「IPV6」"yes" に設定されていることを確認します。

IPV6=yes

保存して終了します。次に、次のコマンドを使用してファイアウォールを再起動します。

sudo ufw disable
sudo ufw enable

UFW での SSH 接続を許可する

これまでに UFW ファイアウォールを有効にしている場合は、すべての受信接続がブロックされ、リモートの場所から SSH 経由でサーバーに接続している場合は、再接続できなくなります。

次のコマンドを使用して、サーバーへの SSH 接続を有効にして、この問題が発生しないようにしましょう。

sudo ufw allow ssh

カスタム SSH ポート (ポート 2222 など) を使用している場合は、次のコマンドを使用して UFW ファイアウォールでそのポートを開く必要があります。

sudo ufw allow 2222/tcp

すべての SSH 接続をブロックするには、次のコマンドを入力します。

sudo ufw deny ssh/tcp
sudo ufw deny 2222/tcp  [If using custom SSH port]

UFW で特定のポートを有効にする

ファイアウォールで特定のポートを開いて、そのポートを介した特定のサービスへの接続を許可することもできます。たとえば、ポート 80 (HTTP) と 443 (HTTPS) でリッスンする Web サーバーをセットアップする場合、 >) デフォルトでは。

以下に、Apache サービスへの受信接続を許可する方法の例をいくつか示します。

UFW でポート 80 HTTP を開く
sudo ufw allow http     [By service name]
sudo ufw allow 80/tcp   [By port number]
sudo ufw allow 'Apache' [By application profile]
UFW でポート 443 HTTPS を開く
sudo ufw allow https
sudo ufw allow 443/tcp
sudo ufw allow 'Apache Secure'

UFW でポート範囲を許可する

ポート範囲 (5000 ~ 5003) で実行したいアプリケーションがあると仮定すると、次のコマンドを使用してこれらすべてのポートを追加できます。

sudo ufw allow 5000:5003/tcp
sudo ufw allow 5000:5003/udp

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

特定の IP アドレス 192.168.56.1 からのすべてのポートでの接続を許可する場合は、IP アドレスの前に from を指定する必要があります。

sudo ufw allow from 192.168.56.1

特定のポートで特定の IP アドレスを許可する

IP アドレス 192.168.56.1 を持つホーム マシンから特定のポート (ポート 22 など) への接続を許可するには、任意のポートを追加する必要があります。 と IP アドレスの後のポート番号を示します。

sudo ufw allow from 192.168.56.1 to any port 22

ネットワークサブネットを特定のポートに許可する

192.168.1.1 から 192.168.1.254 までの範囲の特定の IP アドレスのポート 22 への接続を許可するには (SSH) 、次のコマンドを実行します。

sudo ufw allow from 192.168.1.0/24 to any port 22

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

特定のポート 22 (SSH) の特定のネットワーク インターフェイス eth2 への接続を許可するには、次のコマンドを実行します。

sudo ufw allow in on eth2 to any port 22

UFW での接続の拒否

デフォルトでは、UFW で接続を特に開いていない限り、すべての受信接続はブロックされます。たとえば、ポート 80443 を開いていて、Web サーバーが不明なネットワーク 11.12.13.0/24 から攻撃を受けているとします。

この特定の11.12.13.0/24 ネットワーク範囲からのすべての接続をブロックするには、次のコマンドを使用できます。

sudo ufw deny from 11.12.13.0/24

ポート 80443 上の接続のみをブロックしたい場合は、次のコマンドを使用できます。

sudo ufw deny from 11.12.13.0/24 to any port 80
sudo ufw deny from 11.12.13.0/24 to any port 443

UFW ルールの削除

UFW ルールを削除するには、ルール番号を使用する方法と実際のルールを使用して削除する 2 つの方法があります。

ルール番号を使用して UFW ルールを削除するには、まず次のコマンドを使用して番号ごとにルールをリストする必要があります。

sudo ufw status numbered
サンプル出力
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere

ルール番号 1 を削除するには、次のコマンドを使用します。

sudo ufw delete 1

2 番目の方法は実際のルールを使用してルールを削除することです。たとえば、ルールを削除するには、図に示すようにプロトコルでポート番号を指定します。

sudo ufw delete allow 22/tcp

ドライラン UFW ルール

--dry-run フラグを使用すると、システム ファイアウォールに実際に変更を加えずに、任意の ufw コマンドを実行できます。これは、発生すると想定される変更を示すだけです。

sudo ufw --dry-run enable

UFW ファイアウォールをリセットする

何らかの理由で、すべてのファイアウォール ルールを削除またはリセットしたい場合は、次のコマンドを入力すると、すべての変更が元に戻り、最初からやり直します。

sudo ufw reset
sudo ufw status

UFW の高度な機能

UFW ファイアウォールは、iptables が行うことはすべて実行できます。これは、単純なiptables-restore テキスト ファイルにすぎない、さまざまなルール ファイルのセットを使用して実行できます。

UFW ファイアウォールの調整や追加の iptables コマンドの追加は、ufw コマンドでは許可されていません。次のテキスト ファイルを変更するだけです。

  • /etc/default/ufw: 事前定義されたルールを含むメイン設定ファイル。
  • /etc/ufw/before[6].rules: このファイルでは、ufw コマンドで追加する前にルールが計算されます。
  • /etc/ufw/after[6].rules: このファイルでは、ufw コマンドで追加した後にルールが計算されます。
  • /etc/ufw/sysctl.conf: このファイルは、カーネル ネットワークを調整するために使用されます。
  • /etc/ufw/ufw.conf: このファイルは起動時に ufw を有効にします。

それでおしまい! UFW は、単一の ufw コマンドで複雑なルールを定義できるユーザーフレンドリーなインターフェイスを備えた iptables の優れたフロントエンドです。

この ufw の記事に関して質問や意見がある場合は、以下のコメント フォームを使用してご連絡ください。