루트 사용자를 비활성화해야합니까?


21

루트 암호를 제거하고 원격 로그인을 비활성화해야하며 기본적으로 관리자는 sudo를 사용하여 관리 작업을 수행해야합니까?

대체 텍스트

답변:


16

모든 서버에서 루트 계정을 비활성화했습니다 (로 sp_pwdp설정 *). sudo모든 루트 액세스 가 필요 합니다. [1] 이것의 목적은 모든 수퍼 유저 활동을 감사하여 사람들이 시스템에서 수행 한 작업을 볼 수 있도록하는 것입니다.

더 많은 하드 코어 옵션을 사용하려면 sudo로그 파일에 쓰기 (와 반대로 syslog)하고 파일을 추가 전용 ( chattrLinux 또는 chflagsBSD 사용)으로 만들 수 있습니다. 이렇게하면 아무도 감사를 편집 할 수 없습니다.

[1] 또한 루트 쉘을 실행하지 않거나 루트 프로세스에서 쉘 이스케이프를 수행하는 정책이 있습니다. ( sudo sh -c '...'하지만 파이프 라인이나 리디렉션을 수행하는 데 사용할 수 있습니다 .)


3
"껍질도 달리지 않는다!" 음, 얼마나 많은 프로그램에 "drop to shell"명령이 있는지 알고 있습니까? 심지어 전에 당신이 ... 쉘 작업 제어보고 시작
움블

저는 "쉘 없음"에 대해 sudo 옵션이 아니라 정책으로 이야기하고 있습니다. (sudo에는 noexec 옵션이 있지만, 사용자가 실행할 수있는 특정 프로그램을 제한하지 않으면 확실하지 않습니다.)
Chris Jester-Young

"sudo -s"를 사용할 수 없도록 sudo를 구성 할 수 있습니까? 개별 명령을 구성하는 데 sudoers 만 사용했습니다.

@Graham : 가능합니다. 그러나 위의 주석에서 볼 수 있듯이 사용자가 달리 실행할 수있는 경우 아무것도 멈추지 않습니다. 유일한 방수 솔루션은 화이트리스트 접근 방식으로, 사용자가 실행할 수있는 특정 프로그램을 나열하며, "noexec"옵션이 수행 할 수 있도록 모든 프로그램을 동적으로 연결해야합니다.
Chris Jester-Young

관리자를 신뢰하는 정책으로 좋습니다. 사람들이 실행하는 명령을 볼 수 있으며 변경된 사항을 해결할 때 실제로 도움이 될 수 있습니다.
Hamish Downer

15

나는 단호하게 루트 사용자를 비활성화에 좋습니다. 사용 안 함 또는 제한 루트 로그인 (securetty 파일을 통해 sshd_config를 통해 PAM을 통해 시스템이, 제한 루트의 권한을 허용 또는 (방법과 유사 루트 역할을 분할하는 경우를 통해 당신이 무엇을) RSBAC가 하십시오. 그것을 않습니다)하지만, 제발 수행 비밀번호를 제거하여 루트 계정을 비활성화하지 않으면을 통해 시스템에 로그인 할 수 없게됩니다 sulogin. suloginfsck에 의해보고 된 심각한 오류가 발생할 경우 알고있는 모든 initscript에서 사용되며 루트 파일 시스템이 손상된 경우 시스템에서 잠길 수 있습니다.

명확히하기 위해 : "암호를 제거하여 루트 계정을 사용하지 않도록 설정"이란 말은! 또는 / etc / shadow의 비밀번호 필드 또는 *에있는 *. "루트 로그인 메커니즘을 변경하여 암호를 입력하라는 메시지가 표시되지 않습니다."


우분투와 같은 시스템에서 루트 암호를 설정하지 않은 문제입니까? "sudo sulogin"을 실행할 수있을 것 같지만 중요한 부분을 이해하지 못할 수도 있습니다.
jldugger

불행히도 우분투가 루트를 처리하는 방식에 익숙하지 않습니다. 그러나 "sudo sulogin"을 수행 할 수 있고 루트 암호를 요구하지 않고 루트 쉘을 얻을 수 있다면 부팅 할 때 동일한 메커니즘이 적용되므로 문제가되지 않습니다. initscript를 통해 sulogin에 대한 grepping을 찾아보고 언제 어떻게 호출되는지 확인할 수 있습니다.
Mihai Limbăşan

1
우분투는 sulogin을 사용하지 않습니다. 단일 사용자 모드로 들어가면 바로 루트 셸이 나타납니다. 그러나 대부분의 경우 문제가 아닌 이유를 보려면 내 게시물에서 내 의견을 읽으십시오.
Chris Jester-Young

