우분투에서 루트 로그인을 어떻게 비활성화합니까?


27

얼마 전 나는 루트로 비밀번호를 썼기 때문에 루트로 로그인하여 어떤 일을 할 수 있었다. 이제 인터넷에 서브 서비스를 공개 할 예정이므로 보안을 강화하기 위해 루트 로그인을 비활성화하고 싶습니다. 나는 이것을하는 몇 가지 방법을 보았지만 ( sudo passwd -l root,으로 다루는 것 등 /etc/shadow), 그것이 최선의 가장 현명한 방법이 무엇인지 말하는 곳은 없습니다. 나는 sudo passwd -l root했지만 이것이 이것이 init 스크립트에 영향을 줄 수 있다고 말하는 충고를 보았으며 액세스를 거부하지 않고 로그인하려고하면 여전히 암호를 요구하기 때문에 보안이 안전하지 않다는 조언을 보았습니다. 그래서 그것을 달성하는 방법은 무엇입니까?

편집 : 명확히하기 위해 루트로 로컬 로그인을위한 것입니다. SSH를 통한 원격 로그인을 이미 비활성화했습니다. SSH를 통해 루트로 로그인하려고 시도해도 여전히 루트 암호를 묻는 메시지가 표시됩니다 (항상 실패 함). 그게 나쁜가요?


1
루트에 대한 로컬 액세스를 비활성화하면 거의 보안 이점이 없습니다. 물리적 액세스 권한이 있는 사용자 는 수많은 방법으로 박스를 포장 할 수 있습니다 .
jscott

요점을 알았어. 하드 드라이브를 꺼내기 만하면 루트로 로그인 할 필요가 없습니다. 여전히 호기심이 없다면 루트 계정을 변경하기 전의 루트 계정으로 되 돌리는 방법을 알고 싶습니다.
Ben Hymers

아래 답변에 대한 업데이트를 참조하십시오. 나는 지금 당신이 요구하는 것을 이해한다고 생각합니다.
jscott

루트를 비활성화하는 동안 @jscott은 침입에 대한 보안 이점을 제공하지 않을 수 있지만 루트로 로그인하지 않으면 잘못 배치 된 rm명령 등으로 시스템을 손상시키는 것에 대한 안전 스위치를 제공합니다 . 내가 힘들게 배운 것. 그렇습니다. 루트로 로그인 할 수는 없지만 sys 관리자의 관점에서는 비활성화하는 것이 좋습니다.
codechimp

VPS 또는 호스팅에 적합합니다.
jjxtra

답변:


33

루트를 비활성화하는 것이 잠재적 인 문제의 가치가 있다는 것은 논쟁의 여지가 있습니다. 그런 식으로 구성된 서버를 테스트 한 적이 없습니다. 선호하는 것은 루트 로컬 액세스 만 허용하는 것입니다. 공격자가 서버에 물리적으로 액세스 할 수 있으면 설치를 "보안"하기 위해 수행 한 모든 작업을 잊을 수 있습니다.

다음 을 포함하도록 ssh편집 /etc/ssh/sshd_config하여 루트 액세스를 비활성화하십시오 .

PermitRootLogin no

만지는 /etc/shadow, chsh -s /bin/false root모두 간단한 부팅 가능한 CD / 썸 드라이브로 취소 될 수 있습니다.

귀하의 의견에 따라 업데이트 :

에서 help.ubuntu.com : "기본적으로 루트 계정 암호는 우분투에 잠겨 있습니다 ." 자세한 내용은 "루트 계정 다시 비활성화"섹션을 참조하십시오. 루트 계정의 상태를 재설정하려면 설치 기본값으로 다음 명령을 사용하십시오.

sudo usermod -p '!' root

침입자가 해당 시스템에 물리적으로 액세스 할 수있는 시스템은 안전하지 않습니다. / etc / shadow를 편집 할 수있는 경우 / etc / ssh / sshd_config 편집을 방해하는 요인은 무엇입니까?
Sven

@SvenW : 맞습니다. 그렇기 때문에 루트를 "비활성화"하는 데 귀찮게하는 보안의 유용성에 대해 토론하는 것입니다. 루트 액세스를 제한하십시오. 예. 계정을 비활성화하십시오.
jscott

