ファイアウォールは、着信および発信ネットワークトラフィックを監視およびフィルタリングするためのツールです。特定のトラフィックを許可するかブロックするかを決定する一連のセキュリティルールを定義することで機能します。
Ubuntuには、UFW(Uncomplicated Firewall)と呼ばれるファイアウォール構成ツールが付属しています。これは、iptablesファイアウォールルールを管理するためのユーザーフレンドリーなフロントエンドです。その主な目標は、ファイアウォールの管理をより簡単にすること、またはその名前が示すように、複雑にしないことです。
この記事では、UFWツールを使用してUbuntu20.04でファイアウォールを構成および管理する方法について説明します。適切に構成されたファイアウォールは、システム全体のセキュリティの最も重要な側面の1つです。
前提条件#
rootまたはsudo権限を持つユーザーのみがシステムファイアウォールを管理できます。ベストプラクティスは、sudoユーザーとして管理タスクを実行することです。
UFWは標準のUbuntu20.04インストールの一部であり、システムに存在する必要があります。何らかの理由でインストールされていない場合は、次のように入力してパッケージをインストールできます。
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デフォルトポリシーは良い出発点です。
アプリケーションプロファイル#
アプリケーションプロファイルは、サービスを説明し、サービスのファイアウォールルールを含むINI形式のテキストファイルです。アプリケーションプロファイルは、/etc/ufw/applications.d
に作成されます パッケージのインストール中のディレクトリ。
次のように入力すると、サーバーで使用可能なすべてのアプリケーションプロファイルを一覧表示できます。
sudo ufw app list
システムにインストールされているパッケージに応じて、出力は次のようになります。
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
特定のプロファイルと含まれるルールの詳細を確認するには、次のコマンドを使用します。
sudo ufw app info 'Nginx Full'
出力は、「NginxFull」プロファイルがポート80
を開くことを示しています および443
。
Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server
Ports:
80,443/tcp
アプリケーションのカスタムプロファイルを作成することもできます。
リモートの場所からUbuntuに接続している場合は、UFWファイアウォールを有効にする前に、着信SSH接続を明示的に許可する必要があります。そうしないと、マシンに接続できなくなります。
着信SSH接続を許可するようにUFWファイアウォールを設定するには、次のコマンドを入力します。
sudo ufw allow ssh
Rules updated
Rules updated (v6)
SSHが非標準ポートで実行されている場合は、そのポートを開く必要があります。
たとえば、sshデーモンがポート7722
でリッスンしている場合 、次のコマンドを入力して、そのポートでの接続を許可します。
sudo ufw allow 7722/tcp
着信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
を押します 。
システムで実行されるアプリケーションによっては、他のポートを開く必要がある場合もあります。ポートを開くための一般的な構文は次のとおりです。
ufw allow port_number/protocol
以下は、HTTP接続を許可する方法のいくつかの方法です。
最初のオプションは、サービス名を使用することです。 UFWは/etc/services
をチェックします 指定されたサービスのポートとプロトコルのファイル:
sudo ufw allow http
ポート番号とプロトコルを指定することもできます:
sudo ufw allow 80/tcp
プロトコルが指定されていない場合、UFWは両方のtcp
のルールを作成します およびudp
。
もう1つのオプションは、アプリケーションプロファイルを使用することです。この場合、「NginxHTTP」:
sudo ufw allow 'Nginx HTTP'
UFWは、proto
を使用してプロトコルを指定するための別の構文もサポートしています。 キーワード:
sudo ufw allow proto tcp to any port 80
ポート範囲#
UFWでは、ポート範囲を開くこともできます。開始ポートと終了ポートはコロンで区切られます(:
)、プロトコルを指定する必要があります。tcp
またはudp
。
たとえば、7100
からのポートを許可する場合 7200
へ 両方のtcp
およびudp
、次のコマンドを実行します:
sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp
特定の送信元IPからのすべてのポートでの接続を許可するには、from
を使用します キーワードの後に送信元アドレスが続きます。
IPアドレスをホワイトリストに登録する例を次に示します。
sudo ufw allow from 64.63.62.61
特定のポートへの特定のIPアドレスアクセスのみを許可する場合は、to any port
を使用します キーワードの後にポート番号が続きます。
たとえば、ポート22
でのアクセスを許可するには 64.63.62.61
のIPアドレスを持つマシンから 、次のように入力します:
sudo ufw allow from 64.63.62.61 to any port 22
サブネット#
IPアドレスのサブネットへの接続を許可するための構文は、単一のIPアドレスを使用する場合と同じです。唯一の違いは、ネットマスクを指定する必要があることです。
以下は、192.168.1.1
の範囲のIPアドレスへのアクセスを許可する方法を示す例です。 192.168.1.254
へ ポート3360
へ (MySQL):
sudo ufw allow from 192.168.1.0/24 to any port 3306
特定のネットワークインターフェースでの接続を許可するには、in on
を使用します キーワードの後にネットワークインターフェイスの名前が続きます:
sudo ufw allow in on eth2 to any port 3306
接続を拒否する#
すべての着信接続のデフォルトポリシーはdeny
に設定されています 、変更していない場合は、特に接続を開かない限り、UFWはすべての着信接続をブロックします。
拒否ルールを作成することは、許可ルールを作成することと同じです。 deny
を使用するだけで済みます allow
の代わりにキーワード 。
ポートを開いたとしましょう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 proto tcp from 23.24.25.0/24 to any port 80,443
UFWルールの削除#
ルール番号と実際のルールを指定してUFWルールを削除するには、2つの方法があります。
特にUFWを初めて使用する場合は、ルール番号でルールを削除する方が簡単です。最初にルール番号でルールを削除するには、削除するルールの番号を見つける必要があります。番号付きルールのリストを取得するには、ufw status numbered
を使用します コマンド:
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
ルール番号3
を削除するには 、ポート8080
への接続を許可するもの 、次のように入力します:
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
IPマスカレード#
IPマスカレードはLinuxカーネルのNAT(ネットワークアドレス変換)の変形であり、送信元と宛先のIPアドレスとポートを書き換えることによってネットワークトラフィックを変換します。 IPマスカレードを使用すると、ゲートウェイとして機能する1台のLinuxマシンを使用して、プライベートネットワーク内の1台以上のマシンがインターネットと通信できるようにすることができます。
UFWを使用したIPマスカレードの設定には、いくつかの手順が含まれます。
まず、IP転送を有効にする必要があります。これを行うには、/etc/ufw/sysctl.conf
を開きます ファイル:
sudo nano /etc/ufw/sysctl.conf
net.ipv4.ip_forward = 1
という行を見つけてコメントを外します :
net/ipv4/ip_forward=1
次に、転送されたパケットを許可するようにUFWを設定する必要があります。 UFW構成ファイルを開きます:
sudo nano /etc/default/ufw
DEFAULT_FORWARD_POLICY
を見つけます キーを押して、値をDROP
から変更します ACCEPT
へ :
DEFAULT_FORWARD_POLICY="ACCEPT"
次に、POSTROUTING
のデフォルトポリシーを設定する必要があります nat
のチェーン テーブルとマスカレードルール。これを行うには、/etc/ufw/before.rules
を開きます 以下に示すように、ファイルして黄色で強調表示された行を追加します。
sudo nano /etc/ufw/before.rules
次の行を追加します:
/etc/ufw/before.rules#NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic through eth0 - Change to public network interface
-A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
eth0
を置き換えることを忘れないでください -A POSTROUTING
パブリックネットワークインターフェイスの名前と一致する行:
完了したら、ファイルを保存して閉じます。
最後に、UFWを無効にしてから再度有効にして、UFWルールをリロードします。
sudo ufw disable
sudo ufw enable