UFWをインストールして設定する方法-Debian / Ubuntuの複雑でないファイアウォール


コンピュータが相互に接続されているため、サービスは急速に成長しています。電子メール、ソーシャルメディア、オンラインショップ、Web会議までのチャットは、ユーザーが使用するサービスです。しかし、反対側では、この接続はちょうど両面ナイフのようです。ウイルス、マルウェア、トロイの木馬などのコンピュータに不正なメッセージを送信することも可能です。アプリもその1つです。

最大のコンピュータネットワークとしてのインターネットは、常に善良な人々で満たされているわけではありません。私たちのコンピューター/サーバーが安全であることを確認するために、私たちはそれを保護する必要があります。

コンピュータ/サーバーに必須のコンポーネントの1つはファイアウォールです。ウィキペディアからの定義は次のとおりです。

コンピューティングでは、ファイアウォールはソフトウェアまたはハードウェアベースのネットワークセキュリティシステムであり、適用されたルールセットに基づいて、データパケットを分析し、通過を許可するかどうかを決定することで、着信および発信ネットワークトラフィックを制御します。

Iptablesは、サーバーで広く使用されているファイアウォールの1つです。これは、一連のルールに基づいてサーバーの着信および発信トラフィックを管理するために使用されるプログラムです。通常、サーバーへのアクセスは信頼できる接続のみが許可されます。しかし、IPTablesはコンソールモードで実行されており、複雑です。 iptablesのルールとコマンドに精通している方は、iptablesファイアウォールの使用方法について説明している次の記事を読むことができます。

  1. Basic IPTables (Linux Firewall) Guide

Debian / UbuntuへのUFWファイアウォールのインストール

IPTablesを設定する方法の複雑さを軽減するために、多くの前線があります。 Ubuntu Linuxを実行している場合は、デフォルトのファイアウォールツールとしてufwがあります。 ufwファイアウォールについて調べてみましょう。

ufw(Uncomplicated Firewall)は、最も広く使用されているiptablesファイアウォールのフロントエンドであり、ホストベースのファイアウォールに非常に適しています。 ufwは、netfilterを管理するためのフレームワークを提供するとともに、ファイアウォールを制御するためのコマンドラインインターフェイスを提供します。ファイアウォールの概念にあまり詳しくないLinux初心者向けに、ユーザーフレンドリーで使いやすいインターフェイスを提供します。

一方、同じ複雑なコマンドは、管理者がコマンドラインインターフェイスを使用して複雑なルールを設定するのに役立ちます。 ufwは、Debian、Ubuntu、LinuxMintなどの他のディストリビューションのアップストリームです。

まず、以下のコマンドでufwがインストールされているか確認してください。

$ sudo dpkg --get-selections | grep ufw

ufw 		install

インストールされていない場合は、以下に示すようにaptコマンドを使用してインストールできます。

$ sudo apt-get install ufw

使用する前に、ufwが実行されているかどうかを確認する必要があります。次のコマンドを使用して確認してください。

$ sudo ufw status

ステータス:非アクティブが見つかった場合は、アクティブまたは無効になっていないことを意味します。

有効にするには、ターミナルで次のコマンドを入力するだけです。

$ sudo ufw enable

Firewall is active and enabled on system startup

無効にするには、と入力するだけです。

$ sudo ufw disable

ファイアウォールがアクティブ化されたら、ルールをファイアウォールに追加できます。デフォルトのルールを確認したい場合は、入力できます。

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

ご覧のとおり、デフォルトではすべての着信接続が拒否されます。マシンをリモートにしたい場合は、適切なポートを許可する必要があります。たとえば、ssh接続を許可したいとします。これを許可するコマンドは次のとおりです。

$ sudo ufw allow ssh

[sudo] password for pungki :
Rule added
Rule added (v6)
$

もう一度ステータスを確認すると、次のような出力が表示されます。

$ sudo ufw status

To 		Action 			From
-- 		----------- 		------
22 		ALLOW 			Anywhere
22 		ALLOW 			Anywhere (v6)

ルールがたくさんあり、すべてのルールにその場で番号を付けたい場合は、番号付きのパラメーターを使用します。

$ sudo ufw status numbered

To 		Action 			From
------ 		----------- 		------
[1] 22 		ALLOW 			Anywhere
[2] 22 		ALLOW 			Anywhere (v6)

最初のルールは、どこからでもポート22への着信接続、tcpまたはudpパケットの両方が許可されることを示しています。 tcpパケットのみを許可したい場合はどうなりますか?次に、ポート番号の後にパラメータtcpを追加できます。これがサンプル出力の例です。

$ sudo ufw allow ssh/tcp

To 		Action 			From
------ 		----------- 		------
22/tcp 		ALLOW 			Anywhere
22/tcp 		ALLOW 			Anywhere (v6)

同じトリックが拒否ルールに適用されます。 ftpルールを拒否したいとしましょう。したがって、入力するだけです。

$ sudo ufw deny ftp

To 		Action 			From
------ 		----------- 		------
21/tcp 		DENY 			Anywhere
21/tcp 		DENY 			Anywhere (v6)

場合によっては、標準に準拠していないカスタムポートがあります。マシンのsshポートを22から2290に変更するとします。次に、ポート2290を許可するために、次のように追加できます。

$ sudo ufw allow

To 		Action 			From
-- 		----------- 		------
2290 		ALLOW 			Anywhere
2290 		ALLOW 			Anywhere (v6)

ルールにport-rangeを追加することもできます。 tcpプロトコルで2290〜2300のポートを開きたい場合、コマンドは次のようになります。

$ sudo ufw allow 2290:2300/tcp

