1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Raspberry Pi 3+の設定(忘備録)その1 無線LANにつないでSSHでリモート接続まで(ファイアウォール関連追記)

Last updated at Posted at 2021-10-07

今までRaspberry Pi 3+に16GBのmicroSDを挿してwebサーバとして運用していましたが、手狭になってきたので64GBに改めて環境構築をした時の自分の作業の忘備録です。以前導入した時とだいぶ変わっている部分が多かったので驚いたのが第一印象でした。

前提

  • このラズベリーパイは外部に公開はしません。(twitterへのポストはします)
  • 普段、このRaspberry Pi 3+は午前7時から午後11時まで30分毎にcronでbotを運用しています。
  • そのため一日当たりの作業時間は夜間の23時から0時までの1時間ぐらいをメンテナンス時間として作業を行う予定です。

またこういう世界から遠ざかって久しいのでいろいろと拙い部分があると思います。ぜひご指摘ください。

準備したハード・書籍

  • 64GBのmicroSDカード×2枚。1枚は予備用

また今回作業するにあたり、以下の本を参考にしました。

  • 日経Linux2019年特別付録 初めてのラズパイ&電子工作ブック
  • 技術評論社 ゼロからわかるLinaxWebサーバー超入門

準備するソフトウェア

Raspberry Pi Imager
Raspberry Pi OSをmicroSDカードに書き込みをする為に使用
Win32DiskImager
microSDのバックアップを取る為に使用。都度にバックアップを取っておくと、設定をミスした時にリカバリーが楽になります
Teraterm
作業用windowsPCからラズベリーパイにリモートログインするために使用

Raspberry Pi Imager導入→microSDカードをフォーマット&書き込み

※この作業はwindows上で完結する作業なので、23時のメンテ時間前に済ませておくことができます。

作業用WindowsPCにRaspberry Pi Imagerをインストール

作業用windowsPCに導入するRaspberry Pi Imagerをダウンロードしてきます。

から実行ファイルをダウンロードします。今回の環境はwindowsなのでwindows用を落とします。
01_ファイルダウンロード1.jpg
実行ファイルがダウンロードされました。このファイルをダブルクリックすれば、Raspberry Pi Imagerがインストールされます。
02_フォーマットファイルインストール1.jpg
02_フォーマットファイルインストール2.jpg
「Install」をクリックすればインストール完了です。
02_フォーマットファイルインストール3.jpg
完了しました。

microSDをフォーマット&ディスクイメージの書き込み

Raspberry Pi Imagerを起動します。
「microSDにどのOSをインストールするか」「どのドライブにインストールするか」の2点を選択して「WRITE」ボタンを押します。
03_ラズパイOSダウンロード選択1.jpg
とりあえず一番上のRaspberryPiOS(32-bit)を選んでおきました。
03_ラズパイOSダウンロード選択2.jpg
インストールするmicroSDカードが刺さっているドライブを選択します。今回はFドライブを選択しました。
03_ラズパイOSダウンロード選択3.jpg
一番右の「WRITE」ボタンをクリックして実行です。
03_ラズパイOSダウンロード選択4.jpg
「デバイス内のすべてのデータが消されるがよいか?」と聞かれます。Yesと答えるしかないです。しばらく時間がかかるのでお茶でも飲んでいましょう。
03_ラズパイOSダウンロード選択5.jpg
書き込み中の画面です。
03_ラズパイOSフォーマット・書き込み1.jpg

書き込みが終了したmicroSDのパーティッションです。複数に分割されています。
06_イメージ書き込み後sd.jpg

microSDをRaspberryPiに挿してネットワーク設定

この日のノルマは「ラズパイを無線LANでつなげてTeratermでSSH接続」までを目標とします。

実際にこの日行った作業

  • /etc/hostnameと/etc/hostsでホスト名の変更
  • /etc/dhcpcd.confで固定IPとデフォルトゲートウェイの設定
  • SSHサービスの起動
  • nmapのインストール
  • /etc/ssh/sshd_configでSSHのポート番号を任意の番号に変更
  • /etc/wpa_supplicant/wpa_supplicant.confで無線LANのSSIDなどの設定

ラズベリーパイ起動

windowsでディスクイメージを書き込んだmicroSDをRaspberry Pi 3+に挿して起動します。この段階ではHDMI、キーボード、マウス、LANケーブル、電源と小さな箱にケーブルだらけで取り回しが非常に面倒です。早いところリモートログインができるように設定したくなります。
しばらくはラズベリーパイでの作業になります。

07_ラズパイ起動後1.png
初回の起動は少し時間がかかりますが無事起動しました。
07_ラズパイ起動後2.png
07_ラズパイ起動後3.png
起動した際に国と言語、デフォルトのユーザー名piのパスワードを設定するように求められるので設定しましょう。
07_ラズパイ起動後5.jpg
無線LANの設定画面も出てきますが、今回はskipして有線LANの設定を後程行います。

ホスト名の変更

ホスト名を変更します。

/etc/hostname
raspberrypi #(デフォルト)
hogehostname #(任意の名前)
/etc/hosts
127.0.1.1 raspberrypi127.0.1.1 hogehostname #(任意の名前)←hostnameで変更したのと同じ名前にしておく事

固定IPとデフォルトゲートウェイの変更

