構築中に色々と知見があったので、まとめます。
PermitRootLogin
LinuxサーバでSSHを起動させた時に、 /etc/ssh/sshd_config
でこのパラメータをイジらない方はいないのではないでしょうか。
デフォルトでは次のようになっています。
#PermitRootLogin yes
これは、 rootユーザでのログインを許可 している状態です。
そのため、大抵の場合(かどうかは知りませんが)、手っ取り早く以下のような状態にしてしまうことが多いかと思います。
PermitRootLogin no
コメントアウトを解除し、パラメータをnoに設定しています。
これでrootユーザのログインは全て拒否したことになりますね。
しかしこの PermitRootLogin
。
yes/no 以外にも設定できるパラメータがあるのはご存知でしょうか。
without-password
「rootでログインしたいけど、パスワードのみの認証だと不安・・・。」
そういった場合に利用できるのが、without-password
です。
読んで字の如くですが、このパラメータを指定すると rootユーザのみパスワード認証を拒否することができます。
ではどうやって認証するのかというと、公開鍵認証を使うわけですね。
rootのパスワード認証を取りやめるだけでも不正アクセスをされるリスクがグンと下がると思います。
さて、これ以外にももう一つ、パラメータが存在します。
forced-commands-only
「rootユーザでログインはしないけどroot権限でサーバにアクセスするコマンドは使いたい」といった場合には、 without-password
より forced-commands-only
がオススメです。
これは パスワード認証不可で、rootユーザでの直接ログインもできませんが、root権限を利用したコマンドのみ受け付ける というものになります。
「rootユーザでは一切ログインしないけど、root権限でコマンドを使いたい。」
そういった場合に利用できます。
具体的には、
- rootユーザでしかアクセスできないファイルをscpでサーバにコピーしたい
- rsyncを使ってサーバ間で同期を取りたい
といった時でしょうか。
特に同期を取る場合ですが、root権限でないと参照できないファイルもあります。
「 /etc
配下の設定ファイルを全部同期したい!」
といった場合はroot権限が確実に必要となると思います。
勿論 without-password
だけでも全然OKです。
しかし、rootユーザで直接ログインする必要が一切ないのであれば、 forced-commands-only
にしておいた方が安全でしょう。
PermitRootLogin のまとめ
パラメータ | 説明 |
---|---|
yes | rootユーザのログインを許可 |
no | rootユーザのログインを拒否 |
without-password | パスワードを使用したrootユーザのログインを拒否 |
forced-commands-only | rootユーザの直接ログインを拒否するが、root権限を使うコマンドのアクセスは許可 |
本当は authorized_keys についても一緒にまとめたかったのですが、既にまとめてる方がいたので今回はこれだけにしました。
以上です。