プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

セキュリティのためにラズパイで最低限やっておく設定まとめ


ラズパイは便利なIOTツールの一つですが、あまり知識がなくても使えてしまうため、悪意ある輩が狙ってくるとかいないとか…。
そこで、↓を参考に最低限の対策として、デフォルトのユーザー名 "pi"から離脱する方法を中心に、とくに躓きやすい点を重点的にまとめました。
qiita.com

まず、新しいIDを作ります。これはなるべく長いほうがいいのは基本です。変更しても ”a”みたいにしていてはほぼ同じです。
以下個別のユーザー名はxxxと表記します。

$ sudo /usr/sbin/useradd --groups sudo -m xxx

続いてパスワードを設定します。

$ sudo passwd xxx

rootのパスワードも変更します。

$ sudo passwd root

rootはロックします。rootを直接loginできなくしておくことです。

$ sudo passwd -l root

上でrootのパスワードを変更した上で、ロックすることでより強固にしていますが、そもそもパスワードを変更(設定)しなければログインできないのでそれがもっとも強固であるという話です。アクティベートしてしまっているならロックしておきます。

「sudo passwd root」はしてはいけません。
少しの知識を手に「/etc/shadow」を見れば分かるのですが、rootのパスワードは「*」、つまりパスワードを設定するまでログイン不可になっていました。
これはつまり、パスワードを設定しなければrootでログインされる心配はないということ。
逆説的に言えば、「passwd root」してしまうとrootでログイン出来るようになってしまいます(rootでの作業が必要な時はsudoを使うべきであって、rootでログインしない)
ちなみにUbuntuでは「!(アカウントロック)」になっています。Raspbianでも同じようにロックしたければ「sudo passwd -l root」でロック出来ます。
ロックやログイン不可状態でもsudoの動作には関係ないので、rootのパスワードは変えない方が安全というか、変えるべきではありません。

jyn.jp

すでにpiユーザーを利用しているなら、pi ユーザーのデータファイルをコピー…することもできますが、この方法でコピーすると所有権がrootになってしまうので、その後新規ユーザーで変更ができなくなってしまいました。

$ sudo cp -r /home/pi/* /home/xxx


新規ユーザーでログインしてファイルを確認した様子。すべて所有権がrootになっています(所有権の変更が必要になる)。
結局、sudoですべて削除して、Windowsからuploadし直しました。

$ sudo rm -f xxx

これも、すでにpiユーザーで利用していたなら。pipするList (pythonのライブラリ一覧)を取得しておきます。メモ帳にでもコピーしておくか、テキストファイルに書き出して新規ユーザーのディレクトリにコピーしておきます。

$ pip3 freeze
or
$ pip freeze (python2系)

または

$ pip3 freeze > requirements.txt

で出力。

ここまですんだら、新しいユーザーにLoginします。

SHターミナル
なぜかSHモードになっている。いつものBashに変更する。

$ sudo chsh -s /bin/bash xxx

(この状態をSHモードであるということにたどり着くまで大変でした。ラズパイのターミナルが似ているけどいつものじゃない…)
再起動または再ログインで有効になります。
raspberrypi.stackexchange.com

sudoユーザーグループに追加する(sudoコマンドがpassword入力なしで実行できるように)

$ sudo gpasswd -a xxx sudo

新しいアカウントにrequirements.txtをコピーし、

$ pip3 install -r requirements.txt

で一括インストールできます。


バックアップしておくべきファイルをバックアップしたらpiユーザーを削除します。

$ sudo userdel -r pi

削除できないErrorが発生したときは、Auto Loginをオフに。

$ sudo raspi-config
>System option
>Boot Auto Login
>Consple
# 2021/10/31 更新

Raspberry piでpiユーザーを消す時に(user pi is currently used by process )が出たときの対処法 - sk7zの備忘録

削除できたととを確認するには 「ユーザーの一覧」を見るという方法があります。

$ nano /etc/passwd

kazmax.zpp.jp

ユーザーグループを追加します。

$ sudo usermod -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio xxx

最後にポート番号を変更します。
ssh configを開いて、

$ sudo nano /etc/ssh/sshd_config

以下のようなポート番号がコメントアウトされているところを変更します。

#Port 22 

65535以下の数字を好きに選び、アンコメントします。
(この設定ファイルは初期値ではすべてコメントアウトされているので白紙と同じですよね)

Port 12345

SSHを再起動します。

$ sudo /etc/init.d/ssh restart

次回Loginからは新しいPort番号でアクセスします。

不正アクセスされてないか?

直近のログイン履歴を確認します。

$ last

***** pts/0        ***.**.***.253    Mon Mar 11 20:59   still logged in
***** pts/1        ***.**.***.253    Fri Mar  8 22:06 - 22:06  (00:00)
***** pts/0        ***.**.***.253    Fri Mar  8 21:26 - 22:06  (00:40)
***** pts/1        ***.**.***.253    Mon Mar  4 22:43 - 23:10  (00:26)
*****       pts/0        ***.**.***.253    Mon Mar  4 22:39 - 22:51  (00:11)
*****       tty7         :0               Mon Mar  4 22:38    gone - no logout
reboot   system boot  4.14.34-v7+      Thu Jan  1 09:00   still running
*****       pts/2        ***.**.***.253    Mon Mar  4 22:34 - 22:38  (00:03)
***** pts/1        ***.**.***.253    Mon Mar  4 22:34 - 22:37  (00:02)
***** pts/0        ***.**.***.253    Mon Mar  4 20:55 - 22:34  (01:39)
***** pts/2        ***.**.***.253    Sun Mar  3 19:43 - 19:52  (00:09)
*****       pts/1        ***.**.***.253    Sun Mar  3 18:32 - 19:46  (01:13)
***** pts/0        ***.**.***.253    Sun Mar  3 17:59 - 19:43  (01:43)
*****       tty7         :0               Sun Mar  3 17:59 - down  (1+04:38)
reboot   system boot  4.14.34-v7+      Thu Jan  1 09:00 - 22:38 (17959+13:38)
*****       pts/2        ***.**.***.253    Sun Mar  3 17:21 - 17:58  (00:37)
*****       pts/1        ***.**.***.253    Sun Mar  3 17:03 - 17:21  (00:18)
***** pts/0        ***.**.***.253    Sun Mar  3 17:01 - 17:58  (00:56)
*****       tty7         :0               Sun Mar  3 17:01 - 17:58  (00:57)
reboot   system boot  4.14.34-v7+      Thu Jan  1 09:00 - 17:58 (17958+08:58)
***** pts/0        ***.**.***.253    Sun Mar  3 16:43 - 17:01  (00:17)
*****       pts/1        ***.**.***.253    Sat Mar  2 16:38 - 16:38  (00:00)
***** pts/0        ***.**.***.253    Sat Mar  2 16:14 - 16:39  (00:25)

takuya-1st.hatenablog.jp

ログイン失敗の履歴も見れます。

$ sudo last -f /var/log/btmp

***** ssh:notty    ***.**.***.253    Sun Mar  3 16:43    gone - no logout
***** ssh:notty    ***.**.***.253    Sun Mar  3 16:43 - 16:43  (00:00)

自分でパスワードを間違えた分しか出てきませんでした。
qiita.com

まとめ

最低限のセキュリティ対策として、ユーザー名を変更する方法をまとめました。
SSH Loginすると、前回のLogin日時が表示されます。変なLoginがないことは確認しておきましょう。(変なことあったことないけど…)

どこかで、"pi" も結構狙われる、という記事も見たんだけど、adminとかrootがとくに狙われやすいみたいです。
qiita.com