Chapter 03

WiFiアクセスポイントの構築手順

yutafujii
yutafujii
2021.07.03に更新

概要

ハードから順に構築します.大きくは以下の通りです.

  1. ハードウェアのセットアップ
  2. OSのフラッシュ
  3. PC初期設定
  4. ネットワークドライバのインストール
  5. アクセスポイント構築
  6. ネットワーク設定

ハードウェアのセットアップ

まずはRaspberry Piのセットアップです.

1.放熱金属を貼る

一部のハードウェアは利用すると高熱になるものがあるため,放熱効率を上げるために熱伝導率の良い金属を表面積を大きくして貼り付けておきます.

金属を貼るのは以下の3箇所:

  • CPU
  • Memory
  • USB3.0ホストコントローラー

2.ファンを付ける

ファンを回すのも,ハードウェアの冷却効率を高めるためです.自然体流より強制対流の方が熱伝導率が高いので無理やり空気を対流させることでより効率良く冷やすことができます(サウナでタオルを振られると熱いのも,水風呂で横の人が動くと冷たいのも同じ理由です).

OSイメージをカードに焼き付ける

1.OSイメージのダウンロード

オフィシャルサイトより64-Bitのイメージをダウンロードします.

*参考までに私がダウンロードした当時のファイルを解答するとkali-linux-2021.1-rpi4-nexmon-64.img.xz という名前でした.torrentファイルを使ってダウンロードする場合はutorrentを利用してください.

イメージのSDカードへのフラッシュはbalenaEtcherというアプリケーションを利用します.

2.以下サイトからダウンロード&インストール

https://www.balena.io/etcher/

3.microSDカードをPCに繋いで,1でダウンロードしたイメージをフラッシュ

Kali Linuxの初期セットアップ

初回起動時にはデフォルトのID/PWでログインする必要があります.現時点でのKali Linuxの初期に利用可能なID/PWは以下の通りです.

username password
kali kali
root kali

1.パスワードを変更する

sudo -i
passwd

2.インターネットに繋げる

Raspberry PiをWiFiアクセスポイントにする以前に,まずはPiをインターネットと繋げておかないとツールのインストールなどもできません(もちろん,PCとPiを繋いでPC経由で渡す方法はありますが).

また,今回はPiをアクセスポイントにするだけでなく,そこでインターネットにつながるようにするのでPi自体をインターネットと繋げておくことは必須条件になります.

Raspberry Pi model4やmodel3には最初からWireless LANアダプタがついており,WiFi接続でインターネットアクセスできるようになります.

最初からWiFiアダプタ内蔵されているならネットワークアダプタ買わなくてもいいじゃないかという議論はありますがこれは後の章で解説します.

3.Gitをインストール

$ apt-get update
$ apt-get install git

なお本書ではパッケージマネジメントにapt-get コマンドを使用しますが,apt でも問題ありません.

ついでにやっておくといいこと

SSHできるようにしておく

SSHキーの更新とSSHデーモン起動

Kali Linuxのイメージで初期設定されているSSHキーは全て同じなのでそのまま利用するのは非常に危険です.必ず新しいキーを発行して用いるようにしましょう.

