보안상의 이유로 / etc / passwd 및 / etc / shadow의 이름을 바꿉니다.


8

서버가 있습니다. 내 서버는 안전하지만 들어온 좋은 해커를 상상해 봅시다. 이제 /etc/passwd와를 살펴볼 수 있습니다 /etc/shadow. 해당 파일의 이름 /etc/passwd을 다음과 같이 바꾸고 싶습니다 /etc/xxanoda.

링크를 만들 수 있다고 생각했지만 해커에게는 쉽게 할 수 ls -l있습니다.

호환성 문제없이 해당 파일의 이름을 바꾸어도 OS가 계속 실행 중이거나 완전히 쓸모가 없습니까? 지식을 추구하기 위해서입니다.


1
모든 사용자 암호를 보유하기 위해 별도의 인증 서버를 사용할 수 있다고 생각합니다. 주 서버는 사용자가 로그인을 시도 할 때 인증 서버에 접속합니다. 인증 서버는 사용자로부터 멀리 떨어져 있습니다 (직접 인터넷에 액세스하지 않음).
ctrl-alt-delor

9
모호한 보안은 전혀 보안이 아닙니다.
Doorknob

이것은 끔찍하고 끔찍하며 끔찍한 생각입니다.
Shadur

답변:


29

파일 시스템 계층 표준 에 대한 유닉스 계열 시스템이 포함되어 /etc/passwd고정 된 위치에서, 및 도구는 결과적으로 보통 거기 찾기 위해 하드 코딩된다. 이론적으로 모든 관련 유틸리티를 다시 컴파일하여 새 위치를 찾을 수 있지만 공격자는 항상 해당 바이너리에서 문자열을 찾아 새 파일을 찾거나 정규식을 사용하여 passwd유사한 내용의 파일을 찾을 수 있습니다 .

shadow파일에 읽기 전용으로한다 root(그리고 아마도라는 그룹 shadow). 침입자가 시스템에 대한 루트 액세스 권한을 얻은 경우, 완전한 제어권을 가지며, passwd / shadow 파일을 읽을 수 있는지 여부는 그 시점과 관련이 없습니다.

예상 한 위치에 파일이없는 것이 도움이 될 수있는 몇 가지 상황이있을 수 있습니다. 예를 들어 누군가가 요청할 수 있도록 잘못 구성된 웹 서버가 http://myserver/../../etc/passwd있는 경우 일반적으로 이러한 종류의 간접적 인 지시는 최소한의 보안 이점을 위해 많은 작업이 필요합니다.


8
마지막 경우 시나리오는 웹 서버를 대신 수정하는 것이 좋습니다 ...
Braiam

그러나 서버 자체의 계정을 가진 모든 사용자는 암호가없고 SSH 키만 있으며 암호 정보는 /etc/passwd어쨌든 저장되지 않기 때문에 괜찮습니다.
Blacklight Shining

12

가장 좋은 방법은 "완전히 쓸모없는"것입니다. (이는 침입자에게 추가적인 장애물을 제공하지 않습니다)

/etc/passwd 계정 이름을 포함하지만 시스템에 대한 셸 액세스 권한이있는 사용자는 계정 이름을 찾을 수 있습니다.

/etc/shadow민감한 정보 (비밀번호 해시)를 포함하지만 루트 만 읽을 수 있습니다. 침입자가 루트 권한을 얻을 수 있다면 어떻게 재난을 겪을 수 있습니까?


1
또한 공격자는 다른 방법을 알 때까지 시스템의 모든 파일에 액세스하고 자신의 사본을 다운로드 할 수 있다고 가정해야합니다.
Bert

4
"재난을 어떻게 철자합니까?" 재난을 요구할 필요가없는 상황에서 아마 더 잘 작동 할 것입니다. : D

9

현대 Unices (그리고 Ubuntu를 포함한 Unix와 같은) /etc/passwd에는 비밀이 없습니다. 새 위치에서 유틸리티를 찾기 위해 몇 개의 유틸리티를 재 구축해야하는지에 따라 이름을 바꾸는 것보다 가치가 없습니다.

