Ubuntu Server でファイアウォールを設定する方法
出版された: 2025年2月15日 21:33:54 UTC
この記事では、ufw (Uncomplicated FireWall の略) を使用して GNU/Linux 上にファイアウォールを設定する方法について説明し、いくつかの例を示します。名前の通り、これは必要以上のポートが開かれないようにするための非常に簡単な方法です。
How to Set Up a Firewall on Ubuntu Server
この投稿の情報は、Ubuntu Server 14.04 x64 に基づいています。他のバージョンでは有効かどうかはわかりません。(更新: この投稿の情報は、Ubuntu Server 24.04 の時点でも基本的に有効で機能することを確認できますが、この 10 年間で、ufw は一般的なサーバー アプリケーションのプロファイルを持つようになり、いくぶん「スマート」になりました (たとえば、ポート 80 と 443 を個別に有効にするのではなく、「Nginx フル」を有効にすることができます)。また、新しいルールを適用するためにファイアウォール全体を無効/有効にする必要がなくなりました)。
私が初めて GNU/Linux (Ubuntu) サーバーを使い始めたとき、ファイアウォールを設定するには、iptables の複雑な設定ファイルを手動で作成して管理する必要がありました。しかし、最近、Uncomplicated Firewall の略であるufw を発見しました。これは本当に簡単なのです :-)
私の Ubuntu Server 14.04 のインストールでは ufw がすでにインストールされていましたが、インストールされていない場合は、リポジトリからインストールするだけです。
UFW は実際には iptables 構成を簡素化するツールにすぎません。裏では、フィルタリングを行うのは依然として iptables と Linux カーネル ファイアウォールであるため、ufw はこれらより安全でも安全でもありません。ただし、ufw を使用するとファイアウォールを正しく構成することがはるかに簡単になるので、人為的エラーのリスクが軽減され、経験の浅い管理者にとってはより安全になる可能性があります。
サーバーが IPv4 だけでなく IPv6 も設定されている場合、UFW でもこれが有効になっていることを確認してください。/etc/default/ufw ファイルを編集し、 IPV6 = yesという行を探します。私のインストールではすでにありましたが、ない場合は編集する必要があります。
次に、コマンド プロンプトを使用して、開きたいポートを有効にします。SSH 経由でサーバーに接続している場合は、それも許可してください。そうしないと、接続が中断され、アクティブ化したときにサーバーにアクセスできなくなる可能性があります。サーバーに物理的にアクセスできるかどうかによっては、これは少し不便かもしれません ;-)
たとえば、標準ポート 22 で ssh を使用し、暗号化されていない接続 (ポート 80 の HTTP) と暗号化された接続 (ポート 443 の HTTPS) の両方をサポートする Web サーバーを構成する場合は、次のコマンドを発行して ufw を構成します。
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
さらにルールが必要な場合は、上記のように追加するだけです。
静的 IP アドレスがあり、1 つの場所からのみ ssh 経由で接続できるようにする必要がある場合は、次のように ssh 接続を単一のオリジン アドレスに制限することもできます。
もちろん、代わりに独自の IP アドレスを入力してください。
完了したら、次のように入力して ufw を有効にします。
これで完了です。ファイアウォールは実行されており、サーバーを再起動すると自動的に起動します :-)
ufw 構成に変更を加えた場合は、次のように、変更を有効にするために無効にしてから再度有効にする必要がある場合があります。
sudo ufw enable
現在の構成を確認するには、次のように入力します。
ufw が有効になっていない場合は、単に「非アクティブ」メッセージが表示されます。それ以外の場合は、現在定義されているルールが一覧表示されます。