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ファイアウォールをインストールする
UFW(Uncomplicated 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で構成されている場合は、UFWがIPv6とIPv4サポートで構成されていることを確認してください。確認するには、お気に入りのエディターを使用して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で特定のポートを有効にする
ファイアウォールで特定のポートを開いて、特定のサービス経由での接続を許可することもできます。たとえば、デフォルトでポート80(HTTP)および443(HTTPS)でリッスンする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)のポート22(SSH)への接続を許可するには、次のコマンドを実行してください。
$ sudo ufw allow from 192.168.1.0/24 to any port 22
特定のネットワークインターフェイスの許可
特定のネットワークインターフェイスeth2への特定のポート22(SSH)への接続を許可するには、次のコマンドを実行してください。
$ sudo ufw allow in on eth2 to any port 22
UFWでの接続の拒否
デフォルトでは、すべての着信接続はブロックされます。UFWで明示的に接続を開いていない限りです。例えば、ポート80と443を開放しており、Webサーバーが未知のネットワーク11.12.13.0/24から攻撃を受けている場合。
特定の11.12.13.0/24ネットワーク範囲からのすべての接続をブロックするには、次のコマンドを使用できます。
$ sudo ufw deny from 11.12.13.0/24
ポート80と443での接続のみをブロックしたい場合は、次のコマンドを使用できます。
$ 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/