恐らくKUSANAGIを導入した多くの初心者はrootでログインし作業しているのではないかと思います。
しかしrootログインを許可するのはセキュリティ上の問題があり、禁止するのが一般的です。
……という話を聞いて、設定変更してみたところ、
rootでログインできるじゃん!
ちゃんと書いてる通り設定したのに!
もしかしたらそんなオチが待っている人がいるかも。
あるいはrootログインできるままなのに気づかなかったりとか。
本稿ではKUSANAGIのrootログイン変更の方法について、そういう方まで含めて説明します。
もちろん私の環境だけかもしれないことは予め断っておきます。
次項だけで設定できるなら、それに越したことはありません。
nginxにおけるrootログイン禁止の一般的な方法
次のファイルを編集します。
/etc/ssh/sshd_config
viコマンドで開くか、FTPクライアントでファイルを直接開きます。
次の記述を探します。
PermitRootLogin yes
noに書き換えます。
PermitRootLogin no
sshdを再起動します。
# service sshd restart
rootログインできなくなっているはずです。
パスワードと鍵の両方でテストしてみてください。
公式でも同じ説明しているくらいですので、この方法でできるサーバーは多いと思われます。
一般的な方法でできない場合もある
ところが先の方法でrootログインを禁止できない場合もあります。
ConoHa VPSの場合、sshd_configを開くとPermitRootLoginは以下の記述になっています。
(私の環境によるものかもしれないことは断っておきます)
#PermitRootLogin prohibit-password
「rootのパスワードログインを禁止する」という意味です。
なぜかコメントアウトされています。
多分、次の設定がされているからかな?
PasswordAuthentication no
「誰であろうとパスワードログインを禁止する」という意味です。
もちろんrootも含みますから先の設定は意味を持ちません。
そのためコメントアウトされているのかも?
ただrootの鍵ログインは許すわけですから、完全に禁止しておきたい。
コメントアウトを外して書き換えればいいのかな?
今度はviコマンドで編集する場合を記します。
#vi /etc/ssh/sshd_config #PermitRootLogin prohibit-password ↓ PermitRootLogin no :wq # service sshd restart
ところが、
rootログインできちゃうじゃん!
確かにパスワードではログインできないけど!
何も変わってなかったりします。
sshd_configの記述は元に戻しておいてください
rootログインを禁止できない原因と対処法
実はなのですが、
ConoHa VPSの場合、他の場所にも設定ファイルがあるんです……
セキュリティに関わる部分なので曖昧な表現で書きます。
恐らくそれでもわかるはずです。
FTPクライアントで次のフォルダを開いてみてください。
/etc/ssh/sshd_config.d
いくつかの.confファイルがあるはずです。
片っ端から開くと、どれかのファイルのどこかに次の記述がされているはずです。
PermitRootLogin yes
コメントアウトされていません。
noに書き換えて保存してからsshdを再起動します。
PermitRootLogin no
↓
# service sshd restart
テストしてみてください。
パスワードでも鍵でもrootログインできなくなっているはずです。
まとめ
KUSANAGIの場合、こういうトラブルは割とあります。
今回はPermitRootLoginそのものがコメントアウトされてるのに違和感がありました。
途中で「?」を重ねた通り。
やっぱり普通はyesかnoかを設定しないか?と。
素人感覚で探してみたところ見つかったわけです。
困ったら同じフォルダかその下のフォルダのファイルを片っ端から開いてみること。
結構、それで見つかったりします。
原始的な方法だとは思うけどさ
著者はエンジニアとして飯食ってるわけじゃないので……
プロならきっとうまく探すんでしょうね
お疲れ様でした