はじめに
sudoとはrootでない一般ユーザーがsu commandを実行しなくても1 commandだけroot権限で実行できる便利なcommandです。
しかし危険です。理由を説明してsudoを無効にする方法。sudoを無効にした場合代替オペレーションを解説します。
sudoの挙動について理解し、範囲を限定して設定している方には『釈迦に説法』なので読み飛ばしてください。
- RasPi, NanoPiのような一般にrootが一人しかいないSystem
- Linuxマシンを管理するのが初めてで、入門書に書いてあることを意味も分からずに使っている
- Securityの事は他の本に任せて、とりあえず流行のRasPi入門書で「食いつきがいい」物を書いた作者
が読むことを念頭に書きました。
2段階認証方式
Loginにはpasswordが必要です。sshできるLinuxマシンはpasswd一枚で外界から保護されてます。でもpasswdはとっても脆弱です。どんなpasswdを設定しようと現代の技術をもってすれば必ずクラックされます。
しかし2段階認証ではどうでしょう。passwdをクラックしてから実際にログインして、もう一度別のパスワードでsuしなければいけない認証です。
建物の入り口のカギを開け、更に制御室の入り口にもドアがあって別の鍵がかかっている状態を想像するとわかりやすいと思います。
root loginを禁止する
security確保するため大抵は外部からrootがssh loginできないように設定します。
/etc/ssh/sshd_config:
PermitRootLogin no
の設定がそれです。
ドア一枚に戻す
よくできたシステムですね。でも考えてもて下さい、sudoを実行するときrootのpasswdは必要ですか?要りませんね。
/etc/sudoers.d/*
/etc/sudoers
に書いてあるuserはpasswdなしにsudoを実行できます。
2重だった入り口のドアを1枚はずしてしまったのと同じです。sudoersの設定は、PermitRootLogin yesにしておくのと同程度、systemを弱くしてしまいます。
安全対策
2重ドアに戻すのは簡単です。sudoersに一人もユーザーを設定しなければよいのです。
そんなことしたら
「マシン管理ができない!」
悲鳴が聞こえそうですね。
私がunixを覚えたころ、sudoはありませんでした。sudoは後からできた危険極まりない悪commandで、なくてもsystem管理には何ら支障はありません。
sudoをはずす手段
まずroot passwdを変えます。sudoだけ使っていればroot passwdを知らないってこともあるのではないでしょうか?
sudo passwd root
sudo最後のお仕事です。まさか"1234"なんて設定しませんよね。しっかり8文字以上英文字記号数字の混じったのをお願いします。金庫の鍵なんです。
su
cd /etc/sudoers.d
rm *
マシン管理の代替オペレーション
今既にやりました。
su
Password: <root_pass>
と、rootになる必要があるときだけrootになればよいのです。
その他のトラップ
マシンの初期設定は簡単に塞げる危険な罠があります。
- pi, demo, guest, test, nanoといった簡単に推測できるuserは消した方が良いです。
- ftp, sshdのような存在は必要だが、loginしないuserは
su
vipw
ftp:x:1005:1005:,,,:/home/ftp:/bin/false
のようにlogin shellを/bin/falseに設定します。
終わりに
流行の小さなSBCでも、あまり流行ってない小さな小さなSBCでも、ネットに繋いだらクラッカーはやってきます。
小さいから対策も小さくて済む『わけがない!』のです。しっかり対策してください。
Raspberry Pi入門本を見て驚きました。
どれもがpiでloginしてsudoで設定をしているのです。
最初にすべきはたとえわからなくたって
sudo passwd root
su
adduser your_name
deluser pi
です。
そのままネットワークにつなげられるデバイスです。
ネットワークセキュリティを考えて著作していただきたい。
初心者は書いてある通りに操作するのです。