インターネットに繋いだサーバーで最初にやらなければならない設定

rootで直接ログインできないように設定

LinuxやUnix系OSならrootユーザーが存在していることは明らか。

rootでsshできるなんて気持ち悪すぎなんです。

パスワード認証が許されていれば、総当たり攻撃(ブルートフォースアタック)の餌食になりますよ。

デフォルト設定では、ログインしやすいようにセキュリティの強度が下げてあります

ssh設定内容の確認

rootでのsshログインがどのように設定されているのか確認してみましょう。

su

設定ファイルを確認するためにはroot権限が必要です。

sshd -T | grep permitrootlogin

RHEL8やCentOS8の結果

RHEL8やCentOS8までのバージョンではこのように表示されると思います。

permitrootlogin yes

rootでのパスワード認証がデフォルトで許可されています。

DebianやUbuntu、RHEL9の結果

permitrootlogin prohibit-password

通常のパスワード認証は拒否されますが、公開鍵認証は許可されます。

rootによるsshログインを停止する設定

パスワード認証よりは安全、rootのsshを拒否することでより安全にします。

cd /etc/ssh

cpコマンドでsshd_configファイルをsshd_config.orgとしてバックアップします。

cp -p sshd_config sshd_config.org

viでsshd_configを編集します。

vi sshd_config

viのコマンドモード(escキーを押せばコマンドモード)で /PermitRootLogin でキーワード検索。

PermitRootLogin no

行頭の#を削除し「PermitRootLogin no」と書き換えます。

sudoできるユーザーを登録

今後は一般ユーザーでsshログインをして、管理者権限が必要な時はsudoします。

CentOSの場合は以下を参照してください。

usermodでsudoユーザーを登録

usermod -G sudo USER_NAME

ユーザーがsudoできるか確認

su - USER_NAME

rootから一般ユーザーになって、sudoします。

sudo -s

プロンプトが「#」に変われば管理者権限になったということです。

sshdの再起動

sshdを再起動すれば設定が反映されます。

service sshd restart

sshdプロセスの確認

再起動後はプロセスが起動しているか必ず確認しましょう。

ps aux | grep sshd

起動していれば以下のように表示されます。

root     2183431  0.0  0.2  12176  2912 ?        Ss   Dec19   0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root     2192372  0.0  0.8  13828  8740 ?        Ss   09:59   0:00 sshd: USER_ID [priv]
USER_ID  2192510  0.0  0.5  13972  5960 ?        S    10:00   0:00 sshd: USER_ID@pts/0

sshログインの確認

もう一つ重要なのがsshログインチェックです。

今ログインしているターミナルはそのままの状態にして、別のターミナル起動してログイン確認をします。

  1. rootログインが無効化されている
  2. 一般ユーザーでログイン
  3. sudoで管理者権限になれるか

意図した設定になっているか必ず確認してください。

次に行うべき設定

rootのログインをできなくした後は、sshログインできるIPアドレスを絞ります。

関連記事

コメント

この記事へのコメントはありません。

おすすめ記事

  1. 【多段SSH】公開鍵認証で中継サーバー経由のログインが簡単!

  2. インターネットに繋いだサーバーで最初にやらなければならない設定

  3. Swapアウトしているプロセスを特定する方法

  4. Linuxを極めるならコマンドよりも〇〇が先だ!!

  5. お名前ドットコムのDNS設定方法