ラズパイ(Ubuntu)のファイアウォールをufwで設定

デバイス
※本画像は生成AIで作成

ラズパイ4B(raspberry pi 4B)にUbuntu Server 22.04をインストールしたデバイスにufw(ファイアウォール管理ツール)をインストールして、ネットワークセキュリティの機能を設けます。

ufwで必要なアクセスを許可、その他の外部からのアクセスを拒否するなどを行います。

始めにufwの設定を間違えるとラズパイにアクセスできなくなり取り返しがつかなくなる場合もあるため慎重に設定を行いましょう。コマンドの内容を理解して適用するかどうかを各自判断してください。

スポンサーリンク

ufwのインストール

ufwがインストールさせているかを確認します。インストールされていない場合はインストールします。

apt list | grep ufw

ufwの設定

ufwのstatusがどうなっているかを確認します。ufwを起動していない場合はinactiveと表示されます。

sudo ufw status verbose

筆者の環境はラズパイの内蔵Wi-Fiでのアクセスポイントに直接接続し、sshにて設定をしています。まずラズパイの内蔵Wi-Fiでアクセスポイント(AP)を立てていることも踏まえ、内蔵Wi-Fiを提供しているwlan0に関する設定をしていきます。

内蔵Wi-Fiでのアクセスポイントの設定は以下の記事で解説をしています。

はじめに、基本ポリシーを設定します。入ってくるものは全て拒否し、出ていくものは全て許可します。

sudo ufw default deny incoming
sudo ufw default allow outgoing

この状態から使用する必要なポートを個別に設定していきます。

ここではSSHでアクセスするポート22、DHCPサーバー機能のポート67、DNSサーバー機能のポート53を開放します。

sudo ufw allow in on wlan0 to any port 22 proto tcp
sudo ufw allow in on wlan0 to any port 67 proto udp
sudo ufw allow in on wlan0 to any port 53

以上でwlan0に対してファイアウォールを設定しました。次にufwを起動しラズパイ上で動作させます。ufwの設定は十分注意してください。間違った設定をするとsshでラズパイを操作できなくなり詰みます。以下のコマンドで有効化します。

sudo ufw enable

有効化したら設定状況を確認しています。どのアクセスを有効化しているのかがわかります。

sudo ufw status verbose

=====
To                         Action      From
--                         ------      ----
22/tcp on wlan0            ALLOW IN    Anywhere
67/udp on wlan0            ALLOW IN    Anywhere
53 on wlan0                ALLOW IN    Anywhere
22/tcp (v6) on wlan0       ALLOW IN    Anywhere (v6)
67/udp (v6) on wlan0       ALLOW IN    Anywhere (v6)
53 (v6) on wlan0           ALLOW IN    Anywhere (v6)

ufwの追加設定(USB Wi-Fi アダプタ)

ラズパイのUSBに接続しているUSB Wi-Fi アダプタのファイアウォールを設定します。USB Wi-Fi アダプタを介してSSHできる状態にします。

ラズパイにUSB Wi-Fiアダプタを設定するやり方は次の記事を参照してください。

このファイアウォールの設定をすることでUSB Wi-Fiアダプタが接続しているローカルネットワークを介してSSHをすることができます。

sudo ufw allow in on (USB Wi-Fiアダプタのインターフェイス名:wlx**********) to any port 22 proto tcp

インターフェイス名はip aなどで確認できます。

ufwのstatusを確認すると追加したUSB Wi-Fiアダプタのインタフェース名で設定が追加されていると思います。

sudo ufw status verbose

以上で基本的な接続への設定は完了です。

ufwの追加設定(カメラ映像をみる:Motion)

ラズパイのFFCコネクタにRaspberry pi camera module 2を接続し、Motionというパッケージを使うことで、ラズパイにSSHしている開発用PC上のブラウザを使ってラズパイのカメラ画像をヘッドレスで見ることができます。

Motionのインストール方法はここでは記載しません。Motionでのカメラ画像の表示は通常ローカルネットワーク上のポート8081に設定されています。そのためこのポートへアクセスすることができるように次の設定をします。

sudo ufw allow in on wlan0 proto tcp to any port 8081 comment 'Motion Stream'

ufwの追加設定(カメラ映像をみる:ROS2 web video server)

MotionではなくROS2の機能を使って、ラズパイに接続されたカメラ映像を開発用PC上のブラウザで見るときを考えます。

web video serverを実行するとポート8080で接続を待っている状態になりますので、8080のポートを設定します。

sudo ufw allow in on wlan0 proto tcp to any port 8080 comment 'web video server'

まとめ

ufwの設定をすることで目的のアクセスのみに許可を与え、ネットワークセキュリティを向上させます。追加設定で示したように、機能やパッケージで使うポートを確認してufwを設定しましょう。

設定しないと、なぜかできないとトラブりますので、新しい機能を使う時は確認をするよう習慣化した方がよさそうだ。


タイトルとURLをコピーしました