/etc/shadow그 파일에는 비밀이 있기 때문에 또 다른 문제이지만 이름을 바꾸면 도움이되지 않습니다. 루트로만 읽을 수 있으므로 해커가 다른 사용자로 시스템에 침입하더라도 파일에 접근하기에는 충분하지 않습니다. 그렇기 때문에 /etc/passwd모든 사람이 읽을 수 있어야 /etc/passwd하지만 루트 만 실제 비밀번호를 얻을 수 있어야하기 때문에 루트 만 읽을 수있는 파일로 비밀번호를 옮겼습니다.

해커 루트를 얻는 경우 이름을 바꾸면 저장되지 않습니다. 간단한 재귀 grep는 해커에게 /etc/shadow유사한 형식 의 파일 목록을 제공 할 수 있으며 해커는 원하는 데이터를 찾기 위해 파일 을 살펴보기 만하면 됩니다. 당신은 그를 최대 몇 시간 지연 시켰으며, 아마도 그보다 적은 시간을 보냈습니다 /etc/shadow.


또한 루트 액세스 권한이 있으면 다른 사람의 비밀번호를 / 필요하지 않습니다. 그는 단지 수 su그가 원하는에 어떤 계정, 또는 그 시스템의 모든 사용자의 암호를 변경할 수 있습니다. 그리고 실제로 사용자가 다른 곳에서 비밀번호를 재사용하는 경우를 대비하여 비밀번호를 원할 경우 수정 된 login바이너리를 업로드 하거나 pam인증 시도를 가로 채고 사용자 이름 / 비밀번호 조합을 릴레이 하는 모듈을 추가 할 수 있습니다 .
Shadur

2

이 파일들의 이름 만 바꿀 수는 없습니다. Linux 시스템의 표준이기 때문에 많은 프로세스와 프로그램이 검색합니다. 할 수있는 일은 서버를 올바른 방식으로 보호하는 것입니다.


보안을 강화하고 싶었고 서버에 둘 이상의 웹 사이트가 있습니다.
Marco Caggiano

2

/etc/passwd/etc/shadow파일 이름을 바꾸는 데 쓸모는 없지만 보안을 강화하려면 PAM (플러그 가능한 인증 모듈)과 NSS (이름 서비스 스위치)를 확인하십시오. 여기처럼

PAM을 사용하여 표준 파일에서 인증 규칙을 읽는 대신 인증 모듈을 추가하여 ldap 또는 데이터베이스와 같은 다른 소스에서 읽을 수 있습니다. 그것을 사용하면 /etc/shadow거의 completley가 제거 될 수 있음을 의미합니다 .

NSS는 표준 파일 ( /etc/passwd, /etc/groups)과 독립적으로 일부 이름 확인 (이 사용자가 속한 그룹 등)을 만들어 PAM을 보완합니다 . 이것을 사용하면 암호 파일에 잠재적으로 루트에 대한 대체 옵션 만 포함될 수 있습니다. SSH 키를 사용하여 루트 로그인의 유효성을 검사하면 섀도 파일 내에 루트 암호가 없어도됩니다 (SSH 연결이 끊어지면 필요할 수 있음).

또는 별도의 데이터베이스 또는 LDAP 호스트를 통해 사용자를 인증하지 않으려면이 옵션을 권장하지 않지만 비표준 파일에서 데이터를 읽는 자체 PAM 및 NSS 모듈을 만들 수도 있습니다.

당신이 그들을 사용하려고 할 때, 알려진 작동하는 인증 계층에 어떤 종류의 폴백을 유지하는 것을 잊지 마십시오. 그렇지 않으면 루트로도 시스템에서 자신을 잠글 수 있습니다.

모든 응용 프로그램이 PAM을 지원하는 것은 아닙니다 (그러나 많은 응용 프로그램이 지원함). 그러나 NSS를 사용하여 PAM을 지원하지 않는 앱에 대한 인증을 구현할 수 있으며 NSS에 대해 읽은 일부 사이트에서는 실제로이 방법을 제안합니다. 그러나 이것은 NSS 모듈이 NSS 인증 계층에 액세스 할 수있는 모든 사람에게 (잠재적으로) 해시 된 암호를 제공한다는 것을 의미합니다. )! 따라서이 방법을 사용하는 경우 항상 NSS를 사용하여 사용자에게 기본 데이터 (예 : 내용 /etc/passwd)를 제공하고 PAM이 인증 계층으로 사용되도록하십시오.

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