1. ファイアウォールとは何か

ファイアウォールは、サーバーへの通信を「許可する通信」と「拒否する通信」に振り分ける仕組みです。必要なポート(Webなら80/443、SSHなら22)だけを開け、それ以外はすべて拒否するのが基本方針になります。

Ubuntu/Debian系では、複雑なiptablesのルールを直接書かなくても、ufw(Uncomplicated Firewall)というシンプルなコマンドで設定できます。

2. ufwの基本操作

まずSSHを許可してから有効化します。ここを忘れると、有効化した瞬間に自分自身がサーバーにアクセスできなくなるので要注意です。

sudo ufw allow OpenSSH
sudo ufw enable

Webサーバーを公開する場合は、以下でHTTP・HTTPSを許可します。

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

特定のポートを閉じたい場合はallowdelete allowに置き換えます。

sudo ufw delete allow 8080/tcp

3. 今の設定を確認する

sudo ufw status verbose

現在許可されているポートの一覧と、デフォルトの拒否/許可方針が表示されます。「Status: inactive」となっている場合はファイアウォール自体が無効な状態なので、公開サーバーでは特に注意が必要です。

4. どのポートを開けるべきかAIに相談する

「このアプリを動かすのに何番のポートが必要か分からない」という場面は多くあります。そんなときはAIに現在の構成を伝えて相談するのが効率的です。

「UbuntuサーバーでNginx(80/443)とPostgreSQL(同一サーバー内のアプリからのみ接続、外部には非公開)を動かしています。ufwでどのようなルールにすべきか、コマンド例つきで教えてください」

このように「何を」「どこまで公開したいか」を具体的に伝えると、必要最小限のポートだけを開ける設定を提案してもらえます。「とりあえず全部開ける」という判断を避けられるのが最大のメリットです。

5. やりがちな失敗

⚠️ よくある失敗

  • SSHを許可する前にufwを有効化し、自分自身がサーバーからロックアウトされる
  • 動作確認のために一時的に開けたポートを閉じ忘れる
  • データベースのポート(3306・5432など)を誤って外部公開してしまう
  • クラウド事業者側のセキュリティグループとufwの設定が食い違い、意図と違う挙動になる

特にクラウド(AWS・GCP・さくらのVPS等)を使っている場合、OS側のufwとは別に、クラウド側にもファイアウォール機能(セキュリティグループ等)があります。両方の設定を確認しないと「ufwでは許可しているのに繋がらない」「ufwで塞いだつもりが実は繋がっていた」という食い違いが起きるため、AIに相談する際は使っているクラウド事業者も伝えると精度の高い回答が得られます。

まとめ

  • ufwはUbuntu/Debianで手軽にファイアウォールを設定できるツール
  • 有効化前に必ずSSHを許可しておく(ロックアウト防止)
  • 必要なポートだけを最小限に開けるのが原則。迷ったら構成を具体的に伝えてAIに相談する
  • クラウド側のセキュリティグループとの二重管理に注意する