電波ビーチ

☆(ゝω・)v

Raspberry Pi Imagerはえらい

www.raspberrypi.com

version1.7.1を使った。設定がとてもえらい。SSHwifi接続の設定が最初から組み込めるため、電源につなげてネットワークにつながったらSSHすりゃすぐに使える。キーボードやマウスやディスプレイをいちいち準備する必要なくなった。もちろんこれまでもそういうふうにやれないことはなかったが公式が用意してくれたのでたいへんに助かる。OSを落としておく必要もなく、microSDをフォーマットしておく手間もない。初回のユーザーを pi から変更できる。えらいぞRaspberry Pi Imageer。 RaspberryPiOS64bitをいれたよ

pc.watch.impress.co.jp

起動したあとやったこと

ユーザー設定

上記で初回ユーザー変えられるとか書いてるのにデフォルトのpiのままさくせいしたバカタレなのでまずユーザーをなんとかします。

参考 -> raspberry piでお手軽自家サーバー webサーバー編 #セキュリティ対策

  • rootに切り替え
  • ユーザー追加
  • sudo付与
$ sudo passwd root
$ sudo adduser [ユーザー名] (このあとパスワード入力とかユーザー情報とかある)
$ sudo gpasswd -a [ユーザー名] sudo

このあとrebootして、今しがた作ったユーザーにsshでログインした。piを消そうと思ったけど、piが使ってるプロセスが無限に生き残る。

$ sudo userdel -r pi
userdel: user pi is currently used by process 656

何度殺しても別のプロセスが再度立ち上がるし-KILLオプションつけても全部殺せない。

$ who
pi       tty7         2022-02-09 14:35 (:0)
pi       tty1         2022-02-09 14:35
newuser pts/0        2022-02-09 14:39 (192.168.8.xxx)

piによるプロセスをgrepしてPIDを取得して決め打ちして殺す様子

$ ps aux | grep pi
(プロセスのリストが表示される。PIDを取得してkill)
$ sudo kill 556
$ sudo userdel -r pi
userdel: user pi is currently used by process 634(なんかまだ生きてる)
$ sudo kill -KILL 634
$ sudo userdel -r pi
userdel: user pi is currently used by process 721(なんかまた出来た)

結局、raspi-configから System Options -> Boot / Auto Login -> Console を選んでから再起動し、再度whoで表示するとpiがいなくなっていたので、これでuserdelが成功した。

f:id:or3:20220209153012p:plain
raspi-configのSystem Options

sshd設定

  • rootに直接ログイン禁止
  • SSHポート番号変更

書き忘れていたが、今回はSSH使うものの諸事情により公開鍵ではなくパスワード認証にてログインすることにしている。

参考 -> SSH接続の設定変更方法

/etc/ssh/sshd.configを編集する。とくに書くことはない

編集おわったらsshdを再起動する。なんやかんや言われるが初回だけな気がする

$ service sshd restart
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'ssh.service'.
Authenticating as: ,,, (ユーザー名)
Password:
==== AUTHENTICATION COMPLETE ===

ufwの導入

参考 -> iptablesが難しいためufwでWEBサーバーのファイアウォール設定

* 上記URLでは#特定のネットワークからのssh接続のみ許可までやっているが、今回の場合はどのネットワークから使うか未定なのでやってない

ssh接続のポート番号はさっき変更したのでそれを指定する。以下ではxxxxとしている。ついでに80番も開けている

$  sudo apt install ufw
$  sudo ufw allow xxxx
Rules updated
Rules updated (v6)
$  sudo ufw allow 80
Rules updated
Rules updated (v6)
$  sudo ufw reload
Firewall not enabled (skipping reload)
$  sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? Y
Firewall is active and enabled on system startup
$  systemctl status ufw
● ufw.service - Uncomplicated firewall
     Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:ufw(8)
$ systemctl restart ufw
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'ufw.service'.
Authenticating as: ,,, (ユーザー名)
Password:
==== AUTHENTICATION COMPLETE ===
$ systemctl status ufw
● ufw.service - Uncomplicated firewall
     Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2022-02-09 16:12:29 JST; 16s ago
       Docs: man:ufw(8)
    Process: 2174 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/SUCCESS)
   Main PID: 2174 (code=exited, status=0/SUCCESS)
        CPU: 23ms

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
80                         ALLOW       Anywhere
xxxx                       ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
xxxx (v6)                  ALLOW       Anywhere (v6)

一番下ではsshのデフォルトのポート番号22が有効になっていることがわかる。こいつを不許可にしてみる

$ sudo ufw deny 22
Rule updated
Rule updated (v6)
$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         DENY        Anywhere
80                         ALLOW       Anywhere
xxxx                       ALLOW       Anywhere
22 (v6)                    DENY        Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
xxxx (v6)                  ALLOW       Anywhere (v6)

実はuifwを使うのは初めてだったりする。こういう表示になっている場合、ちゃんと入れるのかどうか確かめてみよう。一度exitして、再度ログインを試みる

$ exit
logout
Connection to 192.168.8.xxx closed.

ssh ユーザー名@192.168.8.xxx
ssh: connect to host 192.168.8.203 port 22: Connection timed out

ちゃんとはじかれる。ではさきほど設定したポート番号を指定してログインしてみる

ssh -p xxxx ユーザー名@192.168.8.xxx
ユーザー名@192.168.8.xxx's password:
Linux ホスト名 5.15.21-v8+ #1523 SMP PREEMPT Mon Feb 7 18:36:51 GMT 2022 aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Feb  9 16:17:46 2022 from 192.168.8.170
ユーザー名@192.168.8.xxx:~ $

うまく入れたようだ。

続き

なにしようかな