루트 액세스 권한이있는 경우 다른 사용자의 비밀번호를 알 수 있습니까?


24

특정 RHEL 시스템에 대한 루트 액세스 권한이있는 사람이 다른 사용자의 비밀번호를 검색 할 수 있습니까?


4
그렇습니다, 그들은 당신이 그것을 당신과 잘 공유 할 수 있습니다 :) 다시 말하면, 당신의 질문은 정확하게 입력되지 않았습니다.
poige

답변:


37

TL; DR : 아니요. 비밀번호는 일반적으로 복구 할 수없는 해시로 저장됩니다.

Linux는 기본적으로 일반 텍스트 비밀번호를 어디에도 저장하지 않습니다 . 그것들은 다양한 알고리즘을 통해 해시되거나 암호화됩니다. 따라서 일반적으로 아니요, 저장된 데이터로는 불가능합니다.

/etc/passwd데이터베이스 이외의 위치에 비밀번호를 저장 한 경우 이를 허용하는 방식으로 비밀번호가 저장 될 수 있습니다. htpasswd파일에는 Wealy 암호화 된 암호가 포함될 수 있으며 다른 응용 프로그램은 다양한 (일반적으로 나쁜) 이유로 약한 해시 또는 일반 텍스트 암호를 저장할 수 있습니다.

또한 사용자 구성 파일에는 여러 가지 이유로 암호화되지 않은 비밀번호 또는 약하게 보호 된 비밀번호가 포함되어있을 수 있습니다. 다른 서비스에서 컨텐츠를 가져 오는 메일을 가져 .netrc오거나 간단한 자동화 된 것에는 비밀번호가 포함될 수 있습니다.

