루트 이름을 바꾸는 방법은 무엇입니까?

루트 이름을 바꾸는 방법은 무엇입니까?

바꾸는 것이 좋은 생각은 아니지만 단지 재미를 위해서입니다. ~에 따르면이것/etc/passwd에서 항목을 변경한 후에도 /etc/shadow여전히 몇 가지 문제가 있습니다 /etc/sudoers. 어떤 제안이 있으십니까?

답변1

이론적으로 루트의 "이름을 바꾸는" 데 필요한 것은 루트 /etc/passwd를 변경하는 것뿐입니다. /etc/shadow이 문제는 거의 모든 기존 Unix 소프트웨어가 사용자 이름 "root"가 존재하고 그것이 수퍼유저(메일 별칭, 다양한 데몬, cron...)라고 가정하기 때문에 발생합니다.

정말로 시도해보고 싶다면 find /etc -type f -exec grep -l root {} +변경해야 할 모든 구성 파일의 목록을 찾는 것이 좋은 시작이어야 합니다. 하지만 말씀하신 것처럼 거의 모든 가능한 경우에 이는 매우 나쁜 생각입니다.

편집하다또 다른 생각 – 아직 하지 않았다면 (당신은~해야 한다/etc/aliases예) 기존 항목 root과 사용자 이름 또는 올바르게 평가된 이메일 주소를 포함했는지 확인하세요 . 예를 들어, 자동화된 시스템 전반의 많은 작업은 전통적으로 해당 시스템 운영을 담당하는 시스템 관리자의 별칭이었던 cron이메일을 통해 결과를 보냅니다 .root

답변2

이 모든 것은 두려움을 조장하는 것이며 "이러지 마세요!"라고 말하는 것은 말도 안됩니다. 예, 한 번에 잘못 작성된 스크립트가 많이 깨졌을 수도 있지만 적어도 표준 배포판에서는 더 이상 일반적이지 않습니다.

Linux 서버의 하위 집합에서 루트 계정의 이름을 바꾸라는 지시를 받았습니다. 그래서 이 작업을 올바르게 수행하는 방법을 조사한 후 "이 작업을 수행하지 마십시오!"라는 게시물을 많이 발견했습니다. 이 작업을 선택하면 "나쁜 일"이 발생한다는 무서운 경고가 많이 있습니다. 그러나 일어날 수 있는 "나쁜 일"에 대한 구체적인 예를 찾지 못했습니다.

그럼 다시 돌아가서 내가 어디에 있는지, 그리고 어떻게 여기까지 왔는지 설명하겠습니다. 우리는 PCI 호환 환경을 구축하고 있으며 이러한 "요구 사항"을 충족하는 데 도움이 되는 도구 중 하나는 루트, 관리자 및 게스트 계정의 이름을 다른 계정으로 바꿔야 한다고 알려줍니다. PCI에 대한 교육을 받지 않은 사용자의 경우 지침을 따르도록 선택하거나 지침을 따르지 않거나 따르지 않기로 선택한 이유와 시스템 보안을 유지하기 위해 적용해야 하는 완화 전략을 문서화할 수 있습니다. 따라서 대부분의 장소에서 루트 계정의 이름을 바꾸지 않는 이유를 문서화할 것이라고 생각합니다. 그러나 우리 그룹에서는 문제 없이 Windows 관리자 계정의 이름을 바꿀 수 있다면 Linux 루트 계정의 이름도 바꾸기로 결정했습니다.

나는 "모호함을 통한 보안" 주장을 잘 알고 있습니다. 루트 계정 이름을 변경하는 것만으로는 실제로 보안이 크게 향상되지 않으며 SSH에서 루트를 비활성화해야 한다는 것 등을 알고 있습니다. 알아요, 그게 요점이 아닙니다. 더 듣고 싶지 않습니다. 나는 또한 "하늘이 무너지고 있다"는 경고에도 관심이 없습니다. 나는 다음과 같은 진술을 찾고 있습니다: ">이 나쁜 일<은 >이 표준 패키지<에 일어날 것입니다(당신이 >이것을 하지 않으면<).