또한 시스템에 사용자 가 su있거나 sudo시스템을 사용할 수 있다는 주장은 전용 루트 사용자 만있는 경우 피할 수있는 더 많은 보안 위험을 의미합니다. 그것은 올빼미 보안 배포판의 저자 (그리고 그들 중 솔라 디자이너)가 주장한 입장입니다 -unix.stackexchange.com/questions/8581/…
imz-Ivan Zakharyaschev

방금이 문제가 발생했습니다. 루트 사용자를 잠그고 하드 재설정으로 인해 fsck가 강제되었습니다. 운 좋게도 fastboot옵션으로 결함이있는 Linux를 부팅 하고 루트 계정을 잠금 해제 한 다음 다시 fsck수동 으로 실행하기 위해 다시 시작할 수 있습니다.
tommyd

3

모든 서버에서 루트 계정을 활성화했습니다. 모든 관리자는 자신의 사용자를 가지고 있으며이를 통해 로그인해야합니다. 거기에서 그들은 루트로 전환합니다. (루트 ssh가 비활성화 됨)

관리자 수를 줄이십시오. 해당 서버에서 실제로 루트 액세스가 필요한 사람 만 암호를 갖습니다.

저는 sudo의 팬이 아닙니다. 루트 쉘에 대해 'sudo bash'를 수행하는 것은 너무 쉽습니다. 나는 이것이 비활성화 될 수 있다는 것을 알고 있지만 왜 귀찮게합니까? 관리자 작업을 수행하고 서로 대화 할 수있는 사용자를 제한하십시오. 루트 터미널을 무인 상태로 열지 않도록하는 정책이 있습니다. 로그인, su, 작업을 수행하고 로그 아웃하십시오.

참고 : 저는 꽤 작은 회사 (50 명 직원)에서 일하고 있으며 2 명의 파트 타임 관리자 (1 windows / 1 linux) 만 가지고 다닙니다. 이 방법은 사용자 수가 많은 경우 가장 좋지 않을 수 있습니다. 나는 개인적으로 여전히 sudo를 사용하지 않을 것입니다. 루트 활동을 기록하는 다른 방법이 있습니다.


콘솔에서 루트 쉘을 원한다면 sudo bash에서 루트 쉘을 여는 대신 'sudo -i'를 수행하면됩니다. 개인적으로 루트 사용자로 로그인하는 것은 악의적 인 염소 처리에 너무 위험하기 때문에 루트 사용자로 직접 로그인하는 아이디어가 마음에 들지 않습니다 (예 : 실수로 루트 셸을 연 상태에서 컴퓨터를 잠금 해제 상태로 두는 경우).
Spoike

그래도 로깅 / 감사를 잃게됩니다. 모든 사람이 sudo를 사용하게하고 사람들이 회사 정책으로 sudo bash, sudo -i 또는 sudo -s를 수행하지 못하게합니다. 감사 추적을 제공하고 모든 로그를 중앙 로그 호스트로 푸시하는 경우 사람들이 정책을 따르고 있는지 쉽게 확인할 수 있기 때문입니다.
Christopher Cashell

즉, 올빼미 보안 distribuion (그리고 그 중 태양 광 디자이너)의 저자로 촬영하고 옹호 접근 방식 - unix.stackexchange.com/questions/8581/...은 참조가 자신의 위치를 제시하려고합니다.
imz-Ivan Zakharyaschev

2

루트 암호를 비활성화하는 것은 잘못된 "좋은 생각"입니다. 당신이 그것을 필요로하는 날, 당신은 정말로 그것을 필요로 할 것입니다. (구성에 따라 예를 들어 단일 사용자 모드로 로그인해야 할 수도 있습니다)

루트 원격 로그인 비활성화는 관련이있을 수 있지만 로컬로 로그온 할 수있는 경우에만 가능합니다.

예, sudo는 모든 서버에 설치해야합니다. 유용하고 구성하기 쉽습니다. 왜 사용하지 않겠습니까?


단일 사용자 모드로 부팅하는 것이 grub 옵션 인 경우 어떻게됩니까?
jldugger 2016 년

루트 계정을 비활성화하는 목적은 무엇입니까? 브레이크가 sudo 바이너리 또는 구성 (또는 사용하는 도구) 인 경우 어떻게해야합니까?
Benoit

Disabling root remote login might be relevant but only if you are able to log on locally.이것은 명백히 거짓입니다. 모든 계정 으로 원격으로 로그인 할 수 있습니다 . 루트 원격 로그인을 비활성화해도 로컬 액세스로 제한되지 않습니다.
Dan