암호가 오래된 약한 알고리즘 (3DES, MD5)으로 해시되거나 암호화되면 변환을 되 돌리는 것이 아니라 데이터를 공격하더라도 암호를 합리적이고 효율적으로 저렴하게 해결할 수 있습니다. (예 : http://project-rainbowcrack.com/ 또는 http://www.openwall.com/john/ 와 같은 것 )

루트이기 때문에 다른 레벨에서 사용자 비밀번호를 공격 할 수도 있습니다. 로그인 바이너리 또는 sudo 또는 PAM의 일부 등을 입력 할 때 비밀번호를 캡처 할 수있는 것으로 바꿉니다.

따라서 루트 액세스 권한을 가지면 일반적으로 다양한 사이드 채널을 통해 사용자 세부 정보를보다 쉽게 ​​얻을 수 있습니다.


1
Wikipedia에서 더 많은 정보 : /etc/shadow, 암호화 해시 함수 , 소금암호 해독
Tim

2
이것은 대부분 좋은 대답이지만 3DES와 MD5는 실제로 다른 알고리즘보다 크게 약하지는 않습니다. 무차별 대입 은 여전히 ​​해시에서 암호를 찾는 유일한 방법입니다 ( 무지개 테이블 은 MD5의 약점이 아니라 모든 알고리즘에 대해 무차별 대입 방법을 가속화하는 방법입니다). 암호의 해시 방법을 향상시키는 것은 느리고 충분한 소금을 사용한다는 것입니다.
Gilles 'SO- 악의를 멈춰라'

13

여기에있는 다른 답변들과 달리,이 질문에 대한 간단한 대답은 "근본이있는 경우"로 끝나는 다른 많은 질문들에 대한 답입니다.

기본적으로 root는 시스템 자체에서 수행 할 수있는 모든 작업을 컴퓨터에서 수행 할 수 있습니다. 시스템은 비밀번호를 승인 할 수 있으므로 root는 충분한 노력으로 비밀번호 또는 사용자 대신 자신의 비밀번호를 승인 할 수 있습니다. 더 중요한 것은 단순히 비밀번호를 변경하거나 사용자가 될 수 있다는 것입니다.

특히 비밀번호는 일반적으로 암호화됩니다. 이것은 일반적으로 일종의 소위 "일방 통행"알고리즘으로, 암호를 확인하는 데 사용할 수있는 숫자 (해시)를 생성하지만 일반적으로 숫자를 되돌리고 암호를 다시 가져 오지 않습니다. 따라서 누군가의 비밀번호를 얻기 위해 파일을 읽는 것만으로는 문제가되지 않습니다.

즉, 쉘 히스토리와 로그인 히스토리를 읽을 수 있습니다. 로그인 히스토리는 사용자 이름 대신 비밀번호를 입력하거나 비밀번호 프롬프트 대신 쉘에 입력했을 가능성이 높습니다. 이 경우 일반 텍스트 여야합니다. 이것은 내가 알고있는 좋은 해결책이없는 텍스트 기반 터미널에서 혼란스럽게 일반적입니다.

그러나 이러한 문제를 제쳐두고도 "단방향"암호화는 실제로는 한 가지 방법이 아닙니다. 그 주위에 일치하는 것을 찾을 때까지 동일한 단방향 프로세스로 암호를 암호화하여 많은 암호 구 조합을 거치는 도구가 많이 있습니다. 그런 다음 액세스 할 수있는 비밀번호를 알고 있습니다 (루트 임에도 불구하고 이미 해당 머신에서 액세스 할 수 있음).

더 나쁜 것은, 레인보우 테이블이 있으며, 위의 프로세스에 대한 사전 계산 된 답변입니다. 사람들은 주어진 암호화 된 비밀번호에서 온 원래의 비밀번호를 이미 생성했습니다. 이를 사용하면 시간이 많이 걸리는 크래킹 시도가 필요없는 간단한 조회입니다.

다시, 루트 수준 액세스는 보호해야합니다. 시스템이 손상되면 전체 시스템과 시스템의 모든 것이 손상됩니다. 이제 모든 사용자에게 개인 정보를 보호하기 위해 더 이상 비즈니스를 신뢰할 수 없음을 알리는 것을 포함하여 다시 시작할 시간입니다. 그리고, 그렇습니다. 그것은 사업을 그만두는 것을 의미 할 수 있습니다.


내 계정에 액세스하는 것은 비밀번호를 얻는 것과 다릅니다. 귀하의 컴퓨터에 사용자 로그인을 허용하고 모든 컴퓨터에 동일한 암호를 사용하는 경우 모든 컴퓨터에 액세스 할 수는 없으며 b / c 컴퓨터의 암호를 변경할 수 있습니다. 하나의 계정에서 잠겼습니다.
emory

또한 중요한 데이터에 암호화 된 파일 시스템을 사용하는 경우 루트 액세스 손상이 다시 시작하는 시간을 의미하지는 않습니다.
emory

@emory 암호화 된 파일 시스템을 사용하고 시스템이 루트로 손상된 경우 암호화 된 파일 시스템을 처리하고 암호화 암호를 읽는 등의 코드를 신뢰할 수 있습니까? 정의상 루트 권한 타협은 시스템의 모든 부분 (커널 바로 아래)이 움켜 잡을 수 있기 때문에 할 수 없다고 말하고 싶습니다.
CVn

@ MichaelKjörling 암호화 된 파일 시스템을 다루는 코드를 신뢰할 수 있습니까? 대부분의 경우 아닙니다. 제 경우에는 그렇습니다. 읽기 전용 미디어에 있습니다. 루트는 쓸 수 없습니다. 로그는 WORM 드라이브로 이동합니다. 똑같이, 나는 열쇠를 뿌리 내리지 않고 아마도 다시 시작할 것입니다.
emory

8

그렇다면 root암호 크래커를 실행할 수 있습니다 /etc/shadow(LDAP 또는 Kerberos가 아닌 로컬 암호를 가정하는 등). 올바른 비밀번호를 선택하고 시스템이 강력한 비밀번호 해싱을 사용하도록 구성된 경우에는 효과적이지 않을 수 있습니다. 그러나 시스템 암호는 일반 텍스트로 저장되지 않습니다. 암호도 직접 사용할 수 없습니다 root.


5

모든 비밀번호는 /etc/shadow파일에 저장 됩니다. 루트 액세스를 사용하여이 파일을 열고 hash value각 사용자 (루트 사용자까지)에 대해이 비밀번호를 볼 수 있습니다 .

암호 해독 소프트웨어가 없으면 이러한 해시 값을 일반 텍스트로 다시 변환 할 수 없습니다.

그러나 여전히 루트 사용자에게 액세스 권한이있는 경우 다음 명령을 사용하여 일반 사용자의 비밀번호를 변경하고 해당 계정에 액세스 할 수 있습니다.

root@localhost$ passwd pradeep

user로 설정하려는 새 암호를 묻습니다 pradeep. 이 방법으로 pradeep의 암호를 변경할 수 있습니다.

이제 다음을 통해 자신의 계정에서 액세스 할 수 있습니다.

root@localhost$ su pradeep

이로 인해 pradeep 사용자로 전환되고 다음과 같은 터미널이 제공됩니다.

pradeep@localhost$


1
pradeep 암호를 변경하지 않아도 "su pradeep"을 수행 할 수 있습니다. 루트 사용자로 "su pradeep"을 수행 할 때 pradeep 암호를 입력 할 필요가 없기 때문에 ...
Wolfy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.