UFWでファイアウォールを設定する

Linuxで代表的なファイアウォールアプリ「UFW」をデスクトップ版とサーバーCLI版でインストールし、設定する方法を分かりやすく解説します。

UFWが使えるLinuxOS (私が確認したOSの一覧です)

  • Raspbian
  • Ubuntu 18.04 & 20.04
  • CentOS 7 & 8
  • Debian 9 & 10

UFWのインストール

sudo apt-get update
sudo apt-get install ufw

UFWが起動しているか確認

「Active: active」となっていれば大丈夫です。

systemctl status ufw
● ufw.service - Uncomplicated firewall
     Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2021-08-14 01:28:04 JST; 5 days ago
       Docs: man:ufw(8)
   Main PID: 569 (code=exited, status=0/SUCCESS)
      Tasks: 0 (limit: 9447)
     Memory: 0B
     CGroup: /system.slice/ufw.service

Aug 14 01:28:04 mgserver systemd[1]: Finished Uncomplicated firewall.
Warning: journal has been rotated since unit was started, output may be incomplete.

起動していなければ、以下のコマンドを実行してください。

sudo systemctl enable --now ufw
sudo systemctl start ufw

# Statusの確認
sudo systemctl status ufw

各種コマンドについて

ufw status            # <= 状況確認
ufw enable            # <= ファイアウォールの有効化
ufw disable           # <= ファイアウォールの無効化
ufw default deny      # <= 全アクセスの拒否
ufw default allow     # <= 全アクセスの許可
ufw deny smtp         # <= SMTP サービスのアクセスを拒否
ufw allow ftp         # <= FTP サービスのアクセスを許可
ufw deny 25/tcp       # <= TCP ポート 25 でのアクセスを拒否
ufw allow 80/udp      # <= UDP ポート 80 でのアクセスを許可
ufw allow 53          # <= TCP ポート 53, UDP ポート 53 でのアクセスを拒否
ufw allow in http     # <= HTTP サービスのアクセスを IN のみ許可
ufw reject out smtp   # <= SMTP サービスのアクセスを OUT のみ却下
ufw allow proto tcp from any to any port 8080:8090
                      # <= TCP ポート 8080 〜 8090 での全アクセスを許可
ufw allow proto tcp from 192.168.11.0/24 to any port 9999
                      # <= TCP ローカルネットワーク 192.168.11.0/24 からの
                      #    TCP ポート 9999 でのアクセスを許可
ufw delete 3          # <= 3 番目のルールを削除

UFWを設定していく

一般的には、全てのポートをアクセス拒否にして、許可したいポートのみを開放するという形でつかいます。

ファイアウォールを有効化する

まずは、ファイアウォールを有効化します。

ufw enable

全ポートをアクセス拒否にする

次に、一旦すべてのポートをアクセス拒否します。
※SSHで設定している場合は、SSHのポート22も閉じてしまうので、サーバー本体側で設定してください。

ufw default deny

ポートを開放する

次に、許可したいポートを許可します。

# HTTPの場合
ufw allow 80

# HTTPSの場合
ufw allow 443

# PC版Minecraftサーバーの場合
ufw allow 25565

# SSHを使用する場合
ufw allow 22

# 範囲を指定して開放する
ufw allow 8000:9000/tcp
ufw allow 8000:9000/udp

Ubuntuアプリに使用するポートを許可する

ApacheやNginx、OpenSSHなどは既存の設定を反映することができます。
設定しておくことをおすすめします。

# 設定できるソフト一覧
ufw app list

Available applications:
  Apache
  Apache Full
  Apache Secure
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

# アプリのポートを開放する
ufw allow 'Nginx Full'

UFW設定を確認する

以上で設定は完了です。最後に、現在ファイアウォールで許可しているポートを確認して終わりましょう。

ufw status

Status: active

To                         Action      From
--                         ------      ----
8000:9000/tcp              ALLOW       Anywhere
8000:9000/udp              ALLOW       Anywhere
22                         ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
Nginx HTTPS                ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
8000:9000/tcp (v6)         ALLOW       Anywhere (v6)
8000:9000/udp (v6)         ALLOW       Anywhere (v6)
22 (v6)                    ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)
Nginx HTTPS (v6)           ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)