웹사이트 검색

Linux에서 루트 계정을 비활성화하는 4가지 방법


루트 계정은 Linux 및 기타 Unix 계열 운영 체제의 최종 계정입니다. 이 계정은 전체 읽기, 쓰기 및 실행 권한을 가지고 시스템의 모든 명령과 파일에 액세스할 수 있습니다. 시스템에서 모든 종류의 작업을 수행하는 데 사용됩니다. 다른 사용자의 계정 생성/업데이트/액세스/삭제, 소프트웨어 패키지 설치/제거/업그레이드 등이 가능합니다.

루트 사용자는 절대적인 권한을 갖고 있으므로 해당 사용자가 수행하는 모든 작업은 시스템에 매우 중요합니다. 이와 관련하여 루트 사용자의 오류는 시스템의 정상적인 작동에 큰 영향을 미칠 수 있습니다. 또한 이 계정은 우발적, 악의적 또는 인위적인 정책 무시를 통해 부적절하거나 부적절하게 사용되어 악용될 수도 있습니다.

따라서 Linux 서버에서 루트 액세스를 비활성화하는 것이 좋습니다. 대신 서버에서 중요한 작업을 수행하기 위해 sudo 명령을 사용하여 루트 사용자 권한을 얻도록 구성해야 하는 관리 계정을 생성하는 것이 좋습니다.

이 기사에서는 Linux에서 루트 사용자 계정 로그인을 비활성화하는 네 가지 방법을 설명합니다.

주의: 루트 계정에 대한 액세스를 차단하기 전에 sudo 명령을 사용하여 루트를 얻을 수 있는 관리 계정을 생성했는지 확인하세요. useradd 명령을 사용하여 사용자 권한을 부여하고 이 사용자 계정에 강력한 암호를 제공합니다. -m 플래그는 사용자의 홈 디렉토리 생성을 의미하고 -c는 주석 지정을 허용합니다.

useradd -m -c "Admin User" admin
passwd admin

그런 다음 usermod 명령을 사용하여 이 사용자를 적절한 시스템 관리자 그룹에 추가합니다. 여기서 스위치 -a는 사용자 계정 추가를 의미하고 -G는 사용자를 추가할 그룹을 지정합니다. in(Linux 배포판에 따라 휠 또는 sudo):

usermod -aG wheel admin    #CentOS/RHEL
usermod -aG sudo admin     #Debian/Ubuntu 

관리 권한이 있는 사용자를 생성한 후 루트 액세스를 차단하려면 해당 계정으로 전환하세요.

su admin

1. 루트 사용자의 쉘 변경

루트 사용자 로그인을 비활성화하는 가장 간단한 방법은 해당 쉘을 /bin/bash 또는 /bin/bash(또는 사용자 로그인을 허용하는 다른 쉘)에서 로 변경하는 것입니다. >/sbin/nologin(/etc/passwd 파일). 표시된 대로 즐겨 사용하는 명령줄 편집기를 사용하여 편집하기 위해 열 수 있습니다.

  
sudo vim /etc/passwd

줄을 변경하십시오 :

root:x:0:0:root:/root:/bin/bash
to
root:x:0:0:root:/root:/sbin/nologin

파일을 저장하고 닫습니다.

이제부터 루트 사용자가 로그인하면 "현재 사용할 수 없는 계정입니다."라는 메시지가 표시됩니다. 이것이 기본 메시지이지만, 이를 변경하고 /etc/nologin.txt 파일에 맞춤 메시지를 설정하세요.

이 방법은 사용자 로그인을 위해 셸이 필요한 프로그램에만 효과적입니다. 그렇지 않으면 sudo, ftpemail 클라이언트가 루트 계정에 액세스할 수 있습니다.

2. 콘솔 장치(TTY)를 통한 루트 로그인 비활성화

두 번째 방법은 pam_securetty라는 PAM 모듈을 사용합니다. 이 모듈은 사용자가 "보안" TTY에 로그인하는 경우에만 루트 액세스를 허용합니다. /etc/securetty의 목록으로 정의됩니다.

