Windows系ではお馴染みのファイアウォールufwは、LinuxのRaspbianでも導入できます。有名なのはiptablesというのがあります。ただ、これ難しいのですよ。もっと簡単に導入したいならufwがオススメです。
ufw = Uncomplicated Firewall
家庭内だけの閉じられた空間であれば必要性は感じませんが、外部から自宅内に接続させるような場合、ファイアウォールが設置してあればより良いことは言うまでもありません。
外部から繋ぐルーターのポート開放とは別に、比較的に簡単なufwも試してみてください。
インストールと設定
インストールはaptから可能です。
sudo apt install ufw
いくつかのコマンドを覚えるだけで利用できます。
インストールしただけではファイアウォールは有効になっていません。有効にしてあげること、そして何を拒否して何を許可するかを設定していきます。
確認方法
先ず現在の状態を確認するにはstatusコマンドです。
sudo ufw status
pi@raspberrypi:~ $ sudo ufw status
Status: inactive
インストール直後はこんな感じにインアクティブと出ていれば正常です。
では、有効にする前にルールを決めないとなりません。主にポート番号を指定して拒否&許可する形になります。仮に何も指定せずにしてしまうと全部を拒否&許可となります。お気を付けください。
他にもルール設定番号一覧を出す場合は
sudo ufw status numbered
アプリ名から設定するには
sudo ufw app list
この時点でもうコマンドを試した人は、先のnumberedのステータスはインアクティブで出ません。
app listの場合は以下のように出力されていると思います。
app listのアプリケーション名を指定して設定が可能です。
- ポート番号を指定して設定する
- アプリ名を指定して設定する
どちらでもOKです。慣れればポート番号を指定する方が分かり易いでしょう。
先に開けておきたいポート番号
SSHでの接続とVNCでの遠隔操作などのポートは開けておかないと手も足も出せなくなりますので注意が必要です。
特にSSHは後で作業するにも必要ですから開けておきましょう。
開けておきたいポート番号
- SSH(ポート22番)
- VNC(ポート5900番)
これらポート番号を指定して設定していきます。
ネットワークを少し知ると分かるのですが、はじめに全拒否をさせ、それから必要な箇所のポートを開放していく、という論理になります。
最初に許可からやってしまうと、拒否も設定しないとならないですし、何を許可と拒否が増えて分からなくなります。これは合理的ですよね。
設定の基本手順
ここまで読んで、まだufwはアクティブ、つまり稼働させていません。
この時点で最初に全拒否をしておきます。
sudo ufw default deny
拒否&許可は英語そのまま、拒否=deny、許可=allow です。
ここでのデフォルト(default)の意味は初期設定のニュアンスです。つまり全て。
では、稼働させる前にSSHやVNCのポートを開けます。まだ稼働させてはなりませんよ。
SSHの許可
sudo ufw allow 22
このようにSSHはポート22番なので、それを許可するという意味です。簡単ですね!
ここで以下のように出力されると思います。
Rules updated
Rules updated (v6)
ルールを更新したと2行出ます。上がIPv4、下がIPv6です。
IPv6は使わない前提であれば、これは後ほど除外のために設定ファイルを書き換えます。
VNCの許可
次にVNCですが、先程のリストにVNCがあればそれを指定して許可してみましょう。
sudo ufw allow vnc
同じように2行出ていれば設定できています。
IPv6を除外する
IPv6については細かくなりますので、別の機会にご説明しますが、大抵の方は現時点で不都合が出る場合も有り得ますので、一旦、IPv6を設定しないように修正します。
# /etc/default/ufw
#
# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
# accepted). You will need to 'disable' and then 'enable' the firewall for
# the changes to take affect.
IPV6=no
コメントアウトされている中でIPV6=yesをnoに書き換えます。
ファイアウォールを起動&停止させる
ファイアウォールufwは起動(稼働)させてはじめて意味を成します。ついでに停止する場合も含め、設定できているか確認しましょう。
sudo ufw enable
SSHでこの作業をしていると、ここで念のための質問が出ます。(y|n)
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
直訳そのままですが、現在のSSH通信に障害が出るもよ? いい?ということです。
しかし先程、全拒否の後にSSHとVNCは許可しました。であれば問題ありませんからイエスのyでOKですね。
成功したメッセージ
Firewall is active and enabled on system startup
では、状態を確認してみましょう。先程のステータスコマンドです。
sudo ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
VNC ALLOW Anywhere
きちんとアクティブ状態で22番とVNCが許可されていますね。
同じように先程の設定したポート番号一覧のコマンドもみてみます。
sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] VNC ALLOW IN Anywhere
先程と異なり左に番号が出ています。これはルールの削除に便利です。
VNCを削除する場合
sudo ufw delet 2
このようにルール番号を指定して削除が可能です。
削除した場合、VNCのポートが有効になりません。今一度設定してみてください。今度はポート5900を指定しましょう。
sudo ufw allow 5900
簡単ですね。
ファイアウォールの停止
停止はdisable(無効)です。
sudo ufw disable
pi@raspberrypi:~ $ sudo ufw disable
Firewall stopped and disabled on system startup
このように出て成功です。
※システムの起動時にファイアウォールが停止して無効になると出ていますので、正確にはアクティブ後に再起動で確認、停止で再起動で確認です。
家庭内(職場内)だけで使いたいローカル指定
外からのアクセスは制御しないなら、ローカルのみ設定する方が望ましいです。
書式は以下です。
sudo ufw allow from 192.168.0.0/24 to any port 5900
この例では、家庭内のアドレス192.168.0.Xの場合です。もしも192.168.1.Xならば、192.168.1.0/24などとご自分に合わせてください。
そのポート5900、つまりVNCを家庭内だけに許可するという意味になり、外部にはポートは空いていないことになります。
先のポート5900を許可したルールは削除した後の方が分かり易いでしょう。
まとめ
最後のIPアドレスも使ったポート指定には、他にもプロトコルのTCPを指定することも可能で、決まり切った書式というものもあります。順番に覚えていけば、より簡単に設定できます。
考え方と設定方法をまとめると・・・、
全拒否 → ポート開放指定
アクティブ(enable)にする前に使用しているSSH接続(22番)などは開放しておきましょう。
app listで出したアプリ名での許可&拒否の指定も可能。
アプリ名の場合は、任意で変更していない最初からアプリが設定しているポート番号と思ってください。
コマンドまとめ
sudo ufw default deny (全拒否)
sudo ufw allow ポート番号
sudo ufw status
sudo ufw status numbered
sudo ufw applist
sudo ufw enable
sudo ufw disable
ポート開放はそれぞれのルーターで設定(ポートフォワーディング)しないとなりませんから、このファイアウォールだけでは外部から繋がりません。
外部から接続しているサーバーなどにファイアウォールも設定してみてください。