【ラズパイ】uwfでファイアウォールの設定

【ラズパイ】uwfでファイアウォールの設定

ラズパイにuwfというファイアウォールを入れてみました。この記事は、そのときに行ったuwfの基本的な設定方法を解説いたします。

つかうもの

Raspberry Pi

今回は自宅で持て余していたRaspberry Pi 3 Model Bを使用しました。アクセスの少ないWebサーバーなどでの用途でしたら、ラズパイ3でもスペック的には充分だと思います。

ただし、ffmpegなどの動画エンコーダーを動かす場合は、Raspberry Pi 3はオススメできません。ハードウェアエンコーダーを使ってもCPU100%超えとなってしまいました。Raspberry Pi 4などのスペックの高いボードを使いましょう。

ルーターのポート開放

自宅以外の外部ネットワークからラズパイにアクセスするためにはファイアウォール以前に、ルーターのポート開放が必要になります。ただし、ルーターによってポートの開放のやり方は異なりますので、設定のやり方はこの記事では割愛します。

ルーターのポート開放の詳しくは「ポートフォワーディング」や「ポートマッピング」で調べてみてください。

ちなみに私はNECのAtermルーターを10年以上愛用しています。ポート開放も行うことができ、自鯖の設置にはオススメなルーターです。

▼ こちらのルーターは実際に実家で使用しているものです。2階でもWiFi受信できるようになりました。

ラズパイにファイアーウォールを設定する(ufw)

今回ラズパイに使用するファイアウォールは、ufw(Uncomplicated Firewall)というものです。ufwでは、カンタンなコマンドでファイアーウォールの管理を行うことができます。内部にはiptablesを使用しているようです。

ufwの設定方法は こちらの記事 を参考にさせていただきました。

それではufwを設定していきましょう。

ufwのインストール

まずは、ラズパイにufwをインストールします。

$ sudo apt install ufw

最初にすべてのポートを拒否しておく

次のようにして、すべてのポートをあらかじめ拒否しておきます。

$ sudo ufw default deny

このとき、絶対にufwを起動させないでください。SSHでアクセスできなくなってしまいます。

ローカルエリア内にいようがいまいが、こうなってしまったらラズパイを再インストールするか、モニタとキーボードを直接つないでファイアウォールの設定をいじるしかありません。くれぐれもご注意ください。

SSHを許可する

$ sudo ufw allow 22

これでufwを起動してもSSHだけは繋がるようになりました。

IPv6を除外する

IPv6は使用しないので、設定ファイルの内容を変更しておきます。

$ sudo vi /etc/default/ufw
...
IPV6=no
...

ファイアウォールを起動させる

ufwのサービスを起動させてファイアウォールを有効にしましょう。

$ sudo ufw enable

実行すると次のように聞かれますが、SSHで使用するポートは開放しましたので「y」を入力してリターンします。

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y

これでファイアウォールが有効になりました。

Firewall is active and enabled on system startup

ファイアウォールの状態を確認する

次のようにしてファイアウォールの状態を確認できます。

$ sudo ufw status
To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                  

ラズパイでポートを使用しているプロセスを調べる(nmap)

ポートが開いていてもサーバープロセスが起動していなければアクセスできません。ネットワークトラブルのときに役立つ、nmapをインストールしておきましょう。

$ sudo apt install nmap

次のようにして、nmapでポートを使用しているプロセスを調べられます。

$ sudo nmap localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2022-01-05 21:19 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000058s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 999 closed ports
PORT   STATE SERVICE
22/tcp open  ssh

Nmap done: 1 IP address (1 host up) scanned in 0.44 seconds

外部ネットワークからポートの開放を確認する(macOS/nmap)

それでは、外部ネットワークから自鯖のポートが開放されているかチェックしてみましょう。macOSを使用しました。こちらもnmapを使います。

brewでnmapをインストールしましょう。

$ brew install nmap

次のようにして、nmapでTCPポートの開放の確認ができます。コマンドの実行は必ずスーパーユーザーで行ってください。

$ sudo nmap -sT -p ポート IPアドレス(またはホスト名)

オプションを-sUにすればUDPの確認ができます。

「キッチンノート.fun」という料理サイトを立ち上げました!このサイトで紹介していた料理記事は、そちらへ移動しました。
記事に関するご質問などがあれば、
Twitter または お問い合わせ までご連絡ください。
関連記事