設定

UFWでファイアウォールを設定する|Linuxサーバーの基本防御

Linux ファイアウォール セキュリティ

UFWでファイアウォールを設定する
Linuxサーバーの基本防御

UFW(Uncomplicated Firewall)は、Ubuntuに標準搭載されているファイアウォール管理ツールです。
iptablesを直接操作するよりも遥かに簡単にポートの開放・遮断を設定できます。

こんな人向けの記事です

  • VPSやLinuxサーバーのセキュリティを強化したい
  • ファイアウォールの基本設定を知りたい
  • iptablesは難しいので簡単なツールを使いたい

環境

項目詳細
OSUbuntu 20.04 / 22.04
ツールUFW(デフォルトでインストール済み)

Step 1UFWの状態を確認する

サーバー
sudo ufw status
Status: inactive

初期状態では無効(inactive)になっています。

サーバー
# 番号付きでルール一覧を表示
sudo ufw status numbered

Step 2UFWを有効化する

SSH接続中は先にSSHを許可してから有効化する
UFWを有効化するとデフォルトで全ての受信を拒否します。SSHを許可する前に有効化すると、サーバーから締め出されます。
サーバー
# 1. まずSSHを許可
sudo ufw allow ssh

# 2. UFWを有効化
sudo ufw enable

# 3. 確認
sudo ufw status
Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere

Step 3ポートを開放する

サーバー
# ポート番号で指定
sudo ufw allow 80       # HTTP
sudo ufw allow 443      # HTTPS

# サービス名で指定
sudo ufw allow http
sudo ufw allow https

# TCPのみ許可
sudo ufw allow 8080/tcp

# ポート範囲
sudo ufw allow 3000:3100/tcp
サーバー
# 特定のポートを拒否
sudo ufw deny 3306      # MySQL外部アクセスを拒否

Step 4IPアドレスで制限する

サーバー
# 特定のIPからの全アクセスを許可
sudo ufw allow from 203.0.113.10

# 特定のIPからの特定ポートへのアクセスを許可
sudo ufw allow from 203.0.113.10 to any port 22

# サブネット単位で許可
sudo ufw allow from 192.168.1.0/24

# 特定のIPからのアクセスを拒否
sudo ufw deny from 10.0.0.5

Step 5ルールの削除

サーバー
# 番号付き一覧を表示
sudo ufw status numbered

# 番号を指定して削除
sudo ufw delete 2

# ルールを直接指定して削除
sudo ufw delete allow 80

Step 6よく使うUFW設定パターン

Webサーバー(nginx / Apache)

サーバー
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

デフォルトポリシーの設定

サーバー
# 受信は全て拒否(許可したものだけ通す)
sudo ufw default deny incoming

# 送信は全て許可
sudo ufw default allow outgoing

コマンド早見表

コマンド動作
sudo ufw status状態とルール一覧を表示
sudo ufw enableUFWを有効化
sudo ufw disableUFWを無効化
sudo ufw allow ポートポートを開放
sudo ufw deny ポートポートを拒否
sudo ufw delete ルールルールを削除
sudo ufw reset全ルールをリセット
sudo ufw reloadルールを再読み込み

まとめ

  • SSHを許可してからUFWを有効化(締め出し防止)
  • デフォルトは受信拒否・送信許可が推奨
  • 必要なポートだけ allow で開放
  • IPアドレスでアクセス制限も可能
  • ufw status numbered でルールの確認・削除