GNU/Linux >> Linux の 問題 >  >> Linux

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

このガイドでは、UFWとは何か、LinuxにUFWをインストールする方法、さまざまなLinuxオペレーティングシステムでUFWを使用してファイアウォールを設定する方法について説明します。

はじめに

セキュリティは深刻なビジネスです。 Linuxオペレーティングシステムをデータセンターで実行している場合でも、デスクトップで実行している場合でも、考えられるすべての脅威からオペレーティングシステムを保護する必要があります。

実際、企業環境で実行されているサーバーは十分に保護されます。ほとんどの企業は、インフラストラクチャを保護するために数百万ドルを投資しています。

環境とLinuxサーバーを保護するために、個別のネットワークチーム、ファイアウォールチーム、セキュリティチームが存在します。これは、デスクトップまたはサーバーでLinuxを実行している場合には当てはまりません。

適切なツールを使用してLinuxマシンを保護する方法を知っておく必要があります。そのようなツールの1つがUFW

UFWとは何ですか?

UFW Uの略です 複雑なF ire w すべて、Ubuntuベースのディストリビューションにデフォルトでプリインストールされているファイアウォールプログラムです。

なぜiptablesではなくUFWなのですか?不思議に思うかもしれません。

まだご存じない方のために説明すると、NetfilterはLinuxカーネルに同梱されているパケットフィルタリングシステムであり、iptablesを使用して一連のコマンドでネットフィルターを操作します。

iptablesに慣れるには時間がかかる場合があり、困難な作業になる可能性があります。ファイアウォール管理を容易にするために、iptablesへの多くのフロントエンドが作成されています。 UFWはその1つです。

UFWは、iptablesを管理するためのコマンドラインフロントエンドです。これは、netfilterファイアウォールを管理および操作するためのフレームワークを提供します。

UFWは、8.04LTSバージョン以降のすべてのUbuntuインストールでデフォルトで使用できます。

Gufwという名前のUFW用のグラフィカルフロントエンドもあります 。これについては、別のガイドで説明します。この記事では、コマンドラインからufwを使用することに焦点を当てます。

面倒なことはせずに、LinuxにUFWファイアウォールをインストールしてセットアップする方法を見てみましょう。

1。 LinuxにUFWをインストールする

UFWには、ほとんどのDebianベースおよびArchベースのディストリビューションがプリインストールされています。 UFWがインストールされているかどうかを確認するには、次のコマンドを実行します。

$ which ufw
/usr/sbin/ufw
$ ufw version
ufw 0.36
Copyright 2008-2015 Canonical Ltd.

ディストリビューションにインストールされていない場合は、ディストリビューションのデフォルトのパッケージマネージャーを使用してインストールできます。

Alpine LinuxにUFWをインストールするには、次のコマンドを実行します。

$ sudo apk add ufw

Arch Linuxと、EndeavourOSやManjaroLinuxなどのその亜種にUFWをインストールします。

$ sudo pacman -S ufw

Debian、Ubuntu、およびその派生物にufwをインストールします:

$ sudo apt update
$ sudo apt install ufw

FedoraにUFWをインストールする:

$ sudo dnf install ufw

UFWは[EPEL]で利用できます RHEL、CentOS、AlmaLinux、RockyLinuxなどのエンタープライズLinuxオペレーティングシステムのリポジトリ。

[EPEL]を有効にする リポジトリを作成し、以下のようにRHEL、CentOS、AlmaLinux、RockyLinuxにUFWをインストールします。

$ sudo dnf install epel-release
$ sudo dnf install ufw

openSUSEにUFWをインストールする:

$ sudo zypper install ufw

1.1。 UFWサービスを有効にし、開始し、停止します

Debianベースのシステムでは、UFWデーモンが自動的に起動され、有効になります。

次のコマンドを実行して、UFWサービスのステータスを確認します。

$ systemctl status ufw

出力例:

● ufw.service - Uncomplicated firewall
     Loaded: loaded (/usr/lib/systemd/system/ufw.service; enabled; vendor prese>
     Active: active (exited) since Mon 2021-07-05 20:08:01 IST; 44s ago
       Docs: man:ufw(8)
             man:ufw-framework(8)
             file://usr/share/doc/ufw/README
    Process: 21690 ExecStart=/usr/libexec/ufw/ufw-init start (code=exited, stat>
   Main PID: 21690 (code=exited, status=0/SUCCESS)
        CPU: 169ms

Jul 05 20:08:01 ostechnix systemd[1]: Starting Uncomplicated firewall...
Jul 05 20:08:01 ostechnix systemd[1]: Finished Uncomplicated firewall.

UFWサービスが有効でアクティブかどうかを確認する別の方法:

$ systemctl is-enabled ufw
enabled
$ systemctl is-active ufw
active

インストール後にUFWサービスが自動的に開始されない場合は、次のコマンドを実行してUFWサービスを開始します。

$ sudo systemctl start ufw

Ufwは、システムの再起動の間に自動的に開始されるようにも有効にする必要があります。

$ sudo systemctl enable ufw

または、両方のコマンドを1つに組み合わせて、以下のようにUFWサービスを一度に有効にして開始することもできます。

$ sudo systemctl enable --now ufw

UFWサービスを停止するには、次のコマンドを実行するだけです:

$ sudo systemctl stop ufw

3。 LinuxでUFWを使用してファイアウォールを設定する

3.1。ヘルプを得る

UFWを初めて使用する場合は、インストール後に最初に行うことは、UFWのヘルプセクションとマニュアルページを参照して、UFWの使用法に関する基本的な考え方を理解することです。

$ ufw --help
$ man ufw

構文を忘れた場合、またはufwの特定の機能のリファレンスが必要な場合は、これら2つのコマンドが非常に便利です。

3.2。デフォルトのルールを設定する

UFWを使用すると、ファイアウォールルール(またはポリシー)を作成して、特定のサービスを許可または拒否できます。これらのポリシーを通じて、どのポート、サービス、IPアドレス、およびインターフェースを許可または拒否するかをUFWに指示します。

ufwに付属するデフォルトのポリシーがあります。デフォルトのポリシーでは、すべての着信接続が削除され、すべての発信接続が許可されます。

重要: リモートサーバーでufwを設定する場合は、ufwファイアウォールを有効にする前にsshポートまたはサービスを許可していることを確認してください。

デフォルトの着信ポリシーは、すべての着信接続を拒否します。したがって、SSHを許可するようにルールを構成しなかった場合、リモートシステムからロックアウトされ、システムにログインできなくなります。これは、ローカルシステムでufwを実行している場合には当てはまりません。

デフォルトのポリシーは/etc/default/ufwで定義されています ファイル。ファイルの内容は次のとおりです。

ここから、デフォルトのポリシーを設定できます。

または、ufw allowを使用することもできます 着信コマンドと発信コマンドのデフォルトポリシーを設定するコマンド:

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

3.2.1。 UFWファイアウォールルールのステータスを確認する

デフォルトのポリシーがアクティブかどうかを確認するには、次のコマンドを実行します。

$ sudo ufw status

出力例:

Status: active

To                         Action      From
--                         ------      ----
SSH                        ALLOW       Anywhere                  
224.0.0.251 mDNS           ALLOW       Anywhere                  
SSH (v6)                   ALLOW       Anywhere (v6)             
ff02::fb mDNS              ALLOW       Anywhere (v6)             

さらに詳細なステータス情報については、次のコマンドを使用してください:

$ sudo ufw status verbose

出力例:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (SSH)               ALLOW IN    Anywhere                  
224.0.0.251 5353/udp (mDNS) ALLOW IN    Anywhere                  
22/tcp (SSH (v6))          ALLOW IN    Anywhere (v6)             
ff02::fb 5353/udp (mDNS)   ALLOW IN    Anywhere (v6)             

番号付きの形式を表示するには、次のコマンドを実行します:

$ sudo ufw status numbered

3.2.2。ルールを追加する

SSHを使用させてください ufwを使用してファイアウォールルールを追加する方法を示す例として 指図。以下のコマンドを見てください:

$ sudo ufw allow ssh
$ sudo ufw allow 22
$ sudo ufw allow 22/tcp
$ sudo ufw allow 2222/tcp

すべてのコマンドは同じ目的を果たします。

[1]-最初のコマンドでは、sshへのすべてのアクセスを許可しています サービス。 UFWは、デフォルトでsshがポート22をリッスンすることを認識しています。 。したがって、allow sshを使用する場合 サービスの場合、ポート22のルールも適用されます 。
[2]-2番目のコマンドでは、ポート22の着信接続を許可するように明示的に指示しています。 。
[3]-3番目のコマンドは2番目のコマンドと同じです。 tcpへのすべてのアクセスを許可します ポート22 。 TCPプロトコルとUDPプロトコルの両方がサポートされています。
[4]-4番目のコマンドでは、カスタムsshポート(つまり、2222)を許可しています。 )着信接続を受け入れます。

これらの4つのコマンドは、sshだけでなく、すべてのサービスとポートに使用できます。たとえば、ポート5433で実行されているPostgreSQLに接続する場合 、次にルールを次のように追加する必要があります。

$ sudo ufw allow 5433

同様に、ufw denyを使用できます 着信接続を拒否するコマンド:

$ sudo ufw deny 5433

このコマンドは、ポート5433のトラフィックを拒否します 。

3.2.3。 UFWファイアウォールルールを削除する

ルールまたはポリシーを削除するには、ufwdeleteコマンドを使用できます。

たとえば、HTTPトラフィックを許可する必要がなくなった場合は、次のコマンドを実行するだけです。

sudo ufw delete allow 80

3.2.4。 UFWファイアウォールルールを有効、無効、再読み込みします

これは、UFWデーモンを有効にして起動することとは異なります。 ufw systemdユニットを起動しても、ファイアウォールルールは適用されません。 UFWには、ファイアウォールルールを有効、無効、再読み込みするための専用コマンドがあります。

ルールを有効にするには、次のコマンドを実行する必要があります。

$ sudo ufw enable
Firewall is active and enabled on system startup

すでに述べたように、次のコマンドを使用してUFWファイアウォールルールのステータスを表示します。

$ sudo ufw status

出力例:

Status: active

To                         Action      From
--                         ------      ----
SSH                        ALLOW       Anywhere                  
224.0.0.251 mDNS           ALLOW       Anywhere                  
SSH (v6)                   ALLOW       Anywhere (v6)             
ff02::fb mDNS              ALLOW       Anywhere (v6)             

ファイアウォールルールを無効にするには、次のコマンドを実行します。

$ sudo ufw disable
Firewall stopped and disabled on system startup

注意: 上記のコマンドは、ファイアウォールルールのみを無効にします。 UFWデーモンは引き続き実行され、再起動時に有効になります。

ポリシーを追加した後、コマンドを使用してポリシーを有効にするためにufwをリロードします。

$ sudo ufw reload

3.2.5。ポート範囲のポリシーの追加

単一のポートのポリシーを作成する代わりに、さまざまなポートのポリシーを追加できます。

$ sudo ufw allow 8000:8080/tcp
$ sudo ufw deny 8000:8080/tcp

3.2.6。特定のIPアドレス、サブネット、およびポートのポリシーを追加する

ufwを使用すると、よりきめ細かいルールを作成できます。サーバーを特定のIPからのみ接続(SSH接続)する場合は、次のルールを追加することで接続できます。

$ sudo ufw allow from 192.168.156.2
$ sudo ufw allow from 192.168.156.2 to any port 2222

最初のコマンドは、指定されたIPが開いているポートに基づいて接続できるようにします。 2番目のコマンドは、ユーザーがポート2222に接続できることを指定します 192.168.156.2からのみ 。

同じサブネットのIPグループがsshに接続できるようにするため 、ルールを追加しながらサブネットを使用して、そのサブネットのすべてのIP部分をポート2222に接続できるようにすることができます 。

$ sudo ufw allow from 192.168.156.1/24 to any port 2222

3.2.7。ネットワークインターフェースポリシーの追加

ネットワークインターフェイスに基づいてポリシーを作成することもできます。次のコマンドは、ネットワークインターフェイスen01の接続を受け入れるためのポリシーを作成します ポート2222へ 。

$ sudo ufw allow in on en01 to any port 2222

3.2.8。ドライランオプションを使用してルールを適用せずにテストする

UFWには--dry-runがあります 実際にルールを適用せずにルールをテストするオプション。たとえば、SSHポートを開いた場合に適用される内容は次のとおりです。

$  sudo ufw --dry-run allow ssh

上記の出力でわかるように、ufwコマンドは結果のルールのみを出力し、--dry-runを追加するときにそれらを適用しません。 オプション。これは、ファイアウォールポリシーをテストする場合に便利です。

3.2.9。各ルールにコメントを追加する

いくつかのルールを追加した可能性があります。特定の数のルール(たとえば50)を実行すると、ルールの内容を思い出す方法がなくなります。

その場合、以下のように各ルールにコメントを追加できます。

$ sudo ufw allow 22 comment 'open port 22 for ssh'

上記のコマンドは、ポート22へのすべてのトラフィックを許可し、ルールのコメントを追加します。このようにして、特定のルールの目的を簡単に見つけることができます。

4。どのルールが優先されますか?

同じサービス/ポートに対して複数のルールを作成する場合は、優先度が重要です。ポリシーは、作成した順序で優先されます。次のコマンドを実行すると、ポリシーとその優先度が表示されます。

$ sudo ufw status numbered

出力例:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    Anywhere                  
[ 2] 2222                       ALLOW IN    Anywhere                  
[ 3] 2222                       ALLOW IN    192.168.156.2             
[ 4] 2222                       DENY IN     192.168.157.0/24          
[ 5] 22 (v6)                    ALLOW IN    Anywhere (v6)             
[ 6] 2222 (v6)                  ALLOW IN    Anywhere (v6)   

上記の出力の[4]を見てください。ポート2222への接続 サブネットから192.168.157.0/24 ドロップする必要があります。

しかし、同じサブネットのいずれかのマシンから接続しようとすると、[2]が優先されるため、接続が許可されます。

この動作をオーバーライドするには、優先度の高いルールを作成する必要があります。既存のルールを削除し、優先度の高い新しいルールを追加して、サービスをリロードできます。

$ sudo ufw delete 4
Deleting:
deny from 192.168.157.0/24 to any port 2222
Proceed with operation (y|n)? y
Rule deleted
$ sudo ufw insert 2 deny from 192.168.157.0/24 to any port 2222
Rule inserted
$ sudo ufw reload
Firewall reloaded
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 2222 DENY IN 192.168.157.0/24
[ 3] 2222 ALLOW IN Anywhere
[ 4] 2222 ALLOW IN 192.168.156.2
[ 5] 22 (v6) ALLOW IN Anywhere (v6)
[ 6] 2222 (v6) ALLOW IN Anywhere (v6)

上記の出力を見てください。優先度が[2]に再割り当てされます。ここで、ポート2222に接続しようとすると
192.168.157.0/24から 、接続が拒否されます。

5。 UFWロギング

何かがうまくいかなかったときは、ログが最善の策です。

UFWロギングを無効にするには、次のコマンドを実行します。

$ sudo ufw logging off
Logging disabled

UFWロギングを有効にするには、次を実行します:

$ sudo ufw logging on
Logging enabled

ロギングには4つのレベル、つまりがあります。 、 、およびフル 。選択したレベルに応じて、ログは/var/log/ufw.logの下に生成されます ファイル。デフォルトでは、ログレベルは低くなります。

以下のコマンドを使用して、必要な適切なレベルに設定できます。

$ sudo ufw logging [ high | medium | Full | Low ]

ロギングのステータスとログレベルを確認するには、ufw statusを実行します コマンドを実行してloggingを探します エントリ。

$ sudo ufw status verbose
Status: active
Logging: on (high)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

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

パッケージマネージャーを使用してパッケージをインストールする場合(例:apt またはpacman)、そのパッケージのルールを定義するアプリケーションプロファイルがufwで作成されます。

たとえば、aptを使用してOpenSSHサーバーをインストールする場合 、次に、ポート22のプロファイルが作成されます 。すべてのアプリケーションプロファイルは/etc/ufw/applications.dに保存されます ディレクトリ。

アプリケーションプロファイルのリストを取得するには、次のコマンドを実行します。

$ sudo ufw app list

出力例:

Available applications:
CUPS
OpenSSH

これはテストマシンです。 OpenSSHのみをインストールしました。したがって、2つのプロファイルのみが表示されます。

そのプロファイルとそれが適用するポリシーに関する詳細情報を取得するには、次のコマンドを実行します。

$ sudo ufw app info 'OpenSSH'

出力例:

Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
Port:
22/tcp

7。 UFWファイアウォールをデフォルトのポリシーにリセットする

作成したすべてのルールをクリーンアップしてデフォルトにリセットする場合は、ufw resetを実行することで実行できます。 コマンド。

$ sudo ufw reset

出力例:

Resetting all rules to installed defaults. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20210705_131655'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210705_131655'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210705_131655'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210705_131655'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210705_131655'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210705_131655'

このコマンドを実行すると、デフォルトのプロファイルにリセットする前に、現在のルールがバックアップされます。

Ufwには多くのグラフィカルフロントエンドもあります。そのうちの1つはGufwです 。

8。 Gufw、UFWのグラフィカルフロントエンド

コマンドラインモードに慣れていない方もいらっしゃるかもしれません。幸い、UFW用のグラフィカルなフロントエンドが利用可能です。

Gufwは、LinuxでUncomplicated Firewall(UFW)を管理するためのグラフィカルなフロントエンドアプリケーションです。 Gufwは主に、Linuxデスクトップ用のファイアウォールをインストールおよび構成するために開発されました。

LinuxにGufwをインストールして構成する方法については、次のガイドを参照してください。

  • LinuxデスクトップでGufwを使用してファイアウォールを設定する方法

結論

このガイドでは、UFWとは何か、LinuxにUFWファイアウォールをインストールしてセットアップする方法についてサンプルコマンドを使用して説明しました。

今度は、マシンでufwをテストする番です。デスクトップまたはサーバーに実装する前に、任意の仮想マシンでufwをテストすることをお勧めします。


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

  2. Ubuntu18.04でUFWファイアウォールを設定する方法

  3. RockyLinux8にFirewalldを使用してFail2banをインストールする方法

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

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

  3. スクリーンショットを使用してMXLinux21をステップバイステップでインストールする方法

  1. Linux Mint 19 / LinuxMint18にNginxを使用してphpMyAdminをインストールする方法

  2. Utangleファイアウォールをインストールおよびセットアップする方法

  3. LinuxでUnisonとファイルを同期する方法