2

루트에 대한 SSH 액세스를 비활성화하고 ssh 키를 사용하려면 사용자 (종종 개발자 일뿐)가 필요합니다. 사전 공격이 너무 많아 SSH 포트를 변경하는 것은 우리에게 옵션이 아닙니다.

그렇게하면 좋은 암호를 작성할 수있는 사람의 능력을 신뢰할 필요가 없습니다. 일단 관리자 만 sudo에 대한 권한을 갖습니다.


SSH 포트 변경은 아무 의미가 없습니다. 간단한 포트는 쉽게 제공 할 수 있습니다. 나는 텔넷 내 컴퓨터의 포트 22에, 나는 SSH-2.0-OpenSSH_4.7p1 데비안 8ubuntu1.2 얻을 때
매트 시몬스

@MattSimmons 예. 그러나 대부분의 사전 공격은 자동화되어 매우 기본적입니다. 그들은 포트 스캐닝을 방해하지 않습니다. 포트 22에서 임의의 IP 주소에 연결을 시도하고 시간 종료되면 목록의 다음 IP로 이동합니다. 보안 수단이 아니며 자동화 된 포트 22 공격을 제거하는 데 도움이됩니다. 분명히 표적 공격은 완전히 다른 볼 게임입니다.
Dan

2

이 스레드가 실제로 오래되었다는 것을 알고 있지만 링크 된 기사 로직에 몇 가지 주요 결함이 있으며 "rantie"느낌이 듭니다. sudo는 화이트리스트와 블랙리스트를 모두 허용합니다. 링크 된 기사에서 명시한대로 검은 색이 아닌-AAA (Authentication, Authorization & Auditing)의 개념을 건너 뜁니다. su 및 sudo는 등급별 인증과 책임을 모두 허용합니다.

시나리오 1 관리자가 실수로 일부 악성 코드를 시스템에 도입하여 루트로 로그인하여 코드에 완전히 액세스 할 수 있으며 관리자는 무슨 일이 있었는지 알 수 없습니다. 최소한 등급이 지정된 로그인 (예 : su / sudo)을 사용하면 악성 코드가 높은 권한을 사용하려고하면 관리자에게 인증하라는 메시지가 표시됩니다.이 권한이 상승하지 않으면 사용자 권한으로 제한되어 최소한의 피해를 입 힙니다.

시나리오 2 불량 관리자가 정보를 얻거나 변경하려고합니다. 콘솔 (실제 콘솔 액세스, HP iLo / similar 또는 vGuest 콘솔 액세스)에 연결하고 루트로 로그인하여 원하는대로 수행합니다. 콘솔 액세스에 사용되는 명명 된 계정 / 액세스 카드가 없다면 감사 추적이 많지 않을 것입니다.

  1. 그들이 실제로 말하는 사람인지 확인하십시오. 신원 도용은 문제가 아니라 신원 확인입니다.
  2. 그들의 승인을 확인하고, 당시에 필요한 것만 제공하십시오. 등급별 권한 부여를 통해 필요할 때 상승 할 수 있습니다.
  3. 모든 것을 감사하고, 기록을 가지고 누가, 언제, 어디서 무엇을했는지 알 수 있습니다. 바람직하게 왜

1

모든 루트 명령에 대해 모든 사람이 sudo를 정책으로 사용해야합니다. "스도 배쉬 (sudo bash)"등을 실행하는 이유는 결코 없으며, 단지 무지 때문에 또는 단지 트랙을 커버하기위한 것입니다.

루트 계정에 대한 로그인을 직접 비활성화하면 심각한 문제가 발생했을 때 시스템을 고칠 수 없게됩니다.

관리자가 자신으로 로그인하여 루트로 실행되는 모든 명령에 대해 sudo를 실행하도록하고 쉘에서 분리하지 못하게하려면 기술적 인 해결책이없는 심각한 문제가 있습니다.


1

Owl 보안 배포 (및 Solar 디자이너)의 저자는 정교하게 정당화 된 관점을 가지고 있습니다. 예를 들어 /unix/8581/which-is-the-safest-way-to-get-root-privileges-sudo-su-or-login/8660#8660에 대한 답변을 참조하십시오 . 그들의 주장의 표현. 수퍼 유저 작업 (어떤 사람이 무엇을했는지)을 감사하는 문제도 그들의 관점에서 해결됩니다 (기본적으로 솔루션은 이름이 다른 여러 루트 사용자가있는 것입니다).

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