Debianには、ベースシステムの一部としてインストールされたiptablesを使用してファイアウォールを管理するためのツールを提供するいくつかのパッケージが含まれています。初心者がiptablesツールを使用してファイアウォールを適切に構成および管理する方法を学ぶのは複雑な場合がありますが、UFWはそれを簡素化します。
UFW(Uncomplicated Firewall)は、iptablesファイアウォールルールを管理するためのユーザーフレンドリーなフロントエンドであり、その主な目標は、iptablesの管理を簡単にすること、または名前が示すように単純にすることです。
このチュートリアルでは、Debian9でUFWを使用してファイアウォールを設定する方法を紹介します。
前提条件#
このチュートリアルを続行する前に、ログインしているユーザーがsudo権限を持っていることを確認してください。
Debian9にはデフォルトでUFWがインストールされていません。ufw
をインストールできます 次のように入力してパッケージ化します:
sudo apt install ufw
インストールプロセスが完了したら、次のコマンドでUFWのステータスを確認できます。
sudo ufw status verbose
出力は次のようになります:
Status: inactive
UFWはデフォルトで無効になっています。サーバーからのロックアウトを回避するために、インストールによってファイアウォールが自動的にアクティブ化されることはありません。
UFWがアクティブになっている場合、出力は次のようになります。
UFWデフォルトポリシー#
デフォルトでは、UFWはすべての着信接続をブロックし、すべての発信接続を許可します。つまり、サーバーにアクセスしようとしているユーザーは、特にポートを開かない限り接続できませんが、サーバーで実行されているすべてのアプリケーションとサービスは外部にアクセスできます。
デフォルトのポリシーは/etc/default/ufw
で定義されています ファイルであり、sudo ufw default <policy> <chain>
を使用して変更できます コマンド。
ファイアウォールポリシーは、より詳細でユーザー定義のルールを構築するための基盤です。ほとんどの場合、最初のUFWデフォルトポリシーが出発点として適しています。
アプリケーションプロファイル#
apt
を使用してパッケージをインストールする場合 /etc/ufw/applications.d
にアプリケーションプロファイルを追加します サービスを説明し、UFW設定を含むディレクトリ。
システムタイプで使用可能なすべてのアプリケーションプロファイルを一覧表示するには:
sudo ufw app list
システムにインストールされているパッケージに応じて、出力は次のようになります。
Available applications:
DNS
IMAP
IMAPS
OpenSSH
POP3
POP3S
Postfix
Postfix SMTPS
Postfix Submission
...
特定のプロファイルと含まれるルールの詳細を確認するには、次のコマンドを使用します。
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
A上記の出力は、OpenSSHプロファイルがポート22
を開くことを示しています。 。
SSH接続を許可する#
UFWファイアウォールを有効にする前に、まず着信SSH接続を許可する必要があります。
リモートの場所からサーバーに接続している場合(ほとんどの場合)、着信SSH接続を明示的に許可する前にUFWファイアウォールを有効にすると、Debianサーバーに接続できなくなります。
着信SSH接続を許可するようにUFWファイアウォールを構成するには、次のコマンドを実行します。
sudo ufw allow OpenSSH
Rules updated
Rules updated (v6)
SSHサーバーがデフォルトのポート22以外のポートでリッスンしている場合は、そのポートを開く必要があります。
たとえば、sshサーバーはポート8822
でリッスンします 、次に、次のコマンドを使用して、そのポートでの接続を許可できます。
sudo ufw allow 8822/tcp
UFWファイアウォールが着信SSH接続を許可するように構成されたので、次を実行して有効にできます。
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
ファイアウォールを有効にすると、既存のssh接続が中断される可能性があるという警告が表示されます。y
と入力するだけです。 Enter
を押します 。
他のポートでの接続を許可する#
サーバーで実行されるアプリケーションと特定のニーズに応じて、他のポートへの着信アクセスも許可する必要があります。
以下は、いくつかの最も一般的なサービスへの着信接続を許可する方法のいくつかの例です。
ポート80を開く-HTTP#
次のコマンドでHTTP接続を許可できます:
sudo ufw allow http
http
の代わりに プロファイルでは、ポート番号80
を使用できます :
sudo ufw allow 80/tcp
オープンポート443-HTTPS#
HTTPS接続は、次のコマンドで許可できます:
sudo ufw allow https
https
の代わりに同じことを達成するため ポート番号443
を使用できます :
sudo ufw allow 443/tcp
Tomcatまたはポート8080でリッスンするその他のアプリケーションを実行している場合は、次のコマンドで着信接続を許可できます。
sudo ufw allow 8080/tcp
ポート範囲を許可する#
UFWを使用すると、ポート範囲へのアクセスを許可することもできます。 UFWでポート範囲を許可する場合は、tcp
のいずれかのプロトコルを指定する必要があります またはudp
。
たとえば、7100
からのポートを許可するには 7200
へ 両方のtcp
およびudp
、次のコマンドを実行します:
sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp
特定のIPアドレスからのすべてのポートへのアクセスを許可する場合は、ufw allow from
を使用します コマンドの後にIPアドレスを続ける:
sudo ufw allow from 64.63.62.61
特定のポートへのアクセスを許可するには、たとえば、IPアドレスが64.63.62.61の作業マシンのポート22で、次のコマンドを使用します。
sudo ufw allow from 64.63.62.61 to any port 22
サブネットを許可する#
IPアドレスのサブネットからの接続を許可するコマンドは、単一のIPアドレスを使用する場合と同じですが、唯一の違いは、ネットマスクを指定する必要があることです。たとえば、192.168.1.1から192.168.1.254の範囲のIPアドレスからポート3360
へのアクセスを許可する場合 (MySQL)次のコマンドを実行します:
sudo ufw allow from 192.168.1.0/24 to any port 3306
特定のネットワークインターフェースへの接続を許可する#
特定のポートへのアクセスを許可するには、たとえばポート3360
特定のネットワークインターフェース上eth2
、allow in on
を使用します コマンドの後にインターフェースの名前を続けます:
sudo ufw allow in on eth2 to any port 3306
接続を拒否する#
すべての着信接続のデフォルトポリシーはdeny
に設定されています つまり、特に接続を開かない限り、UFWはすべての着信接続をブロックします。
ポートを開いたとしましょう80
および443
サーバーが23.24.25.0/24
から攻撃を受けています 通信網。 23.24.25.0/24
からのすべての接続を拒否するには 、次のコマンドを実行します:
sudo ufw deny from 23.24.25.0/24
ポート80
へのアクセスのみを拒否したい場合 および443
23.24.25.0/24
から 使用するもの:
sudo ufw deny from 23.24.25.0/24 to any port 80
sudo ufw deny from 23.24.25.0/24 to any port 443
拒否ルールの記述は許可ルールの記述と同じです。allow
を置き換えるだけです。 deny
を使用 。
UFWルールを削除するには、ルール番号と実際のルールを指定する2つの方法があります。
特にUFWを初めて使用する場合は、ルール番号でUFWルールを削除する方が簡単です。
ルール番号でルールを削除するには、最初に削除するルールの番号を見つける必要があります。これを行うには、次のコマンドを実行します:
sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 8080/tcp ALLOW IN Anywhere
たとえば、ポート8080への接続を許可するルール番号3を削除するには、次のように入力します。
sudo ufw delete 3
2番目の方法は、実際のルールを指定してルールを削除することです。たとえば、ポート8069
を開くルールを追加した場合 次のコマンドで削除できます:
sudo ufw delete allow 8069
何らかの理由でUFWを停止し、すべてのルールを非アクティブ化する場合は、次のコマンドを実行します。
sudo ufw disable
後でUTFを再度有効にしてすべてのルールをアクティブにする場合は、次のように入力します。
sudo ufw enable
UFWをリセットすると、UFWが無効になり、アクティブなルールがすべて削除されます。これは、すべての変更を元に戻して最初からやり直したい場合に役立ちます。
UFWをリセットするには、次のコマンドを入力するだけです。
sudo ufw reset