LANにつなぐ際の固定IPとデフォルトゲートウェイの設定を行います。

/etc/dhcpcd.conf

# 有線LAN
interface eth0
static ip_address=xxx.xxx.x.xx/24 #←固定したいIPアドレス/サブネットマスク
static routers=xxx.xxx.x.x #←デフォルトゲートウェイ
static domain_name_servers=
static domain_search=

# 無線LAN
interface wlan0
static ip_address=xxx.xxx.x.yy/24
static routers=xxx.xxx.x.x
static domain_name_servers=
static domain_search=

IPアドレスの/24はサブネットマスクの255.255.255.0(11111111.11111111.11111111.0←1を全部足したら24)を現しています
有線LANと無線LANは別のIPを設定します。

このあたりで一度再起動してみましょう。再起動して、どこかにpingが通るか、ブラウジングができるのであれば無事ネットワークにつながっています。

SSHサービスの起動

ネットワークにつながったので、作業用windowsPCにインストールしてあるTeratermから有線LANのIPへSSHで接続を試みます。 拒否されました。Raspbianと違う。。。
SSHのポートが何番であるか調べるためにnmapを使用しようとしたところ、 入っていません。
nmapをインストールを行います。

$ sudo apt-update
$ sudo apt-get nmap

これでnmapがインストールされました。早速実行してみます。

nmap -p 1-65535 localhost

sshのポートが開いていないことが判明しました。SSHのサービスを起動します。

$ sudo raspi-config

07_ラズパイ起動後6.jpg
設定画面が開かれるのでInterfacing Optionsを選択
07_ラズパイ起動後7.jpg
SSHを選択
07_ラズパイ起動後8.jpg
「SSHサービスを実行するか」と聞かれるので「はい」を選択
また再起動をします。(sudo /etc/rc.d/init.d/sshd restartでもいいかもしれません)

再起動後、またnmapでポートの状況を見てみると無事開かれました。

ポート番号の変更と、SSHにリモートログインしてくるIPアドレスの限定

以降、ポート番号はそのままでよい人は無線LANの項目まで読み飛ばしてください。

ポート番号がデフォルトのままだとセキュリティに問題があるので任意の番号に変更します。
/etc/ssh/sshd_configのportの設定値がコメントアウトされているのでそれを外し、任意のポート番号を入力します。

/etc/ssh/sshd_config
#port=22
port=(任意の番号)

再度、再起動を行いnmapを実行。ポート番号が変更されている事を確認します。(サービス名がunknownになっていても問題なし。/etc/servicesに登録されていないため)

この変更を踏まえ、作業用windowsPCのTeratermから有線LANのIPと、変更したSSHのポート番号でリモートログインができることを確認したところ無事に入ることができました。
これでラズベリーパイからHDMI、キーボード、マウスの線を抜くことができます。

続いてリモートログインしてくるIPアドレスの設定です。

/etc/hosts.allow
#アクセスを許可するIPアドレス
sshd:xxx.xxx.x.xxx,xxx.xxx.x.yyy #IPアドレスが複数ある場合はカンマで区切ります。
/etc/hosts.deny
#アクセスを拒否するIPアドレス
sshd:ALL

これで、/etc/hosts.allowで設定したIPからのみSSH接続が可能となります。

ファイアウォールの設定

※ 2023/04/25 この設定をすることがすっぽり抜けていたため追記です。

参考url

#ファイアウォールのインストール
$ sudo apt install ufw

#とりあえずすべてのポートを拒否
$ sudo ufw default deny

#!!まだ有効化してはダメ!!

#まずはssh
$ sudo ufw allow 22(前述の項目でsshのポート番号を変更していた場合はその値を入れる)

#http関係
$ sudo ufw allow 80
$ sudo ufw allow 8080
$ sudo ufw allow 443

#samba関連
$ sudo ufw allow 137
$ sudo ufw allow 138
$ sudo ufw allow 139
$ sudo ufw allow 445

#ここまで設定してからファイアウォールを有効化
$ sudo ufw enable

無線LANの設定

ここからは作業用WindowSPCからリモートで作業ができます。
/etc/wpa_supplicant/wpa_supplicantを編集します。

/etc/wpa_supplicant/wpa_supplicant.conf
network={
        scan_ssid=1
        ssid="hogehoge_ssid"
        psk="hogehagehoge_psk"
}

scan_id=1は、SSIDがステルスの時に設定します。 これを設定しておかないといくらssidとpskが合っていても繋がりません。
さらにpskがこの場合、平文なので暗号化を行います。
コマンドで以下を実行

$ wpa_passphrase "hogehoge_ssid" "hogehagehoge_psk"
#実行結果
network={
        ssid="hogehoge_ssid"
        #psk="hogehagehoge_psk"
        psk=(暗号化された内容)
}

すると、暗号化されたpskの内容が出力されるので、/etc/wpa_supplicant/wpa_supplicant.confのpskの部分にコピーしましょう。scan_ssid=1を追記することをお忘れなく。

有線LANを抜き、再起動しましょう。
再起動後、無線LANのIPにリモートログインが出来ることを確認します。(SSHのポートは先ほど変更した任意の数値です)

この日の作業はここまで。

念のためこのあたりでWin32DiskImagerでmicroSDのイメージをコピーしておくことをお勧めします。

関連ページ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?