To 			Action 			From
------ 			----------- 		------
2290:2300/tcp 		ALLOW 			Anywhere
2290:2300/tcp 		ALLOW			Anywhere (v6)

一方、udpを使用する場合は、次のコマンドを使用するだけです。

$ sudo ufw allow 2290:2300/udp

To 			Action 			From
------ 			----------- 		------
2290:2300/udp 		ALLOW 			Anywhere
2290:2300/udp 		ALLOW			Anywhere (v6)

「tcp」または「udp」を明示的に入力する必要があることに注意してください。そうしないと、以下のようなエラーメッセージが表示されます。

ERROR: Must specify ‘tcp’ or ‘udp’ with multiple ports

以前は、サービスまたはポートに基づいてルールを追加しました。 Ufwでは、IPアドレスに基づいてルールを追加することもできます。これがサンプルコマンドです。

$ sudo ufw allow from 192.168.0.104

サブネットマスクを使用して範囲を広げることもできます。

$ sudo ufw allow form 192.168.0.0/24

To 		Action 			From
-- 		----------- 		------
Anywhere	ALLOW 			192.168.0.104
Anywhere	ALLOW 			192.168.0.0/24

ご覧のとおり、fromパラメーターは接続のソースのみを制限します。一方、宛先(To列で表される)はどこでもです。 「To」パラメータを使用して宛先を管理することもできます。ポート22(ssh)へのアクセスを許可するサンプルを見てみましょう。

$ sudo ufw allow to any port 22

上記のコマンドは、どこからでも、どのプロトコルからでもポート22へのアクセスを許可します。

より具体的なルールについては、IPアドレス、プロトコル、およびポートを組み合わせることもできます。 IP 192.168.0.104からのみ、プロトコルtcpからのみ、およびポート22への接続を制限するルールを作成するとします。その場合、コマンドは次のようになります。

$ sudo ufw allow from 192.168.0.104 proto tcp to any port 22

拒否ルールを作成する構文は、許可ルールと似ています。パラメータを許可から拒否に変更するだけで済みます。

場合によっては、既存のルールを削除する必要があります。繰り返しになりますが、ufwを使用すると、ルールを簡単に削除できます。上記のサンプルから、以下のルールがあり、それを削除します。

To 		Action 			From
-- 		----------- 		------
22/tcp		ALLOW 			192.168.0.104
21/tcp		ALLOW 			Anywhere
21/tcp 		ALLOW 			Anywhere (v6)

ルールを削除する方法は2つあります。

以下のコマンドは、サービスftpに一致するルールを削除します。したがって、ftpポートを意味する21/tcpは削除されます。

$ sudo ufw delete allow ftp

しかし、以下のコマンドを使用して上記の例で最初のルールを削除しようとしたとき。

$ sudo ufw delete allow ssh

Or 

$ sudo ufw delete allow 22/tcp

次のようなエラーメッセージが表示される場合があります。

Could not delete non-existent rule
Could not delete non-existent rule (v6)

次に、このトリックを行うことができます。上で述べたように、削除するルールを示すためにルールの数を表示できます。それをお見せしましょう。

$ sudo ufw status numbered

To 		Action 			From
-- 		----------- 		------
[1] 22/tcp		ALLOW 			192.168.0.104
[2] 21/tcp		ALLOW 			Anywhere
[3] 21/tcp 		ALLOW 			Anywhere (v6)

次に、を使用して最初のルールを削除できます。 「y」を押すと、ルールが完全に削除されます。

$ sudo ufw delete 1

Deleting :
Allow from 192.168.0.104 to any port 22 proto tcp
Proceed with operation (y|n)? y

それらの方法から、違いがわかります。方法2は、ルールを削除する前にユーザーの確認を求めますが、方法1は削除しません。

状況によっては、すべてのルールを削除/リセットしたい場合があります。あなたはタイプすることによってそれをすることができます。

$ sudo ufw reset

Resetting all rules to installed defaults. Proceed with operation (y|n)? y

「y」を押すと、ufwは、ufwをリセットする前に、既存のすべてのルールをバックアップします。ルールをリセットすると、ファイアウォールも無効になります。使用する場合は、再度有効にする必要があります。

上で述べたように、ufwファイアウォールはiptablesが実行できることは何でも実行できます。これは、iptablesにすぎないさまざまなルールファイルのセットを使用して実現されます。適切なテキストファイルを復元します。 ufwを微調整したり、ufwコマンドでは許可されていない追加のiptablesコマンドを配置したりするには、いくつかのテキストファイルを編集する必要があります。

  1. /etc/default/ufw: The main configuration for default policies, IPv6 support and kernel modules.
  2. /etc/ufw/before[6].rules: rules in these files are calculate before any rules added via the ufw command.
  3. /etc/ufw/after[6].rules: rules in these files are calculate after any rules added via the ufw command.
  4. /etc/ufw/sysctl.conf: kernel network tunables.
  5. /etc/ufw/ufw.conf: sets whether or not ufw is enabled on boot and sets the LOGLEVEL.

結論

iptablesのフロントエンドとしてのUFWは、確かにユーザーへの簡単なインターフェースになります。ユーザーは複雑なiptables構文を覚えておく必要はありません。 UFWは、パラメータとして「プレーンイングリッシュ」も使用します。

許可、拒否、リセットはその1つです。フロントエンドにはもっとたくさんのiptablesがあると思います。しかし、間違いなくufwは、ファイアウォールを高速、簡単、そしてもちろん安全にセットアップしたいユーザーにとって最良の選択肢の1つです。詳細については、manufwと入力してufwのマニュアルページにアクセスしてください。