UFW (Uncomplicated Firewall)
組み込みツールUbuntu, Debian
UFW (Uncomplicated Firewall) は、Ubuntuの標準ファイアウォールフロントエンドです。ufw allow 22/tcp のような短いコマンドでカーネルのパケットフィルタを管理します。デフォルトでインストールされていますが、初期状態では無効になっており、デフォルトポリシーでは着信接続を拒否し、発信接続を許可する設定になっています。
1ルール
ufw allow 443/tcp でポートを開放し、ufw deny でブロックします。また、ufw limit ssh を使用すると、SSHを許可しつつ接続試行回数が多すぎるアドレスをブロックできます。ufw allow from 203.0.113.5 to any port 22 は特定のIPアドレスのみを許可します。'OpenSSH' のようなアプリケーションプロファイルは ufw app list で確認できます。
2ステータスと削除
ufw status verbose でポリシーとルールを表示できます。ufw status numbered を実行するとルールに番号が振られ、ufw delete <number> で特定のルールを削除できるようになります。
3DockerとUFW
Dockerは公開されたコンテナポートに対して独自のiptablesルールを書き込みますが、これらはUFWのルールよりも先に処理されます。そのため、docker run -p で公開されたポートは、UFWで許可されていない場合でもアクセス可能な状態になることがあります。
接続を遮断せずにUFWを有効にする方法
- まずSSHを許可する:
sudo ufw allow OpenSSH - 必要な他のサービスを許可する(例):
sudo ufw allow 443/tcp - ファイアウォールを有効にする:
sudo ufw enable - 結果を確認する:
sudo ufw status verbose
注意点
- SSHルールを設定せずにSSH経由でUFWを有効にすると、接続が切断されます。
- Dockerコンテナによって公開されたポートは、UFWのルールをバイパスする可能性があります。
関連記事
- SSH キーSSH キー認証の仕組み、ssh-keygen を使用したキーの作成方法、サーバーへのインストール方法、および保護方法について解説します。
- systemd ユニットと systemctlsystemd ユニットの概要、一般的なユニットタイプ、および systemctl を使用してサービスを開始、停止、有効化、確認する方法について解説します。
- journalctl と systemd ジャーナルjournalctl を使用したログの読み取り方法、ジャーナルが使用している容量の確認方法、および --vacuum オプションを使用して安全に縮小する方法について解説します。
出典
- ufw(8) マニュアルページ (Ubuntu) manpages.ubuntu.com
- ファイアウォール (Ubuntu Server ドキュメント) ubuntu.com
最終確認: