ラズパイで簡単なNATコンバータを使ってiptablesコマンドからIoTファイアウォールの理解を深める


※ 当ページには【広告/PR】を含む場合があります。
2022/12/11
蛸壺の中の工作室|ラズパイで簡単なNATコンバータを使ってiptablesコマンドからIoTファイアウォールの理解を深める

遡ること3年も前になりますが、
「NASAの機密データがRaspberry Piを侵入口として盗まれた」という当時としてはショッキングな事件がIoTセキュリティー史に刻まれることになり、「あのNASAがハッキングされるなんて、シングルボードコンピュータに代表されるIoT機器も安全とは言えない」という認識が世間一般に知られることになったように記憶しています。

NASAのような国家機密級の技術情報を外部に漏洩させないためのセキュリティー部門は当然最高レベルに堅牢でなくてはいけませんが、組織の内部から見ると、ITセキュリティー技術に疎い研究者やスタッフが何気なく接続してしまったラズパイを外部のハッカーから踏み台にされてしまったのが問題のようです。

近年では、企業や研究機関の試作や製品の一部にもラズパイが採用されるケースも増えてきているので、裏を返すと、開発エンジニアにも必要最低限の「IoTセキュリティー」の理解が必要になっています。

今回は、以前説明した
『ラズパイで構成するNATコンバーター』を使って、ラズパイIoTセキュリティーの要とも言える『iptables』コマンドに慣れてみようという企画です。

合同会社タコスキングダム|タコツボの中の工作室
ラズパイでiptablesを使って有線LANを中継するスイッチングハブ的なNATコンバータを作る

自宅のホームネットワークで使えるNATコンバーターをラズパイ4をベースに構築する手順を紹介します。


ラズベリーパイ4B 4GB 技適対応品

LABISTS Raspberry4 4B-32GB オールインワンセット

TP-Link WiFi 無線LAN 中継器 11ac AC750 433+300Mbps

おさらい〜ラズパイで簡単なNATコンバータを構成する

前の回では、2つの異なるローカルネットワーク間を跨げるようにしたNATコンバータの詳しい設定手順までを解説していました。

Dockerネットワークなどもそうですが、2つ以上のローカルネットワークを超えるにしてもファイアウォールのルールの設置は結構面倒です。

ただ、ブロードバンドルーターを一つ越えてインターネットに接続する単純な設定ならさほど小難しいことを考える必要はありません。

            
        
という主に5つの手順を抑えることでラズパイを簡単にNATコンバーターにすることができます。

isc-dhcp-server(DHCPサーバー)のセットアップ

まずはラズパイをWiFi無線をインターネット側に接続した状態でのネットワークデバイスの構成から確認してみます。

            
        
ラズパイ3/4にはlo(ローカルホスト=127.0.0.1)wlan0(WiFiネットワークデバイス)eth0(有線LANデバイス)の3つが主に存在していることが分かります。

ネットワークルーティングの状態も確認すると

            
        
となっています。

このラズパイの
eth0側にイーサネットで接続した下位のデバイスがインターネット接続できるように新しいネットワークを作成するためには、まずラズパイがルーター機能を持つ必要があります。

つまりこの構成だと適切に
DHCPサーバー化が必要になります。

初心者からベテランまで幅広く使えるDebian系OSの定番DHCPサーバーとしては
「isc-dhcp-server」と、小規模ネットワーク向けのDNSサーバー・リゾルバーの役割として利用できる「dnsmasq」をセットでインストールします。

先に
isc-dhcp-serverを入れて、DHCPサーバーの起動までを確認します。

            
        
ではisc-dhcp-serverをインストールしたらDHCPサーバーから下位のネットワークに接続したデバイスに配布するローカルアドレスを/etc/dhcp/dhcpd.confに設定します。

とりあえず今回はさほど接続するデバイスも多くないので192.168.x.11から192.168.x.20までの範囲でアドレスの割当をしてみます。

なお伏せ字の
x = ...はご自宅のブロードバンドルーターが提供しているローカルネットワークのアドレス値に被らないように適宜読み替えてください。

            
        

DHCPサーバーは
eth0インターフェースに紐付けをします。

            
        
では、isc-dhcp-serverが自動で立ち上がるようにしておきます。

            
        
ラズパイを再起動して、isc-dhcp-serverが自動で起動しているかを確認しましょう。

            
        
この時点では、おそらくまだ設定が足りていないのでisc-dhcp-serverは起動でコテてしまうはずです。

ルーター(ラズパイ)側のIPアドレスを固定する

そもそもラズパイにルーターのデフォルゲートウェイとなる起点のIPアドレス(
192.168.***.1)をeth0に拘束していなかったので、ちゃんと/etc/dhcpcd.confで修正します。

            
        
ここでroutersdomain_name_servers0.0.0.0(ネットワーク外部へのルート)を指定していることで、wlan0側のネットワークにパケットの行き先を変えるようにできます。

dnsmasq(DNSレゾルバー)のセットアップ

まだDNSレゾルバが正しく設定されていないので、おそらく下位デバイスを接続しても正しくIPアドレスが付与されない状態だと思います。

ということで、
dnsmasqを入れます。

            
        
            
        

            
        

            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        

            
        
            
        
            
        

            
        
合同会社タコスキングダム|蛸壺の中の工作室
合同会社タコスキングダム|蛸壺の中の工作室
            
        
            
        
            
        
            
        
            
        

            
        
            
        
            
        
            
        
            
        

            
        
            
        
            
        

            
        
            
        
            
        
            
        

記事を書いた人

記事の担当:taconocat

ナンデモ系エンジニア

電子工作を身近に知っていただけるように、材料調達からDIYのハウツーまで気になったところをできるだけ細かく記事にしてブログ配信してます。

記事のおしながき