지금까지 3개의 CentOS(RHEL) 시스템이 있고 루트 계정 이름을 바꾸는 데 문제가 없는 것 같습니다. 내가 한 일은 다음과 같습니다. /etc/passwd, /etc/shadow, /etc/group 및 /etc/gshadow에서 계정 이름을 변경했습니다. 그런 다음 /etc/에서 root라는 이름을 찾고 root가 rojotoro라는 새 계정 이름의 별칭이 되도록 postfix 별칭 파일을 수정합니다. (다른 이메일 시스템에서도 유사한 작업을 수행해야 합니다). 또한 자동으로 생성되는 파일을 누가 소유해야 하는지 설명할 때 logrotate의 일부 구성을 변경해야 한다는 사실도 발견했습니다. 이것이 제가 지금까지 변경한 모든 것입니다.

나는 많은 init.d 스크립트를 보았지만 아무 것도 변경하지 않았으며 시작 시 모든 것이 잘 돌아가는 것 같습니다. sudo를 사용할 때 예를 들어 "sudo -u rojotoro vim /etc/passwd"와 같이 새 계정을 지정해야 했지만 실제로 sudoers 파일에서 아무것도 변경할 필요가 없었습니다. 우리가 사용하고 실행 중인 selinux에 몇 가지 문제가 있을 것으로 예상하지만 지금까지는 시스템을 건드릴 필요가 없었습니다.

또한 mkdev 또는 mkfs 스크립트를 조정해야 할 수도 있다는 것을 알 수 있지만 사용할 계획이 없으므로 필요한 만큼 검토하지는 않습니다.

변경하기가 정말 쉽고 selinux 지원 시스템에 나쁜 영향을 미치지 않는다면 왜 계속해서 두려움을 퍼뜨리나요?

답변3

제 생각에는 가장 쉬운 방법은 UID 0을 /root집으로 사용하여 새 사용자(별칭)를 만드는 것입니다.

루트의 기본 셸을 /bin/false또는 /sbin/nologin(아무도 로그인할 수 없지만 시스템에서는 계속 사용함)로 전환하고 생성한 새 별칭에 로그인해 보는 것은 어떨까요?

razvan@naboo ~ $ head -2 /etc/passwd
root:x:0:0:root:/root:/bin/nologin
root2:x:0:0:root:/root:/bin/bash
razvan@naboo ~ $ su -
Password:
su: Authentication failure
razvan@naboo ~ $ su root2
Password:
naboo razvan # whoami
root

루트의 쉘을 nologin으로 변경하면 sudo, mail 또는 ftw가 손상되지 않습니다.

답변4

Windows와 달리 Linux는 현재 루트 이름을 쉽게 바꿀 수 없습니다. 그렇지 않으면 향후 알 수 없는 문제가 발생할 수 있습니다.

원격 또는 로컬 루트 로그인을 비활성화하는 것은 계정 루트를 적극적으로 비활성화하므로 더 안전한 방법입니다! UBUNTU는 기본적으로 이를 수행하고 루트 액세스 대신 sudo를 강제합니다.

기본적으로 루트 계정은 더 이상 시스템에 로그인하는 데 사용할 수 없기 때문에 누구도 루트 계정을 사용하여 시스템을 공격할 수 없습니다!

모든 콜드 부팅에서 UID 지역화를 방지하기 위해 루트 계정 이름을 쉽게 수정하고 설치 시 UID를 무작위로 생성하는 표준 방법을 만드는 것이 좋지만 아직은 존재하지 않습니다.

/etc/passwd를 조정하고 root:x:0:0:root:/root:/bin/nologin을 수정합니다.

비상용으로만 백업 관리자 계정을 만드세요! Fallbackadmin:x:0:0:root:/root:/bin/bash

모든 관리자에 대해 sudo를 구현하면 변경 로그 감사를 구현하여 누가 변경했는지 정확하게 추적하여 책임을 물을 수 있습니다.

이는 기본 관리자/게스트 계정을 비활성화하고 단일 비상 사용 관리자 계정을 생성하는 PCI US Gov 요구 사항을 구현합니다.

중앙 집중식 AAA가 구현되지 않은 경우 감사를 위해 로그를 보관하는 한 가지 방법은 sudo 계정 액세스 권한이 있는 모든 사용자로부터 터미널 기록을 수집하는 것입니다.

관리자 전용 계정을 구현하는 한 가지 해결 방법은 사용자 전용 계정과 sudo 지원 계정을 만든 다음 사용자가 sudo 지원 계정으로 su를 실행하여 관리 액세스 권한을 얻도록 하는 것입니다.

더 나은 보안을 원할 경우 스마트 카드 인증을 구현할 수도 있습니다. 2단계 인증을 위한 US Common Access Card CAC 솔루션과 비교하여 GNU/Linux용 솔루션이 있습니다.

관련 정보