ufwのインストールと設定

カテゴリ:ファイヤーウォール

Ubuntuのファイヤーウォール設定はufwを使用します。ufwはiptablesのフロントエンドのコマンドとなり、簡単にiptablesの設定を行えるように設計されています。

ufwのインストール

以下のコマンドでufwをインストールします。

# apt -y install ufw

自動起動と起動

以下のコマンドでufwの自動起動の有効化と起動を行います。

# systemctl enable ufw
# systemctl start ufw

ufwの有効化

初期設定ではステータスはinactiveとなっています。

# ufw status verbose
Status: inactive

以下のコマンドでufwを有効化できますが、SSHで接続しているなら先に22番ポート(または実際のSSHのポート番号)を許可しておきましょう。

# ufw allow 22
# ufw enable

実行例)

# ufw allow 22
Rules updated
Rules updated (v6)

# ufw enable
Firewall is active and enabled on system startup

再度、ステータスを見てみます。今度はStatus: activeとなっていますね。

# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)

また、Default: deny (incoming)であり、受信方向(incoming)に関してはホワイトリスト方式であること、22番ポートへの通信(To:22)が許可(ALLOW IN)されている事が分かります。

参考ホワイトリスト方式とは、セキュリティを高めるために、デフォルトですべての接続を拒否し、特定のポートのみ許可(ホワイトリスト)する設定方式です。「Default: deny (incoming)」は正に、デフォルトですべての受信を拒否することを表しています。先に22番ポートを許可しておいたのはこのためです。

ルールの追加コマンド

先ほどすでに22番ポートを追加したように、特定のポートを許可する場合は、以下のように ufw allow コマンドに続けてTCPポート番号を指定します。

# ufw allow 22

ルールの削除コマンド

特定のポートを削除するには、ufw delete コマンドに続けて対象の行番号を指定します。

行番号は ufw status numbered コマンドで確認できます。

# ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    Anywhere
[ 2] 22 (v6)                    ALLOW IN    Anywhere (v6)

# ufw delete 2
Deleting:
 allow 22
Proceed with operation (y|n)? y
Rule deleted (v6)

Note削除しても良いかを尋ねられますのでyを入力します。

以下のように、IPv6の22番ポートの設定が削除されていることが確認できます。

# ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    Anywhere

ufwのサブコマンドの一覧

ufwコマンドのサブコマンドの一覧は以下となります。

ufwコマンドのサブコマンド
サブコマンド説明
enableファイアウォールを有効
disableファイアウォールを無効
default ARGデフォルトのポリシーを設定
logging LEVELロギングをLEVELに設定
allow ARGS許可ルールを追加
deny ARGS拒否ルールを追加
reject ARGS拒否ルールを追加
limit ARGS制限ルールを追加
delete RULE|NUMルールを削除
insert NUM RULENUMにルールを挿入
route RULEルートルールを追加
route delete RULE|NUMルートルールを削除
route insert NUM RULENUMにルートルールを挿入
reloadファイアウォールをリロード
resetファイアウォールをリセット
statusファイアウォールのステータスを表示
status numberedルールの番号付きリストとしてファイアウォールステータスを表示
status verbose詳細なファイアウォールステータスを表示
show ARGファイアウォールレポートを表示
versionバージョン情報を表示

アプリケーションプロファイル関連のコマンドの一覧は以下となります。

アプリケーションプロファイルコマンド
サブコマンド説明
app listアプリケーションプロファイルを一覧表示
app info PROFILEPROFILEに関する情報を表示
app update PROFILEプロファイルを更新
app default ARGデフォルトのアプリケーションポリシーを設定

ファイヤーウォールを構成する

ファイヤーウォールの一般的な設定方式はホワイトリスト方式です。つまりすべてのポートを拒否(DROP)しておき、特定のポートのみ許可(ACCEPT)するという設定を行います。

今回の例では一般的にVPSで使用されるであろう、以下のポートのみを許可するように設定します。

tcp dpt:20(ftp data)
tcp dpt:21(ftp)
tcp dpt:22(ssh)
tcp dpt:25(smtp)
tcp dpt:80(http)
tcp dpt:110(pop3)
tcp dpt:443(https)
tcp dpt:465(urd)
tcp dpt:587(submission)
tcp dpt:993(imaps)
tcp dpt:995(pop3s)
tcp dpt:10000(webmin)
tcp dpts:60000:60030(ftp passive mode)

以下のコマンドで上記のポートを追加します。

ufw allow 20
ufw allow 21
ufw allow 22
ufw allow 25
ufw allow 80
ufw allow 110
ufw allow 443
ufw allow 465
ufw allow 587
ufw allow 993
ufw allow 995
ufw allow 10000
ufw allow 60000:60030/tcp

Noteポート番号の範囲を指定する場合は、「:」記号を使用します。但しその場合はTCPプロトコルかUDPプロトコルであるかを「/」記号の後に明示する必要があります。

正常にルールが登録されたことを確認します。

# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
20                         ALLOW IN    Anywhere
21                         ALLOW IN    Anywhere
25                         ALLOW IN    Anywhere
80                         ALLOW IN    Anywhere
110                        ALLOW IN    Anywhere
443                        ALLOW IN    Anywhere
465                        ALLOW IN    Anywhere
587                        ALLOW IN    Anywhere
993                        ALLOW IN    Anywhere
995                        ALLOW IN    Anywhere
10000                      ALLOW IN    Anywhere
60000:60030/tcp            ALLOW IN    Anywhere
20 (v6)                    ALLOW IN    Anywhere (v6)
21 (v6)                    ALLOW IN    Anywhere (v6)
22 (v6)                    ALLOW IN    Anywhere (v6)
25 (v6)                    ALLOW IN    Anywhere (v6)
80 (v6)                    ALLOW IN    Anywhere (v6)
110 (v6)                   ALLOW IN    Anywhere (v6)
443 (v6)                   ALLOW IN    Anywhere (v6)
465 (v6)                   ALLOW IN    Anywhere (v6)
587 (v6)                   ALLOW IN    Anywhere (v6)
993 (v6)                   ALLOW IN    Anywhere (v6)
995 (v6)                   ALLOW IN    Anywhere (v6)
10000 (v6)                 ALLOW IN    Anywhere (v6)
60000:60030/tcp (v6)       ALLOW IN    Anywhere (v6)

設定のバックアップとリストア

バックアップ

ルールはIPv4とIPv6で別ファイルに保存されていますので、以下をそれぞれバックアップします。

/etc/ufw/user.rules
/etc/ufw/user6.rules

例)

# cp /etc/ufw/user.rules /tmp/ufw.rules.back
# cp /etc/ufw/user6.rules /tmp/ufw6.rules.back

リストア

以下のファイルをそれぞれバックアップしたファイルで置き換えます。

/etc/ufw/user.rules
/etc/ufw/user6.rules

例)

# cp -f /tmp/ufw.rules.back /etc/ufw/user.rules
# cp -f /tmp/ufw6.rules.back /etc/ufw/user6.rules

以下のコマンドで設定をリロードします。

# ufw reload

公開日時:2021年08月22日 18:00:01
最終更新日時:2024年03月24日 09:27:32

なお、VPS選びで迷ったらこちらの記事で主要VPSのメモリ容量ごとの月額、年額料金を比較していますので、是非参考にしてみてください。

ファイヤーウォールに戻る

このページのトップに戻る