/etc/passwd에서 계정을 "숨길" 수 있습니까?

/etc/passwd에서 계정을 "숨길" 수 있습니까?

일반적인 Linux 시스템에는 시스템의 실제 사용자에 대한 계정뿐만 아니라 다양한 시스템 계정이 있습니다.

/etc/passwd데몬과 같은 파일이 있거나 계정이 정의될 수 있는 다른 수단 리소스가 있습니까 ?

계정을 서비스 계정으로 위장하는 것이 가능하다고 들었는데, 이런 계정을 컴퓨터에서 찾아보려고 합니다.

답변1

데몬 사용자와 육혈 사용자는 동일한 파일에 나열됩니다. " /etc/passwd데몬과 같은 파일 "은 /etc/passwd.

인간 대 시스템 사용자에 대한 공식적인 정의는 없습니다. 커널은 신경 쓰지 않습니다(UID 0을 가진 사용자에게 많은 권한을 부여하는 것 외에는). 대부분의 관리 명령도 상관하지 않습니다. 몇 가지 일반적인 차이점은 다음과 같습니다.

  • 인간 사용자는 "John Doe"와 같은 실제 이름을 갖는 반면, 시스템 사용자는 "Nasal daemon"과 같은 설명적 이름을 갖거나 전혀 갖지 않습니다.
  • 인간 사용자는 실제 로그인 쉘(예: /bin/sh또는 /bin/bash또는 ) 을 가지고 있습니다 /bin/csh. 일부 시스템 사용자는 쉘을 가지고 있고(거의 항상 /bin/sh), 다른 시스템 사용자는 사용 방법에 따라 그렇지 않습니다(예: 쉘이 필요함) su foo.foo
  • 인간 사용자는 종종 비밀번호를 가지고 있지만 항상 그런 것은 아닙니다. 예를 들어 원격 전용 사용자는 SSH 키만 가질 수 있습니다. 최신 unices에서는 비밀번호가 /etc/passwd아닌 /etc/shadow.
  • 인간 사용자의 홈 디렉터리는 일반적으로 아래 /home(또는 일부 사이트별 위치)에 있는 반면, 시스템 사용자의 홈 디렉터리는 일반적으로 아래에 있지 않으며 /home존재하지 않을 수도 있습니다(예외가 있음).
  • 대부분의 사이트는 시스템 사용자를 위한 사용자 ID 범위를 지정하고 인간 사용자를 위한 분리된 범위를 지정합니다. 100~65533 또는 500~65533 또는 1000~65533을 예약하는 것이 일반적이며 대부분의 배포판은 500 또는 1000부터 실제 사용자 ID 할당을 시작하도록 설정되어 있습니다.

계정이 여러 컴퓨터에서 공유되는 사이트에는 일반적으로 다음을 통해 액세스할 수 있는 사용자 목록이 포함된 중앙 서버가 있습니다.국정원또는LDAP. 의 passwd항목/etc/nsswitch.conf사용자 정보를 찾을 수 있는 위치를 지정합니다. 로컬에 시스템 사용자가 있고 /etc/passwd네트워크 전체 데이터베이스에 실제 사용자가 있는 것이 일반적이지만 때로는 네트워크 전체 데이터베이스에 시스템 사용자가 있고(서버 및 데이터 복제를 용이하게 하는 일관된 UID를 적용하기 위해) 때로는 로컬 파일의 인간 사용자(네트워크가 연결되어 있는 경우에도 로그인할 수 있도록 함)

시스템 사용자로 위장한 사람이 접근할 수 있는 계정은 일반적으로 실제 이름이 없지만 로그인 셸과 비밀번호 세트 또는 SSH 키가 있으며 시스템 범위에 사용자 ID가 있습니다. 실제로 제거하면 일부 서비스 작동이 중단되는 실제 시스템 계정을 사용하는 것이 더 나은 변장입니다. 그러나 잠재적인 공격을 탐지하기 위해 엄격하고 빠른 규칙을 가질 수는 없습니다. 정의상 공격자는 규칙을 따르지 않습니다.

답변2

별도의 사용자 정의 파일을 가질 이유가 없습니다. 시스템 사용자와 실제 사용자는 기술적으로 분리되지 않고 UID를 가져오는 범위에 따라 조직적으로 분리됩니다. 파일을 살펴보세요 /etc/login.defs. 내 openSUSE에는 다음 항목이 있습니다.

SYSTEM_UID_MIN            100
SYSTEM_UID_MAX            499
UID_MIN                  1000
UID_MAX                 60000

distro 도구는 이러한 값을 사용하여 두 그룹을 구분합니다. 그러나 UID 300으로 사용자 계정을 생성한 경우 로그인 메뉴에 표시되지 않을 수 있지만 다른 계정과 마찬가지로 해당 계정을 사용할 수 있습니다.

답변3

사용자 계정과 시스템 계정을 정말로 분리하고 싶다면(다른 게시물의 댓글 중 일부를 읽어보면 이에 대해 궁금해하실 것 같습니다), 모든 시스템 사용자를 files(예: /etc/passwd) 데이터베이스에 남겨두고 사람들 사용자를 넣을 수 있습니다. 두 번째 데이터베이스에(LDAP를 수행하는 것과 유사)

이를 위해 Berkeley DB NSS 모듈(라는 추가 glibc 패키지를 통해 많은 시스템에서 사용 가능)을 사용할 수 있습니다 nss_db. 어떤 OS를 사용하고 있는지 잘 모르겠지만 이 사이트는 Linux에 대한 몇 가지 통찰력을 제공합니다.http://www.linuxfromscratch.org/hints/downloads/files/nss_db.txt

문서가 충분하지 않기 때문에 이것은 희미한 마음을 위한 것이 아니지만 이러한 종류의 작업이 어떻게 작동하는지 자세히 알아보고 싶다면 가지고 놀아보는 것이 재미있을 수 있습니다(직접 구현하는 것에 대한 @Hauke ​​Laging의 제안은 다음과 같습니다). 훌륭해요).

답변4

대부분의 데몬은 루트로 실행되며 일부(보안상의 이유로 피해 용량을 제한하기 위해) 자체 사용자로 실행됩니다. 파일 에 나열되어 있습니다 /etc/passwd. 대부분의 배포판에서는 "시스템 사용자"의 UID를 500 또는 1000과 같은 특정 값으로 제한하므로 이것이 단서를 제공합니다. 일부 데몬에는 "daemon"이라는 GECOS(사용자 설명) 항목이 있고 다른 데몬에는 이상한 쉘이 있습니다. 그러나 NFS 및 기타 용도로 사용되는 가상 사용자도 있습니다.

관련 정보