UbuntuとDebianでUFWファイアウォールを設定する方法

A correctly functioning firewall is the most crucial part of the complete Linux system security. By default, Debian and Ubuntu distribution comes with a firewall configuration tool called UFW (Uncomplicated Firewall), is a most popular and easy-to-use command line tool for configuring and managing a firewall on Ubuntu and Debian distributions.

この記事では、UFWファイアウォールをUbuntuおよびDebianディストリビューションにインストールしてセットアップする方法を説明します。

前提条件

この記事を始める前に、sudoユーザーでUbuntuまたはDebianサーバーにログインしていることを確認してください。sudoユーザーがいない場合は、rootユーザーとして以下の手順に従ってsudoユーザーを作成できます。

# adduser username
# usermod -aG sudo username 
# su - username
$ sudo whoami

UbuntuおよびDebianにUFWファイアウォールをインストールする

UFWUncomplicated 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で構成されている場合は、UFWIPv6IPv4サポートで構成されていることを確認してください。確認するには、お気に入りのエディターを使用して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で特定のポートを有効にする

ファイアウォールで特定のポートを開いて、特定のサービス経由での接続を許可することもできます。たとえば、デフォルトでポート80HTTP)および443HTTPS)でリッスンする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アドレスを特定のポートで許可

特定のポート(例えばポート22)から、IPアドレスが192.168.56.1の自宅のマシンへの接続を許可するには、IPアドレスの後に任意のポートポート番号を追加する必要があります。

$ sudo ufw allow from 192.168.56.1 to any port 22

特定のポートへのネットワークサブネットの許可

特定のIPアドレス(192.168.1.1から192.168.1.254)のポート22SSH)への接続を許可するには、次のコマンドを実行してください。

$ sudo ufw allow from 192.168.1.0/24 to any port 22

特定のネットワークインターフェイスの許可

特定のネットワークインターフェイスeth2への特定のポート22SSH)への接続を許可するには、次のコマンドを実行してください。

$ sudo ufw allow in on eth2 to any port 22

UFWでの接続の拒否

デフォルトでは、すべての着信接続はブロックされます。UFWで明示的に接続を開いていない限りです。例えば、ポート80443を開放しており、Webサーバーが未知のネットワーク11.12.13.0/24から攻撃を受けている場合。

特定の11.12.13.0/24ネットワーク範囲からのすべての接続をブロックするには、次のコマンドを使用できます。

$ sudo ufw deny from 11.12.13.0/24

ポート80443での接続のみをブロックしたい場合は、次のコマンドを使用できます。

$ 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は、iptablesの優れたフロントエンドであり、単一のufwコマンドで複雑なルールを定義するためのユーザーフレンドリーなインターフェースを提供しています。

このufwの記事についてご質問やご意見がある場合は、以下のコメントフォームを使用してお知らせください。

Source:
https://www.tecmint.com/setup-ufw-firewall-on-ubuntu-and-debian/