ufw のルールをシェルスクリプトでまとめて設定したい
一家に一台、Raspberry Piがある時代(ない)。
私も自宅でNASなど複数の用途で運用しています。
サーバーとして使用するなら、もちろんファイアーウォールも設定しますよね。
今回は複数のルールをまとめて適用する方法を考えていきたいと思います!
ufw
って?
そもそも ufwとは、「ファイアーウォールの設定を簡単に行うためのコマンド」です。
僕が参考にしたのは以下のページ↓です。
設定してみよう
詳細は上記のページや他の解説記事に譲りますが、軽く設定の流れを紹介します。
-
ufw のインストール
sudo apt install ufw
-
全ポートのリクエストを拒否
まずはすべてのポートへのリクエストを拒否します。
sudo ufw default deny
-
必要なポートを許可
次に必要なポートを許可します。
ホワイトリストの発想です。
sudo ufw allow 22
登録時にコメントをつけることもできます。
sudo ufw allow 5900 comment 'VNC'
-
設定を反映
これでここまでの設定が反映され、ファイアーウォールが有効になります。
万が一、SSH接続中に使用しているポートを許可せず有効にすると、、、当然アクセスできなくなるので注意しましょう。
このコマンドをを実行すると上記の内容の警告が出ます。
sudo ufw enable
-
確認
こちらでステータスを確認します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を指定したり、などをしているともう保守が大変です。
そこで今回はシェルスクリプトを利用してコマンドをまとめてみました。
# ルールを初期化
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です!!
それでは、よいラズパイサーバーライフを!!
Discussion