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

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

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

양날의 검

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

모든 계정과 마찬가지로 루트 사용자 계정은 암호로 보호됩니다. 루트 사용자의 암호가 없으면 다른 누구도 이 계정에 액세스할 수 없습니다. 이는 root의 권한과 권한을 다른 사람이 사용할 수 없음을 의미합니다. 반대로 공격자와 루트 권한 사이의 유일한 방어 수단은 암호라는 것입니다. 물론 암호는 추측, 계산, 기록된 곳에서 찾을 수 있거나 무차별 대입으로 찾을 수 있습니다.

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

이러한 위험 때문에 많은 최신 Linux 배포판은 SSH는 고사하고 루트 사용자가 로컬로 로그인하는 것을 허용하지 않습니다. 루트 사용자가 있지만 암호가 설정되지 않았습니다. 그래도 누군가가 시스템을 관리할 수 있어야 합니다. 이 퍼즐의 해결책 sudo 은 팀입니다.

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

수퍼유저 권한은 사용되었던 터미널 창을 닫으면 사라집니다. 터미널 창을 열어 두면 시간 초과가 만료되고 자동으로 일반 사용자 상태로 돌아갑니다. 이것은 또 다른 유형의 보호를 제공합니다. 그는 당신을 자신으로부터 보호합니다.

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

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

루트 사용자 및 SSH 액세스

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

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

다음은 Ubuntu 시스템의 루트 사용자로 Ubuntu 시스템에 sshing하는 Fedora 시스템의 사용자입니다.

ssh root@ubuntu-22-04.local

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

Ubuntu 컴퓨터를 사용하면 루트 사용자가 SSH를 통해 로그인할 수 있습니다. Ubuntu 시스템에서 활성 연결이 루트로 실행되고 있는 것을 볼 수 있습니다.

who

who 명령을 사용하여 등록된 사용자 나열

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

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

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

sudo gedit /etc/ssh/sshd_config

sshd-config 파일 편집

파일을 스크롤하거나 “PermitRootLogin” 줄을 찾습니다.

이 매개변수를 “없음”으로 설정하거나 행 #의 첫 번째 문자로 해시 표시 ” “를 배치하여 행을 주석 처리하십시오. 변경 사항을 저장합니다.

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

sudo systemctl restart ssh

sshd 데몬 재시작

로컬 로그인도 방지하려면 루트 암호를 비활성화하십시오. 벨트 및 멜빵 접근 방식을 사용하고 -l(잠금) 및 -d(암호 제거) 옵션을 모두 사용합니다.

sudo passwd root -ld

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

이렇게 하면 계정이 잠기고 부팅할 계정 암호가 제거됩니다. 루트 사용자가 실제로 컴퓨터에 앉아 있어도 로그인할 수 없습니다.

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

SSH를 통해 루트 액세스를 제거할 때 때때로 관리 저항이 발생합니다. 그들이 정말로 듣지 않는다면, 당신은 그것을 복원해야 하는 상황에 놓이게 될 수도 있습니다. 그렇다면 위험을 줄이고 여전히 루트로 원격 로그인을 허용하는 방식으로 타협할 수 있어야 합니다.

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

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

또한 sshd_config 파일을 다시 편집해야 합니다.

sudo gedit /etc/ssh/sshd_config

sshd-config 파일 편집

“암호 금지” 옵션을 사용하려면 “PermitRootLogin” 행을 변경하십시오.

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

sudo systemctl restart ssh

sshd 데몬 재시작

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

원격 루트 사용자가 로컬 시스템에 SSH 연결을 설정하면 키가 교환되고 확인됩니다. 인증을 통과하면 루트 사용자는 암호 없이 로컬 시스템에 연결합니다.

ssh root@ubuntu-22-04.local

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

출입 불가

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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다