root로 로그인하는 대신 root로 su하는 이유는 무엇입니까?


33

루트 사용자로 직접 로그인하는 대신 루트로 su하는 것이 더 좋다고 자주 들었습니다 (물론 사람들은 sudo를 사용하는 것이 더 낫다고 말합니다). 나는 왜 하나가 다른 것보다 더 나은지 이해하지 못했습니다. 통찰력?


2
ssh 로그인 또는 실제 시스템의 로그인을 생각하고 있습니까?
Telemachus

답변:


43

추론은 단지 su또는 sudo필요할 때이다.

대부분의 일상적인 작업에는 루트 셸이 필요하지 않습니다. 따라서 권한이없는 쉘을 기본 동작으로 사용하고 특별한 작업을 수행해야 할 때만 루트로 상승하는 것이 좋습니다.

이렇게하면 사용하는 응용 프로그램의 위험한 실수 (잘못된 스크립팅, 잘못 배치 된 와일드 카드 등) 및 취약점의 범위가 줄어 듭니다. 특히 인터넷에 접속하는 사람들은 "IRC를 루트로하지 말아라" 라는 옛 말을 보라 .

sudo 이러한 권한의 사용을 세분화하고 감사 할 수 있기 때문에 종종 권장됩니다.

이러한 관행을 준수함으로써 원격 루트 로그인을 비활성화 할 수 있습니다. 이는 "휠"그룹의 구성원 인 일반 사용자 계정과 SSH 공개 키로 만 권한을 부여받은 루트 계정 자체를 손상시켜야하기 때문에 침입자가 침입 할 수있는 진입률을 높입니다.


1
원격 루트 로그인이 "합리적으로 큰 취약점"인 이유를 알 수 있습니까?
thepocketwade

5
전 세계가 사용자 이름 ( '루트')을 알고 있기 때문에 비밀번호를 알아내는 것이 문제 일뿐입니다. 그들은 무차별 적으로 그렇게 할 수 있고 컴퓨터를 인수 할 수 있습니다.
샬롬 크라이 머

2
sudo의 또 다른 장점 : 실행 된 명령 로깅.
Manuel Faux

감사합니다;)
Dan Carley

1
sudo우수 하지만 , 루트 터미널에있는 동안 환경 변수를 동일하게 유지하기 위해 플래그 su를 사용할 수도 있습니다 -m. 디렉토리 이름으로 su무언가를 ~하고 작동하지 않는 것만으로도 더 많은 bonkers 가 뿌리를 내리지 않습니다.
tj111

27

원격에서 루트 액세스를 비활성화하여 공격자가 먼저 사용자를 손상시키지 않고 루트로 에스컬레이션하지 않고 루트를 손상시킬 수 없도록해야합니다. 우리는 콘솔에서만 루트 액세스를 가능하게합니다.

또한 그것은 책임을 만듭니다. :)


짧고 1 + 포인트
lexu

15

주된 이유는 감사 내역을 생성하는 것입니다. 시스템에 일반 사용자로 로그인 한 다음 su를 수행해야하는 경우 지정된 조치를 담당하는 사람을 추적 할 수 있습니다.


누군가 su-root를 실행 한 후에는 어떤 명령을 실행했는지 어떻게 알 수 있습니까? 어딘가에 기록되어 있습니까?
Dobes Vandermeer 2016

10

sudo는 모든 명령을 syslog에 자동으로 기록하며 각 사용자가 사용할 수있는 명령을 정의 할 수 있습니다.


3
로깅에 관해서 : 이것은 모든 명령 앞에 'sudo'가있는 경우이지만 sudo가 루트 쉘로 상승하는 데 사용되는 경우 명령은 전통적인 영역 (특히 쉘 기록)에만 기록됩니다.
Zenham

2
실제로 sudo vim foo.txtvim 내에서 쉘에 드롭하면 정기적 인 sudo 로깅없이 루트 쉘이 제공됩니다.
Ophidian

아니면 그냥 sudo -i대화식 세션을 얻으려면 ...
Kamil Kisiel

sudo vim foo.txt의 문제를 이해하지 못합니다. 나는 그것을 실행 한 다음 vim을 종료하고 여전히 나 자신이었습니다. 내가 누락 된 것이 있습니까?
thepocketwade

sudo를 속여서 sudo su-또는 sudo vim을 입력하여 쉘을 제공 한 다음 새로운 서브 쉘로 들어갈 수 있습니다. 그러나 모든 것을 syslog (중앙 집중식)에 기록하고 다른 서브 쉘을 얻는 데 사용될 수 있다는 것을 알고 sudo를 사용하는 경우 아무 문제도 보지 않으면 보너스입니다. 나는 그것에 의존하지 않습니다.
Jure1873

