SSHでrootログインを禁止する意味ってあるの?

セキュリティの専門家でも何でもない素人の私見ですので、
あまり真に受けないでください

たとえばWordPressいじりを発展させてVPSを借りてみようーとか、手のひらサイズPC面白そうだなーRaspberry Pi触ってみようかなーとか思うと、Linuxというものに触れることになると思います。

それでネットでいろいろ入門記事を読み漁ると、SSHというものを使ってログインをし作業を行う手順が出てくるのですが、そのときに

  • ログインにはパスワードを使わず、公開鍵認証を使うべし
  • rootユーザでのログインは行わず、suコマンドやsudoコマンドを使うべし

という掟があります。

この2つ目の掟、「rootユーザでのログインは行わず、suコマンドやsudoコマンドを使うべし」は果たして本当にそうなのか?ということを考えてみました。

rootユーザというのは全権限を持った強力なユーザで、このユーザを乗っ取られてしまうとそのシステムに対しての全権を渡したことになってしまいます。WindowsではAdministrator権限に相当するものですね。それを明け渡さないために上記のような対策を講じるというところまではまあわかります。

また、そもそもパスワードでのログインを使わず公開鍵認証を行う、というのも理解できます。パスワードを使わずにどうやってログインするのっていうのについてはググってください。簡単に言うと「鍵(複雑)のペアを作って片方をサーバに預ける。鍵の複製はできない(困難)けど、その鍵が本物かどうかはサーバ側で検証できる」という感じです(という説明が正しいかの自信はない)。

この公開鍵認証は鍵の複製はできない(困難)というところが拠り所になっています。そこで、

rootユーザもパスワードでのログインを禁止して、公開鍵認証のみのログインとして、その鍵を適切に管理・運用さえしていれば問題になることはないのでは?

と思うのです。

そもそも、攻撃者側がどれほどそのシステムに侵入したいのか、というのもあると思います。セキュリティに完璧はないわけで、もし攻撃者がどうしてもそのシステムに侵入して入手したい情報があるのであれば、rootログインを防いでいようが何しようが、きっと突破していくんだと思います。それに対して個人の、大した情報もないシステムであれば、(踏み台にされるリスクは多少あるものの)果たしてそこまでの対策が必要なのでしょうか。

ということで書き連ねていきましたが、やっぱり怒られそうですね。僕自身何も責任を取れないので、もしご自身でシステムを管理することがあるようであればちゃんとお調べになって、ご自身の責任で行ってください。