このガイドでは、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をテストすることをお勧めします。