$ rm /etc/ssh/*key*

$ ssh-keygen -A

$ mkdir /run/sshd
# このディレクトリを作っておかないと動かなかったのですが,不要の可能性もあります.

$ /user/sbin/sshd

$ systemctl start ssh

ネットワークドライバのインストール

今回使うのはRealtek社の「8188eu」に対応するドライバです.これは今回の本で利用するTP-Linkというネットワークアダプタに対応しているものです.なので,もし別のアダプタを購入した場合はここで記載している手順通りにやっても動きませんが,ハードウェアに合わせてドライバをインストールするという基本的な考え方は同じです.

以下手順:

1.ドライバのソースコードをcloneする.

$ cd ~
$ mkdir tools && cd tools
$ git clone https://github.com/aircrack-ng/rtl8188eus

2.不要なドライバを読み込み対象から外す

$ echo 'blacklist r8188eu'|sudo tee -a '/etc/modprobe.d/realtek.conf'

3.同一名称のドライバを削除する

実はKali Linuxには最初から「8188eu」という名前のドライバがインストールされています.これがlib配下に残っているとこのあとコンパイルする同一名のドライバを認識してくれなくなるので事前に削除しましょう.

$ cd /lib/modules/$(uname -r)/kernel/drivers/net/wireless

$ rm -rf ./realtek
# もしも削除したくない場合は一時的に退避させるよう代わりに以下コマンドを実行
# mv ./realtek ~/tools

4.コンパイル&インストール

$ make && sudo make install

makeコマンドは既存フォルダ内にバイナリファイルを作成していくだけです.make installコマンドによってそれがlib/module配下にコピーされます.

5.Piを再起動する

その後,ネットワークアダプタをUSBに差し込んで(最初から挿していてもOK)以下コマンドを実行し,エラーが出なければOKです.

$ airmon-ng
# -> 8188euがドライバとなっているインターフェイスを確認.ここではwlan1とする

$ ifconfig wlan1 down

$ iwconfig wlan1 mode master
# -> ドライバのインストールが上手くいっていない時はここでエラーがでる

$ ifconfig wlan1 up

$ iwconfig
# -> wlan1のmodeがMasterになっていればOK

この先の手順を実行する際の注意点

紛らわしいですが重要なので必ず読んでから進めてください.

この先,2つのインターネットインターフェイスについてそれぞれ必要な設定を行なっていきます.
本書では

  • <WLAN0>:TP-Linkが繋がっているインターフェイス
  • <WLAN1>:Raspberry Pi内蔵のWiFiアダプタが繋がっているインターフェイス

としますが,お手元のインターフェイスに合わせて適宜書き換えてください.ネットワークインターフェイスはiwconfigないしairmon-ngで確認できます.

WiFiホスティング

アクセスポイントにはHostapd(Host Access Point Daemon)と呼ばれるソフトウェアを使います.これによって特定のネットワークインターフェイスをアクセスポイント&認証サーバーとして動かすことができます.

1.インストール&設定

$ apt-get install hostapd

$ vi /etc/hostapd/hostapd.conf

2..confに以下の内容を記載

interface=<WLAN0>
driver=nl80211
ssid=YOUR-WIFI-NAME
hw_mode=g
channel=11
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
ieee80211n=1
wme_enabled=1

# 以下はPWを付ける場合に記載
wpa=2
wpa_passphrase=yourpassword
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400

3.hostapd起動

$ hostapd /etc/hostapd/hostapd.conf
$ ifconfig <WLAN0> up 192.168.1.1 netmask 255.255.255.0

ここまでくると,WiFiアクセスポイントに自作のWiFiネームがが表示されるようになっているのではないかと思います.

(SecureWiFiといういかにも怪しい名前にした)

ただ,まだこのWiFiはインターネットにアクセスができません.

パスワードなしで接続できるように設定した場合は当然誰でも接続できるのでご注意ください.Raspberry Piで22番ポートや80番ポートを開けている場合は誰でもSSHログイン試行(ブルートフォース)やHTTPリクエストが飛ばせるので攻撃される可能性を念頭に置いておきましょう.

DNS設定

さて,インターネットに接続できるようにするため,まずはホスティングしたWiFiにDNSを立てておきます.dnsmasqを利用します.

1.インストール&設定

$ apt-get install dnsmasq

$ vi /etc/dnsmasq.d/dnsmasq.conf

2..confに以下の内容を記載

interface=<WLAN0>
dhcp-range=192.168.1.2,192.168.1.30,255.255.255.0,12h
dhcp-option=3,192.168.1.1
dhcp-option=6,192.168.1.1
server=8.8.8.8
log-queries
log-dhcp
listen-address=127.0.0.1

3.dnsmasqの起動

$ systemctl start dnsmasq

IPパケットのフォワーディング

最後の手順です.

Linuxカーネルにおけるパケット処理の設定を追加し,IPフォワーディングをTRUEにします.

$ iptables –-table nat –-append POSTROUTING --out-interface <WLAN1> -j MASQUERADE
$ iptables –-append FORWARD –-in-interface <WLAN0> -j ACCEPT

$ echo 1 > /proc/sys/net/ipv4/ip_forward

完成!

これで自作したWiFiに繋いだPC/スマホからもインターネットに繋がるようになります!