Linux에서 SSH를 통한 루트 로그인을 비활성화하는 방법(및 이유)

게시 됨: 2022-09-29
bash 프롬프트를 표시하는 Linux 노트북
Fatmawati achmad zaenuri/Shutterstock.com

Linux 루트 사용자로 로그인하는 것은 좋지 않습니다. SSH 연결을 통해 루트로 로그인하는 것은 훨씬 더 나쁩니다. 그 이유와 예방법을 알려드립니다.

양날의 검

일반 사용자가 다루기에는 너무 중요하거나 너무 민감한 운영 체제 부분을 소유하고 관리할 권한이 있는 사람이 필요합니다. 여기서 root가 필요합니다. root는 Unix 및 Linux 운영 체제의 강력한 수퍼유저입니다.

모든 계정과 마찬가지로 루트 사용자 계정은 암호로 보호됩니다. 루트 사용자의 암호가 없으면 다른 누구도 해당 계정에 액세스할 수 없습니다. 즉, 루트의 권한과 권한은 다른 사람이 사용할 수 없습니다. 반대로 악의적인 사용자와 루트 권한 사이의 유일한 방어 수단은 해당 암호라는 것입니다. 물론 암호는 추측, 추론, 어딘가에 기록된 발견 또는 무차별 대입이 가능합니다.

악의적인 공격자가 루트의 암호를 발견하면 로그인하여 전체 시스템에 대해 원하는 모든 작업을 수행할 수 있습니다. 루트의 상승된 권한으로 수행할 수 있는 작업에는 제한이 없습니다. 루트 사용자가 로그아웃하지 않고 터미널에서 걸어나와 기회주의적으로 계정에 액세스하는 것과 같습니다.

Linux 시스템에 루트로 로그인하지 말아야 하는 이유
관련 Linux 시스템에 루트로 로그인하지 말아야 하는 이유

이러한 위험 때문에 많은 최신 Linux 배포판은 루트가 로컬로 컴퓨터에 로그인하는 것을 허용하지 않으며 SSH는 신경 쓰지 않습니다. 루트 사용자가 존재하지만 비밀번호가 설정되어 있지 않습니다. 그러나 누군가가 시스템을 관리할 수 있어야 합니다. 그 수수께끼에 대한 해결책은 sudo 명령입니다.

sudo 를 사용하면 지정된 사용자가 자신의 사용자 계정 내에서 임시로 루트 수준 권한을 사용할 수 있습니다. 자신의 비밀번호를 입력하여 sudo 를 사용하려면 인증이 필요합니다. 이렇게 하면 루트의 기능에 임시로 액세스할 수 있습니다.

루트 권한은 사용되었던 터미널 창을 닫으면 죽습니다. 터미널 창을 열어 두면 시간이 초과되어 자동으로 일반 사용자 상태로 돌아갑니다. 이것은 또 다른 유형의 보호를 제공합니다. 그것은 당신 자신을 보호합니다.

습관적으로 일반 계정 대신 루트로 로그인하는 경우 명령줄에서 수행하는 모든 실수는 치명적일 수 있습니다. sudo 를 사용하여 관리를 수행해야 한다는 것은 입력하는 내용에 더 집중하고 주의할 가능성이 높다는 것을 의미합니다.

SSH를 통한 루트 로그인을 허용하면 공격자가 로컬일 필요가 없기 때문에 위험이 증가합니다. 그들은 원격으로 시스템에 무차별 대입을 시도할 수 있습니다.

관련: Linux에서 sudo 명령 사용을 검토하는 방법

루트 사용자 및 SSH 액세스

다른 사람을 위해 시스템을 관리할 때 이 문제가 발생할 가능성이 더 큽니다. 누군가 로그인할 수 있도록 루트 암호를 설정하기로 결정했을 수 있습니다. 루트가 SSH를 통해 로그인할 수 있도록 다른 설정을 변경해야 합니다.

이 일은 우연히 일어나지 않을 것입니다. 그러나 관련된 위험을 이해하지 못하는 사람들이 할 수 있습니다. 그 상태에서 컴퓨터의 관리를 인계받는 경우 소유자에게 왜 그것이 나쁜 생각인지 조언한 다음 시스템을 안전한 작업으로 되돌려야 합니다. 이전 시스템 관리자가 구성한 것이라면 소유자가 모를 수 있습니다.

다음은 Fedora를 실행하는 컴퓨터의 사용자로 Ubuntu 컴퓨터의 루트 사용자로 Ubuntu 컴퓨터에 SSH 연결을 설정합니다.

 ssh [email protected] 

