🚧

ufw のルールをシェルスクリプトでまとめて設定したい

2024/06/13に公開

一家に一台、Raspberry Piがある時代(ない)。

私も自宅でNASなど複数の用途で運用しています。
サーバーとして使用するなら、もちろんファイアーウォールも設定しますよね。

今回は複数のルールをまとめて適用する方法を考えていきたいと思います!

そもそも ufw って?

ufwとは、「ファイアーウォールの設定を簡単に行うためのコマンド」です。

僕が参考にしたのは以下のページ↓です。
https://raspida.com/firewall4raspbian-ufw/

設定してみよう

詳細は上記のページや他の解説記事に譲りますが、軽く設定の流れを紹介します。

  1. ufw のインストール

    sudo apt install ufw
    
  2. 全ポートのリクエストを拒否

    まずはすべてのポートへのリクエストを拒否します。

    sudo ufw default deny
    
  3. 必要なポートを許可

    次に必要なポートを許可します。

    ホワイトリストの発想です。

    sudo ufw allow 22
    

    登録時にコメントをつけることもできます。

    sudo ufw allow 5900 comment 'VNC'
    
  4. 設定を反映

    これでここまでの設定が反映され、ファイアーウォールが有効になります。

    万が一、SSH接続中に使用しているポートを許可せず有効にすると、、、当然アクセスできなくなるので注意しましょう。

    このコマンドをを実行すると上記の内容の警告が出ます。

    sudo ufw enable
    
  5. 確認
    こちらでステータスを確認します

    sudo ufw status
    

    結果はこんな感じ↓

    Status: active
    
    To                         Action      From
    --                         ------      ----
    22                         ALLOW       Anywhere
    5900                       ALLOW       Anywhere                   # VNC
    22 (v6)                    ALLOW       Anywhere (v6)
    5900 (v6)                  ALLOW       Anywhere (v6)              # VNC
    

以上が簡単な流れです。

これを毎度対応するのはめんどくさい!!!

そうなんです、ここからが本題です。
今回ご紹介したのはSSHとVNCの2ポートなので、毎回コマンドを実行してもいいと思いますが、
私が実際に運用してる Raspberry Pi は合計9ポートを許可しています。

さらに、それぞれにコメントを付与したり、アクセス元のIPを指定したり、などをしているともう保守が大変です。

そこで今回はシェルスクリプトを利用してコマンドをまとめてみました。

ufw_rules.sh
# ルールを初期化
sudo ufw reset

# 全ポートアクセス拒否
sudo ufw deny

# 許可するポートを指定(コメントもつける)
sudo ufw allow 22 comment 'SSH'
sudo ufw allow 5900 comment 'VNC'

# ステータスを出力
sudo ufw status

まとめたファイルを実行しましょう。

$ source ./ufw_rules.sh

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                   # SSH
5900                       ALLOW       Anywhere                   # VNC
22 (v6)                    ALLOW       Anywhere (v6)              # SSH
5900 (v6)                  ALLOW       Anywhere (v6)              # VNC

これでまとめて設定できるようになりました。

コメントを書き換えたいときも、ルールをポート番号順に並び替えたいときも、アクセス元のIPを指定したいときも、IPv6を拒否したいときも、ぜんぶこのファイルを書き換えればOKです!!

それでは、よいラズパイサーバーライフを!!

SMARTCAMP Engineer Blog

Discussion