ラズパイの最低限セキュリティ・セッティング~ ラズベリーパイ研究室

Raspberry Pi は学習用のコンピューターとして開発されているため、煩雑な初期設定をしなくとも誰でもすぐに利用できるように作られています。このため、若干セキュリティ的に脆弱な面もあり、きちんと設定を行っておかないと問題があるケースもあります。

そこでこのページでは、Raspberry Pi を初めて起動したら最低限しておきたいことを纏めました。付帯情報も書いたので少し長めに見えますが、すること自体はほんの僅かなので 10 分もあれば終わるでしょう。

ラズパイの最低限セキュリティ・セッティング

 Raspberry Pi を初めて起動したら、最低限しておきたいことを纏めました。付帯情報も書いたので少し長めに見えますが、すること自体はほんの僅かなので 10 分もあれば終わるでしょう。

root パスワードの設定

 Linux では、root ユーザーは全ての操作ができる最高権限のユーザーです。このユーザーでログインされるとそのラズパイでできることは全てできてしまうので、そういうことがないように、まず強固なパスワードを設定してしまいましょう。

sudo passwd root

パスワードが 2 回聞かれます。パスワードが一致すれば変更完了です。入力したパスワードは忘れないようにしましょう。

 pi ユーザーでログインした後、一時的に root ユーザーに切り替えるには

su -

として、パスワードを入力します。この場合、ホームディレクトリが /root になることを留意して下さい。ホームディレクトリや設定を pi ユーザーのもののままにしたい場合は単に su で切り替えます。

pi ユーザーに戻る場合は

exit

です。

Raspberry Pi のアップデート

sudo apt-get update

 apt は Debian 用に開発されたパッケージ管理システムで、アプリケーションの管理を行ってくれます。

 apt-get update を行うと、リポジトリ(ソースコード等の情報が保管されているデータベース)からパッケージインデックスファイルを取得し、お使いの OS と再同期します。apt-get update の後で apt-get install を行うと、最適なパッケージが取得できるようになります。

 なお、apt-get upgrade というコマンドを実行すると、先程取得したインデックスに従ってお使いのラズパイにインストールされている全てのパッケージを最新版にアップグレードします。これはかなりの時間がかかります。必要な場合のみ行って下さい。

 あとは、Raspberry Pi のファームウェアの更新です。ファームウェアを更新したら 再起動 が必要です。

sudo rpi-update

Vim のインストール

 Raspberry Pi ではテキストファイルを編集することが頻繁にありますので、テキストエディタを入れておきます。標準でも入って入るのですが、vim-tiny という最小構成のエディタなので、かなり使いづらいと感じるでしょう。

sudo apt-get -y install vim

 これで、正規版の Vim が入ります。これ以降の設定では多少のファイルの編集が必要になりますので、Vim の簡単な使い方として 設定ファイルの編集方法 を適宜参照して下さい。

 ※なお、Emacs 派の方は勿論、Emacs をお使い下さい。

SSH と IP アドレスの固定について

 最新の Raspbian(RASPBIAN JESSIE WITH PIXEL Version:November 2016 Release date:2016-11-25)では、デフォルトで SSH が無効になりました。

 これまでの Raspbian では初回起動直後から SSH が有効であり、デフォルトユーザー pi、デフォルトパスワード raspberry で固定であったためセキュリティ的には穴だらけで、コンピュータに詳しくない人はそのまま運用するなど、かなり危険な状態でした。

 今回の Raspbian の仕様変更はそうした背景を考慮しての苦渋の決断だったと聞いています。

 さて、前置きが長くなりましたが、だからといって SSH 自体はとても便利な機能であり、使わない手はありません。特に Raspberry Pi は超小型、省電力でサーバーとしても利用できるため、場所をとらず、本棚の隅でひっそりと常時可動させるなどの用途に特に向いています。実際、普通のサーバー用途の場合、常時可動でも月の電気代は50円程度です。

 こうした場合、ちょっと設定をいじるためにモニタやキーボードを接続するのは無駄なので、ネットワーク経由で他のパソコンから操作出来たほうが断然便利ですから、やはり、SSH は利用したいでしょう。

 SSH で接続できるようにするには、まず、DHCP サーバーが勝手に IP アドレスを変えてしまわないように Raspberry Pi の IP アドレスを固定します。

IP アドレスの固定

sudo vi /etc/dhcpcd.conf

で設定ファイルを開き、

有線 LAN 接続の場合

interface eth0
static ip_address=192.168.**.**/32
static routers=192.168.**.1
static domain_name_servers=192.168.**.1

無線 LAN 接続の場合

interface wlan0
static ip_address=192.168.**.**/32
static routers=192.168.**.1
static domain_name_servers=192.168.**.1

を、/etc/dhcpcd.conf の末尾に追加します。** のあたりはお使いの環境に合わせて下さい。

「static ip_address=192.168.**.**/32」が、固定する IP アドレス、「static routers=192.168.**.**」「static domain_name_servers=192.168.**.**」が、ルーターと DNS サーバーの IP アドレスです。

 これに加え、無線 LAN を利用する場合は

sudo sh -c 'wpa_passphrase SSID パスフレーズ >> /etc/wpa_supplicant/wpa_supplicant.conf'

を実行して下さい。SSID とパスフレーズは通常、お使いの無線 LAN 親機の本体に記載されているはずです。上記を実行した後、

sudo cat /etc/wpa_supplicant/wpa_supplicant.conf

で、無線 LAN 接続設定ファイルを開き、

#psk="*************"

の行を削除して下さい。

 この行は先程入力したパスフレーズの平文ですので、セキュリティホールになります。# はコメントとなっているため、この行自体をまるごと削除しても何も問題ありません。実際に利用されるパスフレーズは、その下の psk= の行です。

設定が終わったら再起動して下さい。IP アドレスが固定されます。

sudo reboot

SSH 接続用の鍵ファイル作成

 ここでは、SSH を安全に利用するための方法を記します。

 まず、SSH 接続で使う鍵ファイルを作成します。

cd ~

で、ユーザーのホームディレクトリに移動した後、

ssh-keygen -t rsa

を実行して下さい。以下のようなメッセージが表示されます。鍵ファイルを作成する場所を聞かれているだけなので、特に問題がなければエンターを押すだけで構いません。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):

 この後、2回パスフレーズの入力が求められるので適当なパスフレーズを入力して下さい。このフレーズ自体はそれほど強固でなくても構いません。(このフレーズは忘れないでください)。

 これで、/home/pi/.ssh/ ディレクトリに id_rsa(秘密鍵) と、 id_rsa.pub(公開鍵)が作成されます。

 次は、作成された公開鍵を pi ユーザーの公開鍵として登録します。

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

 一方、秘密鍵(/home/pi/.ssh/id_rsa)の方は外部から Raspberry Pi にアクセスする際に利用するので、他のパソコンや USB メモリ等にコピーして下さい。この鍵はとても大切なので、絶対に第三者に漏れる事がないようにしてください。

 あとは、念のため今までのファイルのアクセス権を pi ユーザーのみ読み書き出来るようにしておきます。

chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub

sshd の設定

 鍵ファイルが作成できたら、あとは SSH サーバーの設定の変更です。

sudo vi /etc/ssh/sshd_config

で、設定ファイルを開いて 4 箇所書き換えます。なお、Vim では / をタイプしてから検索したい文字列を入力してエンターを押すことで、任意の文字検索が出来ますので利用して下さい。

ポート番号の変更

 通常、不正アクセスを試そうとする人は SSH が動作しているか確認するため、デフォルトポートである 22 番をスキャンします。ここが開いていない場合、殆どの人は諦めて次のサーバーを探します。ですから、SSH で使うポート番号を変えてしまうのが最も手っ取り早いセキュリティ対策です。49152~65535 あたりで好きなポート番号を選んで設定して下さい。(ここで記したので、51327以外が良いでしょう)

# What ports, IPs and protocols we listen for
#Port 22 ← #でコメントアウト
Port 51327

管理者権限での SSH ログインの禁止。必要であれば pi ユーザーでログインしてから管理者権限になります

#PermitRootLogin without-password ← #でコメントアウト
PermitRootLogin no

平文パスワードでのログイン禁止。必ず秘密鍵が必要です。

#PasswordAuthentication yes ← #でコメントアウト
PasswordAuthentication no

空のパスワードでのログイン禁止。上記で秘密鍵が必ず必要になっていますが、一応、空パスワードでのログインも明示的に禁止します

PermitEmptyPasswords no

 上記設定が終わったら設定内容を Systemd に反映します。

sudo systemctl daemon-reload

 次のコマンドを実行すると、SSH サーバーの自動起動が設定され、Raspberry Pi が起動すると自動で SSH が起動します。

sudo systemctl enable ssh

 次のコマンドでSSH サーバーを再起動します。SSH サーバーの停止は stop、再起動は restart に読み替えて下さい。

sudo systemctl start ssh

 これで再起動したら、外部のパソコンから、ID とパスワードのみではログインできないこと、id_rsa 秘密鍵のみで SSH 接続出来ること等を確認して下さい。

補足

 以前の Raspbian では sudo service sshd restart で sshd を再起動できましたが、2016-11-25-raspbian-jessie からは systemctl コマンド必須に切り替わりました。これは、Debian Jessie からシステム管理が Systemd に変更されたためです。

 これまでは暫定的にそれ以前のコマンドもサポートされていましたが、順次、Systemd の作法に則った操作方法に切り替わっているようです。

 init.d なども、将来的には廃止されるでしょう。


ご購入

もう少々お待ち下さい。

体験版

version 1.5 から、IPアドレス制限が無くなり、ライセンス制になりました。ライセンスされていない場合、起動後30時間後に自動的に HAL を終了します。

体験版のインストーラー・スクリプトをダウンロード インストーラー・スクリプト
SHA-1: dd2a390b4f0f8c15301eaee23cd92bd5e831da91
※インストール方法については ソケットサーバー「HAL」の概要 (version 2.0対応版)~導入方法 を御覧ください。

体験版パッケージ
HAL_trial_2_0.tar.gz | version 2.0 | SHA-1: ce31802a5b423a9b0d73721a3d43e0585b009a6f
試用期限 2017/1/31 まで

この記事へのコメント

※現在コメントはMarkdown記法が強制です。>>Markdown の書き方


この記事に返信

このコメントに返信