Ubuntu Server でファイアウォールを設定する方法
出版された: 2025年2月15日 21:33:54 UTC
最終更新日 2026年1月12日 8:37:10 UTC
この記事では、Uncomplicated FireWall の略である ufw を使用して 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 full」を有効にする)を備えることで、いくぶん「スマート」になり、新しいルールを適用するためにファイアウォール全体を無効化/有効化する必要がなくなりました。)
GNU/Linux(Ubuntu)サーバーを使い始めた頃は、ファイアウォールの設定にはiptablesの設定ファイルを手動で作成し、管理する必要がありました。しかし最近、Uncomplicated Firewall(Uncomplicated Firewall)の略称であるufwを発見しました。本当に簡単です :-)
私の Ubuntu Server 14.04 のインストールでは既に ufw がインストールされていましたが、インストールされていない場合は、リポジトリからインストールするだけです。
UFWは実際にはiptablesの設定を簡素化するツールに過ぎません。裏ではiptablesとLinuxカーネルファイアウォールがフィルタリングを行っているため、ufwのセキュリティはこれらと比べて劣っても優ってもいません。しかし、ufwを使用するとファイアウォールの正しい設定がはるかに簡単になるため、人為的ミスのリスクを軽減でき、経験の浅い管理者にとってはより安全な環境となる可能性があります。
サーバーがIPv4だけでなくIPv6も有効になっている場合は、UFWでも有効になっていることを確認してください。/etc/default/ufwファイルを編集し、IPV6=yesという行を探してください。私の環境では既にこの行がありましたが、もし存在しないか「no」と表示されている場合は編集してください。
その後、コマンドプロンプトを使って開きたいポートを有効化します。サーバーにSSH接続している場合は、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 構成に変更を加えた場合、変更を有効にするには次のように、ufw を無効にしてから再度有効にする必要がある場合があります。
sudo ufw enable
現在の構成を確認するには、次のように入力します。
ufw が有効になっていない場合は、単に「非アクティブ」メッセージが表示されます。有効になっている場合は、現在定義されているルールが一覧表示されます。