4
sudo service ssh restart .......이 작업을 수행 한 후.
Naweed Chougle

참조 된 도움말 파일은 이제 다음 명령을 제공합니다. sudo passwd -dl root
MrG

21

ssh를 통한 원격 로그인을 참조한다고 가정합니다. 다음 줄을 추가하십시오 /etc/ssh/sshd_config.

PermitRootLogin no

ssh 서비스를 다시 시작하십시오.

sudo service ssh restart

그것은 일을해야하고 루트 계정을 그대로 유지할 수 있습니다 (또는 필요하다고 생각되면 비활성화하십시오).


죄송합니다. 로컬 로그인 용입니다. 질문을 업데이트했습니다.
Ben Hymers

4

주요 질문은 여러 번 답변되었지만 2 차 답변은 없습니다. SSH는 보안 기능으로 비활성화 된 후 root를 입력 한 후 비밀번호를 묻습니다. lkjfiejlksji로 로그인하려고하면 트리거됩니다.

이것은 누군가가 사용자 이름의 더미를 테스트하지 못하게하고 시스템에서 유효한 사용자 이름을 찾으려고 시도하기위한 것입니다. 그러나 보안상의 관점에서 SSH를 통한 루트를 비활성화 한 경우, fail2ban과 같은 무차별 탐지 ​​프로그램을 설정하고 누군가가 루트로 로그인하려고 시도하는 경우이를 차단하도록 설정합니다. 추가 공격 시도


좋은 답변 감사합니다! fail2ban이 이미 설정되어 있지만 루트로 로그인하는 첫 번째 시도를 차단하도록 구성 할 것입니다. 좋은 조언.
Ben Hymers

2

암호화 된 비밀번호를 / etc / shadow에서 * (첫 번째 ':'다음의 두 번째 필드)로 바꾸는 것이 가장 좋은 방법입니다 (IMHO). 또한 ssh에 대한 루트 로그인을 비활성화하고 (ssh를 통해 루트로 로그인하는 것이 불가능 함) ssh를 인증서 로그인으로 제한 할 수 있습니다. 이는 비밀번호 기반 로그인보다 훨씬 안전합니다.

대부분의 경우 SSH는 외부에서 액세스 할 수있는 유일한 서비스로 루트 로그인이 가능하므로이 문이 잠겨 있습니다.

이를 더 제한하기 위해 fail2ban과 같은 것을 설치하면 여러 번의 로그인 시도 실패 후 특정 시간 동안 IP 주소를 금지 할 수 있습니다.


나는 '*'는 '!'와 같은 느낌을 받았으며, 대답에 따라 투표 할 것입니다.
Ben Hymers


0

로컬 루트 로그인을 비활성화하려면 / etc / passwd를 수정하고 / bin / bash를 / bin / false로 바꾸십시오. 그러나 테스트하지 않았으므로 루트 세션을 열어두고 테스트 한 다음 이상한 부작용이 있으면 다시 변경하십시오.


0

재 : 보안.

IMHO 당신이 할 수있는 것, 보안, 현명한 상자를 뽑고, 네트워크에서 연결을 끊고, 3 인치 두께의 방탄 초경-철 상자 안에 용접하는 것이 부족합니다.

만약 사람들이 국방부, CIA, FBI, Citibank를 해킹 할 수 있다면, 우리 중 나머지는 필멸의 삶을 훨씬 더 잘 할 수 없습니다.

재 : SSH 보안.

ssh를 통한 루트 액세스를 금지 할뿐만 아니라 "AllowUsers"매개 변수를 my 및 only username으로 설정했습니다. 이 방법으로 내 사용자 외에는 아무도 ssh를 통해 로그인 할 수 있습니다. 이것은 내 경우처럼 중복 될 수 있습니다. 어쨌든 루트가 아닌 하나의 사용자 만 만듭니다.

불행히도, 다른 사람들이 이전에 여러 번 말했듯이, 누군가가 상자에 물리적으로 접근하자마자 모든 베팅은 종료됩니다!

SSH 로그인을위한 인증서 교환? 흠. . . . 잘 들린다. 어떻게합니까?

짐 (JR)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.