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で構成されている場合は、UFWがIPv6および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 で接続を特に開いていない限り、すべての受信接続はブロックされます。たとえば、ポート 80 と 443 を開いていて、Web サーバーが不明なネットワーク 11.12.13.0/24 から攻撃を受けているとします。
この特定の11.12.13.0/24 ネットワーク範囲からのすべての接続をブロックするには、次のコマンドを使用できます。
sudo ufw deny from 11.12.13.0/24
ポート 80 と 443 上の接続のみをブロックしたい場合は、次のコマンドを使用できます。
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 の記事に関して質問や意見がある場合は、以下のコメント フォームを使用してご連絡ください。