ルートログインを完全に無効にする方法

ルートログインを完全に無効にする方法

OVH にサーバーがあるのですが、午後 12 時 10 分頃に突然オフラインになりました。

私のログによると、ハッカーはルートユーザーで侵入しました。つまり、彼はおそらく私のパスワードを入手したということです。私はすでにこのパスワードを変更しましたが、彼がどうやって侵入したのかまだわかりません。

sshd_config にはPermitRootLogin no、通常は SSH 経由ではログインできないと書かれています。そのため、root として直接ログインする唯一の方法は KVM 経由であり、それにアクセスできるのは私だけです。

これはダウンしたときのログです。再起動するだけで解決できました。しかし、この前のログを見ると、誰かがルートとして数回ログインしています。そして、それは私ではないことはほぼ確実です。また、同じログには、誰かがルートとしてログインしていることが続いています。

Jun 11 12:10:01 vps115965 systemd: Starting Session c3450 of user root.
Jun 11 12:10:01 vps115965 systemd: Started Session c3450 of user root.
Jun 11 21:31:02 vps115965 xinetd[2703]: START: gopher pid=22775 from=::ffff:46.182.107.117

質問です。ルートログインを完全に無効にするにはどうすればいいでしょうか。ここでは物理的なログインのみを意味します。ルートおよび sudo (および sudo -i) として実行される cronjobs は引き続き動作するはずです。

私のサーバーは CentOS 7 を実行しています (アップデートは cronjobs 経由でインストールされます)

よろしくお願いします

ジェローン

編集:

ルートログインが 10 分ごとに実行されていることを発見しました。これはスケジュール設定する必要があると思いました。そこで crontab を調べたところ、spamassassin がこれを実行していることがわかりました。私はこれをもう使用していないので (スパムフィルタリングには Norton IS を使用しています)、削除することにしました。

ハッキングされたという証拠がもうないので、ただ運が悪かっただけだと思います(カーネルパニックかもしれません)。

しかし、物理的なルートログインを無効にする方法についてはまだ質問があります。

答え1

これの説明を見るとわかりますが、passwd -l rootここから使用できます。man passwd

   -l     This  option  is used to lock the specified account and it is available to root only. The locking is performed by rendering the encrypted pass-
          word into an invalid string (by prefixing the encrypted string with an !).

答え2

2 つのオプションがあります:

  1. 前の回答で述べたように、/etc/securetty ファイルに対処します。

  2. /etc/shadow から root パスワードを削除します。これにより、誰も root としてログインできなくなりますが、cron ジョブと sudo は機能します。

2 番目のオプションは、ヘルパー ダイアログを使用してルート パスワードを取得し、ルート権限を取得する KDE 1/2 時代の古いソフトウェアとの互換性を損なわないため、Ubuntu のデフォルト設定で使用されます。

答え3

物理コンソールのログインは/etc/securettyファイルによって制御されます。root ユーザーがどのコンソールを使用してもログインできないようにするには、echo > /etc/securettyファイルを空にするなどの方法を使用します (最初にバックアップを作成することをお勧めします)。

シリアル コンソールを使用したログインなど、特定のパスだけを閉じたい場合は、/etc/securettyファイルからこれらのパスを削除するだけです。

これを実行した後でも、ssh通常のユーザーアカウントを作成してから須藤ルートになる。

関連情報