SSH를 사용하여 원격 컴퓨터에 연결하는 루트 사용자

Ubuntu 컴퓨터를 사용하면 루트 사용자가 SSH를 통해 로그인할 수 있습니다. Ubuntu 컴퓨터에서 루트 사용자로부터 라이브 연결이 진행 중임을 알 수 있습니다.

 누구 

who 명령을 사용하여 로그인한 사용자 나열

우리가 볼 수 없는 것은 누가 그 세션을 사용하고 있는지입니다. SSH 연결의 다른 쪽 끝에 있는 사람이 루트 사용자인지 아니면 루트 암호를 얻은 사람인지 알 수 없습니다.

루트에 대한 SSH 액세스 비활성화

루트 사용자에 대한 SSH 액세스를 비활성화하려면 SSH 구성 파일을 변경해야 합니다. 이것은 "/etc/ssh/sshd_config"에 있습니다. 변경 사항을 기록하려면 sudo 를 사용해야 합니다.

 sudo gedit /etc/ssh/sshd_config 

sshd-config 파일 편집

파일을 스크롤하거나 "PermitRootLogin" 문자열을 검색합니다.

이것을 "no"로 설정하거나 행의 첫 번째 문자로 해시 " # "을 배치하여 행을 주석 처리합니다. 변경 사항을 저장합니다.

변경 사항을 적용하려면 SSH 데몬을 다시 시작해야 합니다.

 sudo systemctl ssh 재시작 

sshd 데몬 재시작

로컬 로그인도 방지하려면 루트 암호를 비활성화하십시오. 벨트 및 브레이스 방식을 취하고 -l (잠금) 및 -d (비밀번호 삭제) 옵션을 모두 사용합니다.

 sudo 암호 루트 -ld 

루트 계정 잠금 및 루트 암호 제거

이것은 계정을 잠그고 거래에서 계정 암호를 제거합니다. 루트 사용자가 실제로 컴퓨터에 앉아 있어도 로그인할 수 없습니다.

루트 SSH 액세스를 허용하는 더 안전한 방법

때로는 SSH를 통한 루트 액세스 제거에 대한 관리자의 저항에 직면하게 됩니다. 그들이 정말로 듣지 않는다면, 당신은 그것을 복원해야 하는 상황에 놓이게 될 수도 있습니다. 이 경우 위험을 줄이고 루트 사용자의 원격 로그인을 계속 허용하는 방식으로 타협할 수 있어야 합니다.

Linux 셸에서 SSH 키를 만들고 설치하는 방법
관련 Linux 셸에서 SSH 키를 만들고 설치하는 방법

SSH 키를 사용하여 SSH를 통해 연결하는 것이 암호를 사용하는 것보다 훨씬 안전합니다. 암호가 관련되어 있지 않기 때문에 무차별 대입, 추측 또는 다른 방식으로 발견될 수 없습니다.

로컬 루트 계정을 잠그기 전에 루트 사용자가 로컬 컴퓨터에 연결할 수 있도록 원격 컴퓨터에서 SSH 키를 설정하십시오. 그런 다음 암호를 삭제하고 로컬 계정을 잠급니다.

또한 "sshd_config" 파일을 한 번 더 편집해야 합니다.

 sudo gedit /etc/ssh/sshd_config 

sshd-config 파일 편집

"prohibit-password" 옵션을 사용하도록 "PermitRootLogin" 행을 변경합니다.

변경 사항을 저장하고 SSH 데몬을 다시 시작합니다.

 sudo systemctl ssh 재시작 

sshd 데몬 재시작

이제 누군가 루트 사용자의 비밀번호를 복원하더라도 비밀번호를 사용하여 SSH를 통해 로그인할 수 없습니다.

원격 루트 사용자가 로컬 컴퓨터에 SSH로 연결하면 키가 교환되고 검사됩니다. 인증을 통과하면 루트 사용자는 암호 없이 로컬 컴퓨터에 연결됩니다.

 ssh [email protected] 

암호 없이 SSH를 사용하여 원격 컴퓨터에 연결하는 루트 사용자

출입 불가

루트 사용자의 원격 연결을 거부하는 것이 가장 좋은 방법입니다. 루트가 SSH 키를 사용하여 연결하도록 허용하는 것이 두 번째로 좋지만 암호를 사용하는 것보다 훨씬 낫습니다.

관련: Linux에서 sudo 액세스를 제어하는 ​​방법