루트 로그인을 완전히 비활성화하는 방법

루트 로그인을 완전히 비활성화하는 방법

OVH에 오후 12시 10분경에 갑자기 오프라인 상태가 된 서버가 있습니다.

내 로그에 따르면 해커는 루트 사용자로 들어왔습니다. 그 사람이 내 비밀번호를 알고 있었을 수도 있다는 뜻이에요. 이 비밀번호는 이미 변경했는데 그 사람이 어떻게 들어왔는지 아직도 궁금하네요.

sshd_config에는 PermitRootLogin no일반적으로 SSH를 통해 들어갈 수 없다고 나와 있습니다. 따라서 루트로 직접 들어갈 수 있는 유일한 방법은 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)로 실행되는 cronjob은 계속 작동합니다.

내 서버에서 CentOS 7을 실행 중입니다(cronjob을 통해 업데이트가 설치됨).

미리 감사드립니다

제로엔

편집하다:

나는 루트 로그인이 예약되어야 한다고 생각했던 매 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

두 가지 옵션이 있습니다:

  1. 이전 답변에서 언급한 대로 /etc/securetty 파일을 사용하여 해결하세요.

  2. /etc/shadow에서 루트 비밀번호를 삭제하십시오. 이렇게 하면 누구도 루트로 로그인할 수 없게 되며 cron 작업과 sudo는 작동하게 됩니다.

두 번째 옵션은 Ubuntu 기본 구성에서 사용됩니다. 이는 도우미 대화 상자를 사용하여 루트 암호를 얻고 루트 권한을 얻은 KDE 1/2 시대의 이전 소프트웨어와의 호환성을 손상시키지 않기 때문입니다.

답변3

물리적 콘솔에서의 로그인은 파일을 통해 제어됩니다 /etc/securetty. 루트 사용자가 콘솔을 사용하여 로그인하는 것을 방지하려면 echo > /etc/securetty파일을 비우는 것과 같은 방법을 사용하십시오(먼저 백업을 생성하는 것이 좋습니다).

예를 들어 직렬 콘솔을 사용한 로그인과 같은 특정 경로만 닫으려면 해당 경로를 파일에서 제거하면 됩니다 /etc/securetty.

이 작업을 완료한 후에도 다음을 사용하여 로그인할 수 있습니다.SSH일반 사용자 계정을 만든 다음sudo루트가 되려면.

관련 정보