위 파일을 사용하면 루트 사용자가 로그인할 수 있는 TTY 장치를 지정할 수 있으며, 이 파일을 비우면 컴퓨터 시스템에 연결된 모든 장치에서 루트 로그인이 방지됩니다.

빈 파일을 만들려면 다음을 실행하세요.

sudo mv /etc/securetty /etc/securetty.orig
sudo touch /etc/securetty
sudo chmod 600 /etc/securetty

이 방법에는 몇 가지 제한 사항이 있으며 로그인, 디스플레이 관리자(예: gdm, kdmxdm) 및 기타 네트워크 서비스와 같은 프로그램에만 영향을 미칩니다. TTY를 시작합니다. su, sudo, ssh 및 기타 관련 openssh 도구와 같은 프로그램은 루트 계정에 액세스할 수 있습니다.

3. SSH 루트 로그인 비활성화

원격 서버 또는 VPS에 액세스하는 가장 일반적인 방법은 SSH를 이용하는 것이며, SSH에서 루트 사용자 로그인을 차단하려면 /etc/ssh/sshd_config 파일을 편집해야 합니다.

sudo vim /etc/ssh/sshd_config

그런 다음 스크린샷에 표시된 대로 PermitRootLogin 지시문의 주석 처리를 해제하고(주석이 있는 경우) 해당 값을 no로 설정합니다.

완료되면 파일을 저장하고 닫습니다. 그런 다음 sshd 서비스를 다시 시작하여 최근 구성 변경 사항을 적용합니다.

sudo systemctl restart sshd 
OR
sudo service sshd restart 

이미 알고 있듯이 이 방법은 openssh 도구 세트에만 영향을 미치며 ssh, scp, sftp와 같은 프로그램은 루트 계정에 액세스하지 못하도록 차단됩니다.

4. PAM을 통해 서비스에 대한 루트 액세스를 제한합니다.

플러그형 인증 모듈(줄여서 PAM)은 Linux 시스템에서 중앙 집중식, 플러그형, 모듈식의 유연한 인증 방법입니다. PAM은 /lib/security/pam_listfile.so 모듈을 통해 특정 계정의 권한을 제한하는 데 큰 유연성을 허용합니다.

위 모듈은 로그인, SSH 및 PAM 인식 프로그램과 같은 일부 대상 서비스를 통해 로그인이 허용되지 않는 사용자 목록을 참조하는 데 사용할 수 있습니다.

이 경우 로그인 및 sshd 서비스에 대한 액세스를 제한하여 시스템에 대한 루트 사용자 액세스를 비활성화하려고 합니다. 먼저 표시된 대로 /etc/pam.d/ 디렉터리에서 대상 서비스에 대한 파일을 열고 편집합니다.


sudo vim /etc/pam.d/login
OR
sudo vim /etc/pam.d/sshd

그런 다음 두 파일 모두에 아래 구성을 추가합니다.

auth    required       pam_listfile.so \
        onerr=succeed  item=user  sense=deny  file=/etc/ssh/deniedusers

완료되면 각 파일을 저장하고 닫습니다. 그런 다음 한 줄에 하나의 항목을 포함하고 누구나 읽을 수 없는 일반 파일 /etc/ssh/deniedusers를 만듭니다.

루트라는 이름을 추가한 다음 저장하고 닫습니다.

sudo vim /etc/ssh/deniedusers

또한 이에 대해 필요한 권한을 설정하십시오.

sudo chmod 600 /etc/ssh/deniedusers

이 방법은 PAM을 인식하는 프로그램과 서비스에만 영향을 미칩니다. FTP, 이메일 클라이언트 등을 통해 시스템에 대한 루트 액세스를 차단할 수 있습니다.

자세한 내용은 관련 매뉴얼 페이지를 참조하세요.

man pam_securetty
man sshd_config
man pam

그게 다야! 이 기사에서는 Linux에서 루트 사용자 로그인(또는 계정)을 비활성화하는 네 가지 방법을 설명했습니다. 의견, 제안 또는 질문이 있으시면 아래 피드백 양식을 통해 언제든지 문의해 주세요.