UFW をインストールして構成する方法 - Debian/Ubuntu での簡単なファイアウォール
コンピュータは相互に接続されているため、サービスは急速に成長しています。 メール、ソーシャルメディア、オンラインショップ、チャットからウェブ会議までのサービスです。ユーザーが使用します。しかし、その一方で、この接続性はまさに両面ナイフのようなものです。また、ウイルス、マルウェア、トロイの木馬アプリなどの悪質なメッセージをコンピュータに送信する可能性もあります。
最大のコンピュータ ネットワークであるインターネットには、常に善良な人々が集まるわけではありません。私たちのコンピューター/サーバーが安全であることを確認するには、それを保護する必要があります。
コンピュータ/サーバーに必須のコンポーネントの 1 つはファイアウォールです。 ウィキペディアによると、定義は次のとおりです。
コンピューティングにおけるファイアウォールは、データ パケットを分析し、適用されたルール セットに基づいてパケットの通過を許可するかどうかを決定することによって、送受信されるネットワーク トラフィックを制御するソフトウェアまたはハードウェア ベースのネットワーク セキュリティ システムです。
iptables はサーバーで広く使用されているファイアウォールの 1 つです。これは、一連のルールに基づいてサーバー内の受信トラフィックと送信トラフィックを管理するために使用されるプログラムです。通常、サーバーへの接続は信頼された接続のみが許可されます。ただし、IPTables はコンソール モードで実行されており、複雑です。 iptables のルールとコマンドに精通している方は、iptables ファイアウォールの使用方法を説明した次の記事を読むことができます。
- 基本的な IPTables (Linux ファイアウォール) ガイド
Debian/Ubuntu への UFW ファイアウォールのインストール
IPTables の設定方法の複雑さを軽減するために、多くのフロントエンドが用意されています。 Ubuntu Linux を実行している場合は、デフォルトのファイアウォール ツールとして ufw が表示されます。 ufw ファイアウォールについて調べてみましょう。
ufwとは何ですか
ufw (単純なファイアウォール) は、最も広く使用されているiptables ファイアウォールのフロントエンドであり、ホストベースのファイアウォールにとって非常に快適です。 ufw はネットフィルターを管理するためのフレームワークを提供するだけでなく、ファイアウォールを制御するためのコマンドライン インターフェイスも提供します。ファイアウォールの概念にあまり詳しくない Linux 初心者にとって、ユーザーフレンドリーで使いやすいインターフェイスを提供します。
一方、同じ複雑なコマンドは、管理者がコマンド ライン インターフェイスを使用して複雑なルールを設定するのに役立ちます。 ufw は、Debian、Ubuntu、Linux Mint などの他のディストリビューションのアップストリームです。
基本的な使い方
まず、次のコマンドを使用してufwがインストールされているかどうかを確認します。
$ sudo dpkg --get-selections | grep ufw
ufw install
インストールされていない場合は、以下に示すようにapt コマンドを使用してインストールできます。
$ sudo apt-get install ufw
使用する前にufwが実行されているかどうかを確認する必要があります。以下のコマンドを使用して確認してください。
$ sudo ufw status
[ステータス] が [非アクティブ] になっている場合は、アクティブではない、または無効になっていることを意味します。
新着! すべての Linux 管理者にとって不可欠な電子ブックです!696 ページの電子ブックを無料でダウンロード
ufwの有効化/無効化
これを有効にするには、ターミナルで次のコマンドを入力するだけです。
$ sudo ufw enable
Firewall is active and enabled on system startup
無効にするには、次のように入力します。
$ sudo ufw disable
現在の ufw ルールをリストする
ファイアウォールがアクティブになったら、ファイアウォールにルールを追加できます。デフォルトのルールを確認したい場合は、次のように入力します。
$ sudo ufw status verbose
サンプル出力
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
$
ufw ルールを追加する方法
ご覧のとおり、デフォルトでは、すべての受信接続が拒否されます。マシンをリモートにしたい場合は、適切なポートを許可する必要があります。たとえば、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)
多数のルールがあり、すべてのルールにその場で番号を付けたい場合は、パラメーターnumbered を使用します。
$ 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)
ルールにポート範囲を追加することもできます。 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
特定のIPの追加
これまではサービスまたはポートに基づいたルールを追加していました。 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」パラメータを使用して宛先を管理することもできます。 ポート 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 つの方法があります。
方法 1
以下のコマンドは、 サービス ftp に一致するルールを削除します。したがって、ftp ポートを意味する 21/tcp は削除されます。
$ sudo ufw delete allow ftp
方法 2
ただし、以下のコマンドを使用して、上記の例で最初のルールを削除しようとしたとき。
$ 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-restore の適切なテキスト ファイルにすぎません。 ufw の微調整や、ufw コマンドでは許可されていない追加の iptables コマンドの配置は、いくつかのテキスト ファイルを編集する必要があります。
- /etc/default/ufw: デフォルトのポリシー、IPv6 サポート、およびカーネル モジュールの主な構成。
- /etc/ufw/before[6].rules: これらのファイル内のルールは、ufw コマンドによって追加されたルールよりも前に計算されます。
- /etc/ufw/after[6].rules: これらのファイル内のルールは、ufw コマンドによって追加されたルールの後に計算されます。
- /etc/ufw/sysctl.conf: カーネル ネットワーク調整パラメータ。
- /etc/ufw/ufw.conf: ブート時に ufw を有効にするかどうかを設定し、LOGLEVEL を設定します。
結論
iptables のフロントエンドとしてのUFW は、ユーザーにとって使いやすいインターフェイスを確実に提供します。ユーザーは複雑な iptables 構文を覚える必要はありません。 UFW もパラメータとして「plain english」を使用します。
許可、拒否、リセットもその 1 つです。 iptables フロントエンドは他にもたくさんあると思います。しかし、ファイアウォールを迅速かつ簡単に、そしてもちろん安全にセットアップしたいユーザーにとって、ufw が最良の代替手段の 1 つであることは間違いありません。詳細については、「man ufw」と入力して ufw マニュアル ページにアクセスしてください。