9

또 다른 좋은 이유 : sudo를 통해 루트로 승격 할 때 사용자는 자신의 자격 증명으로 인증합니다. 즉, 루트 암호를 반드시 부여 할 필요가 없기 때문에 누군가가 조직을 떠날 때 쉽게 잠글 수 있습니다.


4

감사 추적을 작성하고 여기에 언급 된 "sudo su-"또는 "sudo vim foo.txt"문제의 희생양이되지 않도록하려면 "sudosh"를 사용할 수 있습니다. sudo를 통해 루트 액세스를 전달하지만 "sudosh"를 실행할 수있는 유일한 명령을 만드십시오.

sudosh는 로깅 셸이며 나중에 전체 터미널 세션을 재생하여 사용자가 터미널에서 본 내용을 정확하게 표시 할 수 있습니다.


물론 sudosh가 시스템에서 사용 가능하다고 가정합니다. 방금 확인했는데 Linux 상자에 없습니다.
John Gardeniers

감사 추적 로깅이 활성화 된 새 ksh93을 사용할 수도 있습니다. IBM developerWorks에서이 기사를 확인하십시오. ibm.com/developerworks/aix/library/au-korn93/…
Mei

쉘 스크립트를 실행하여 쉽게 우회 할 수 있습니다 (나중에 닦아 내십시오). 감사되지 않은 사용자로 무해한 이름으로 스크립트를 작성한 다음 (워크 스테이션에서 scp) sudo를 실행하십시오. 심지어 'ls'또는 그와 같은 이름을 지정하고 $ PATH에 넣어 (필요한 경우 $ PATH 변경) / bin / ls를 호출하는 동안 더러운 작업을 수행하여 정상적으로 보이도록 숨길 수 있습니다. 나중에 닦아주십시오. 감사 로그는 / home / anthony / bin에 'ls'가 포함되어 있음을 알지 못합니다.
derobert

예, 완벽하지 않습니다. 우리는 이것을 알고 있습니다 – 그러나 일반 "sudo su-"IMHO보다 훨씬 더 좋은 사이트입니다. 예, 기본적으로 AFAIK가 설치되지 않습니다. 그러나 Solaris와 Linux에서 상당히 쉽게 실행됩니다.
mibus

1

보안을 철저히 연습해야합니다.

원격 루트 액세스 (또는 비밀번호를 통한 루트 액세스)를 허용하지 마십시오. (키를 통한 루트 액세스를 허용하는 경우 해당 키를 신중하게 제어하거나 키의 중앙 집중식 취소를 허용하는 kerberos와 같은 것을 사용하는 것이 좋습니다).

su를 비활성화하고 sudo를 사용합니다. 이렇게하면 사용자는 키 (바람직하게는 암호화 된)를 사용하여 시스템에 액세스 한 다음 권한 에스컬레이션을 위해서만 비밀번호 를 사용 합니다 . 사람들이 sudo로 액세스하는 프로그램을 제한 할 수 있지만 대부분 루트 암호를 아는 사람 만 액세스 할 수 있습니다.

이상적인 세상에서는 인터넷에 루트 암호를 게시 할 수 있어야하며 사람들에게 컴퓨터에 대한 액세스 권한을 부여하더라도 (하지만 / etc / sudoers 파일에는 넣지 않아도) 중요하지 않습니다. 물론 루트 암호를 게시 해서는 안되지만 동심 보호 계층으로 시스템을 보호해야합니다.


0

아이디어는 루트 로그인을 비활성화하는 것이므로 기본 관리자 계정이 없습니다. 그렇게하면 공격자는 사용자 이름과 암호를 모두 추측해야합니다 (암호뿐만 아니라).


0

루트를 정기적으로 사용하는 경우 권한이 잘못 되었거나 파일 또는 디렉토리에 r / w / x에 대한 sudo 권한 또는 새 그룹 권한을 부여해야 할 수 있습니다.

좋은 권한 체계는 오랫동안 Linux 사용자가 잘못하거나 그 범위를 모르는 것입니다.

우분투가 한 일을 시작하게하지 마십시오!


-2

rm -r -f를 실행하지 못하게합니다 / 방금 2 일 전에 실행했습니다 (권한이없는 사용자로서 rm -r -f *를 실행해야 함)


수락 된 답변에는 이미 모든 정보가 포함되어 있습니다.
Theuni
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.