최근에 루트 사용자의 쉘을 /bin/bash 대신 /sbin/nologin으로 설정하고 sudo 권한이 있는 루트가 아닌 사용자를 사용하여 루트 로그인을 비활성화하는 것이 좋은 생각이라는 것을 읽었습니다.
지금 내 서버에서 이 작업을 수행하고 있는데 로그에 많은 로그인 시도가 표시됩니다. 따라서 루트로 로그인하는 대신 이제 루트가 아닌 사용자로 로그인하고 필요할 때 sudo를 사용합니다.
이것이 어떻게 더 안전합니까? 두 경우 모두 누군가가 비밀번호를 해독하면 모든 명령을 실행할 수 있습니다.
답변1
sudo
제공하여 안전성/보안성 향상책임, 그리고특권의 분리.
여러 사람이 관리 작업을 수행하는 시스템을 상상해 보세요. 로그인 계정이 활성화된 경우 root
시스템은 어떤 사람이 특정 작업을 수행했는지 기록/기록하지 않습니다. 로그에는 root
책임자만 표시될 뿐, root
당시에는 그 사람이 누구였는지 지금은 정확히 알 수 없기 때문이다.
OTOH, 모든 사람이 일반 사용자로 로그인한 다음 sudo
권한을 승격해야 한다면 시스템에 기록이 남게 됩니다.사용자 계정작업이 수행되었습니다. 게다가 이 특별한 특권은사용자 계정sudoers
파일로 관리하고 배포 할 수 있습니다 .
이제 귀하의 질문에 대답하자면, 하나의 사용자 계정을 손상시킨 해커는 해당 계정에 할당된 권한만 얻게 됩니다. 추가적으로, 시스템 로그에는 (희망적으로) 다음과 같은 기록이 있을 것입니다.어느사용자 계정이 도난당했습니다. OTOH, 파일의 권한이 (예 : ) sudoers
로 설정된 간단한 단일 사용자 시스템인 경우 장점은 다음과 같습니다.ALL
%sudo ALL=(ALL:ALL) ALL
책임, 그리고특권의 분리효과적으로 중성화되었습니다.
마지막으로, 지식이 sudo
풍부한 해커가 로그 파일 등을 삭제하여 자신의 흔적을 가릴 수도 있다는 점은 sudo
확실히 만병통치약은 아닙니다. 궁극적으로 우리가 마련한 다른 많은 보호 장치는 sudo
정직한 사람들을 정직하게 유지하는 데 도움이 되지만 부정직한 사람들을 막는 데는 덜 효과적이라고 생각합니다.
답변2
키를 사용하여 SSH를 사용하여 로그인하는 경우 비밀번호가 두 번째 요소입니다. 아직 하나 있어요작은기본 사용자 이름을 사용하지 않는 보호 수준입니다. (다른 사람들이 지적했듯이 이 보호 기능은 컴퓨터의 부하를 줄이고(너무 많은 비밀번호/키를 확인할 필요가 없음) 차단을 허용합니다.)
보안에 미치는 또 다른 주요 영향은 실수로 루트로 무언가를 실행하는 것이 더 어렵다는 것입니다. 따라서 악의적인 손상으로부터 보호할 수 없습니다.
답변3
sudo
다양한 방법으로 보안을 개선하는 데 도움이 됩니다.
- 세분화된 권한을 허용합니다. 또한 다음을
sudo
수행할 수 있습니다.- 사용자가 관리 셸에 쉽게 액세스하는 것을 방지합니다(이로 인해 생각할 수 있는 거의 모든 공격이 더 복잡해집니다).
- 사용자가 실행할 수 있는 명령을 제한합니다.
- 로그인 세션 자체의 다양한 속성을 기반으로 호출할 수 있는 명령을 제한합니다(예: 매우 제한된 SSH 로그인 명령 세트만 허용하지만 물리적 콘솔 로그인에 대한 전체 액세스는 허용).
- 누가 언제 무엇을 했는지 쉽게 알 수 있도록 종이 추적을 제공합니다. 이것은매우시스템이 손상된 후 사후 분석은 시스템이 어떻게 손상되었는지에 대한 더 나은 정보를 제공할 수 있으므로 중요합니다. 이는 쉘 기록 및 기타 로깅에 추가되는 사항입니다.
sudo
루트 계정이나 잘 알려진 관리자 계정 대신 이름을 사용하면 일반 공격을 막을 수 있습니다. 포트 22에서 인터넷에 노출된 SSH 시스템의 인증 로그에 주의를 기울이면 거의 모든 공격이 일반적이며 특정 사용자 이름(root, admin, toor, pi 등)에 대해 무차별 공격을 시도한다는 것을 알 수 있습니다. 관리자 계정과 유사한 "잘 알려진" 이름입니다. 이러한 계정을 전혀 사용하지 않고 대신sudo
일반 사용자로 로그인한 후 권한 상승을 사용하면 공격 표면의 상당 부분을 완전히 제거할 수 있습니다.- 일부 구성(
targetpw
모드(다중 사용자 시스템에서는 사용하면 안 되지만 단일 사용자 시스템에서는 합리적인 선택임) 또는 초기 로그인 시 비밀번호 이외의 다른 것을 사용(예: SSH 비밀번호 키) ))sudo
이는 공격자가 루트 액세스 권한을 얻기 위해 통과해야 하는 두 번째 인증 계층을 제공합니다. - 이는 권한 경계를 명확하게 설명합니다. IOW, 이렇게 하면 의식적으로 그렇게 하도록 선택해야 하기 때문에 필요한 것보다 더 많은 권한을 사용하여 실수로 무언가를 실행하는 것이 훨씬 더 어려워집니다. 이는 결과적으로 사회 공학 공격에 대한 추가 보호 계층을 제공하는 데 도움이 됩니다.
전반적으로 외부 공격을 방지하는 측면에서 이들 중 어느 것도 그다지 중요하지 않습니다(처음 두 가지 사항은거대한내부 나쁜 행위자로부터 보호하기 위해), 이 모든 것은 유용성에 매우 작은 영향을 미치므로 일반적으로 보안을 약간 향상시키기 위해 수행할 가치가 있습니다.
답변4
다른 답변자들은 이미 많은 장점을 제안했지만 저는 다른 장점을 제안하고 싶습니다.심각한 오류에 대한 Sudoers 보호 비율 root
.rm -rf *
다음 으로 실행하는 것은 매우 불행한 일 /
이지만 jshmoe
와 동일한 명령을 실행하는 것만큼 비참하지는 않습니다 root
. (물론 이 특정 예는 기본값 추가로 인해 --preserve-root
이전만큼 비참하지는 않지만 root
여전히 제거됩니다.모두의마지막으로 jshmoe
필요한 것은 쓰기 액세스 권한이 있는 항목을 sudo
지우는 것입니다 . jshmoe
)
sudo
선의로 작업하는 합법적인 사용자가 Enter 키를 누르기 전에 실행하려는 명령을 자세히 살펴보게 만드는 심리적 효과가 있습니다 . 이는 좋은 코드 자키를 실행하는 중요한 시스템이 있는 경우 특히 중요합니다.
sudo
물론 핫코드 라이더가 글쓰기 습관을 갖도록 하는 것보다 시스템 안정성에 더 나쁜 것은 없으므로 마일리지가 다를 수 있습니다.