適切に構成されたファイアウォールは、システム全体のセキュリティの最も重要な側面の1つです。
UFW(Uncomplicated Firewall)は、iptablesファイアウォールルールを管理するためのユーザーフレンドリーなフロントエンドです。その主な目標は、iptablesの管理を簡単にすること、またはその名前が示すように、複雑にしないことです。
この記事では、Debian10でUFWを使用してファイアウォールを設定する方法について説明します。
前提条件#
rootまたはsudo権限を持つユーザーのみがシステムファイアウォールを管理できます。
次のコマンドを入力して、ufw
をインストールします パッケージ:
sudo apt update
sudo apt install ufw
UFWステータスの確認#
サーバーからのロックアウトを回避するために、インストールによってファイアウォールが自動的にアクティブ化されることはありません。次のように入力すると、UFWのステータスを確認できます。
sudo ufw status verbose
出力は次のようになります:
Status: inactive
UFWがアクティブになっている場合、出力は次のようになります。
UFWデフォルトポリシー#
デフォルトでは、UFWはすべての着信接続をブロックし、すべての発信接続を許可します。これは、特にポートを開かない限り、サーバーにアクセスしようとする人は誰も接続できないことを意味します。サーバー上で実行されているアプリケーションとサービスは、外部にアクセスできるようになります。
デフォルトのポリシーは/etc/default/ufw
で定義されています ファイルであり、sudo ufw default <policy> <chain>
を使用して変更できます コマンド。
ファイアウォールポリシーは、より詳細でユーザー定義のルールを構築するための基盤です。一般的に、最初のUFWデフォルトポリシーは良い出発点です。
アプリケーションプロファイル#
ほとんどのアプリケーションには、サービスを記述し、UFW設定を含むアプリケーションプロファイルが付属しています。プロファイルは/etc/ufw/applications.d
に自動的に作成されます パッケージのインストール中のディレクトリ。
システムタイプで使用可能なすべてのアプリケーションプロファイルを一覧表示するには:
sudo ufw utf --help
システムにインストールされているパッケージに応じて、出力は次のようになります。
Available applications:
DNS
IMAP
IMAPS
OpenSSH
POP3
POP3S
Postfix
Postfix SMTPS
Postfix Submission
...
特定のプロファイルと含まれるルールの詳細については、app info
を使用してください コマンドの後にプロファイル名が続きます。たとえば、使用するOpenSSHプロファイルに関する情報を取得するには:
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
出力には、プロファイル名、タイトル、説明、およびファイアウォールルールが含まれます。
SSH接続を許可する#
最初にUFWファイアウォールを有効にする前に、着信SSH接続を許可する必要があります。
リモートの場所からサーバーに接続していて、着信SSH接続を明示的に許可する前にUFWファイアウォールを有効にすると、Debianサーバーに接続できなくなります。
SSH接続を受け入れるようにUFWファイアウォールを設定するには、次のコマンドを実行します。
sudo ufw allow OpenSSH
Rules updated
Rules updated (v6)
SSHサーバーがデフォルトのポート22以外のポートでリッスンしている場合は、そのポートを開く必要があります。
たとえば、sshサーバーはポート7722
でリッスンします 、実行します:
sudo ufw allow 7722/tcp
着信SSH接続を許可するようにUFWファイアウォールが構成されたので、次を実行して有効にします。
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
ポート番号443
を使用することもできます :
sudo ufw allow 443/tcp
Tomcatまたはポート8080
でリッスンするその他のアプリケーションを実行する場合 次のコマンドでポートを開きます:
sudo ufw allow 8080/tcp
ポート範囲を開く#
UFWを使用すると、ポート範囲へのアクセスを許可することもできます。範囲を開くときは、ポートプロトコルを指定する必要があります。
たとえば、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
特定のポートへのアクセスを許可するには、たとえばポート22
IPアドレス64.63.62.61の作業マシンから、次のコマンドを使用します。
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