É possível “esconder” uma conta de / etc / passwd?

2

Um sistema Linux típico não apenas representa os usuários reais do sistema, mas também várias contas do sistema.

Existe algum arquivo como /etc/passwd para daemons ou outros recursos onde uma conta pode ser definida?

Ouvi dizer que é possível camuflar uma conta como conta de serviço, estou tentando encontrar contas como essas em um computador.

    
por RSFalcon7 06.05.2013 / 01:29

4 respostas

8

Usuários de daemon e usuários de carne e osso são listados nos mesmos arquivos. O “arquivo como /etc/passwd para daemons” é /etc/passwd .

Não existe uma definição formal de usuários humanos vs. O kernel não se importa (além de conceder muitos privilégios ao usuário com o UID 0). A maioria dos comandos de administração também não se importa. Algumas diferenças típicas são:

  • Um usuário humano tem um nome real como "John Doe", enquanto um usuário do sistema tem um nome descritivo como "Nasal daemon" ou nenhum.
  • Um usuário humano tem um shell de login real (por exemplo, /bin/sh ou /bin/bash ou /bin/csh . Alguns usuários do sistema têm um shell (quase sempre /bin/sh ), outros não, dependendo de como eles são a ser usado (por exemplo, su foo requer que foo tenha uma casca).
  • Um usuário humano geralmente tem uma senha - mas nem sempre é esse o caso, por exemplo, um usuário somente remoto pode ter apenas uma chave SSH. Observe que nos unices modernos, a senha não está em /etc/passwd , mas em algum outro arquivo, como /etc/shadow .
  • O diretório pessoal de um usuário humano geralmente está em /home (ou algum local específico do site), enquanto o diretório inicial de um usuário do sistema geralmente não está em /home e pode não existir (mas há exceções).
  • A maioria dos sites designa um intervalo de IDs de usuário para usuários do sistema e um intervalo disjunto para usuários humanos. Reservar 100–65533 ou 500–65533 ou 1000–65533 é típico, e a maioria das distribuições é configurada para começar a alocar IDs de usuários reais de 500 ou 1.000.

Nos sites em que as contas são compartilhadas em várias máquinas, geralmente há um servidor central que contém listas de usuários, acessíveis por NIS ou LDAP . A entrada passwd em /etc/nsswitch.conf especifica onde encontrar informações do usuário. É comum ter usuários do sistema no local /etc/passwd e usuários reais do banco de dados em toda a rede, mas às vezes há usuários do sistema no banco de dados em toda a rede (para impor UIDs consistentes, o que facilita a replicação de dados e servidores) e às vezes, há usuários humanos no arquivo local (para permitir que eles efetuem login mesmo quando a rede é operada).

Uma conta acessível a humanos disfarçada como um usuário do sistema normalmente não teria um nome real, mas teria um shell de login e um conjunto de senhas ou uma chave SSH, ao mesmo tempo em que teria um ID de usuário no intervalo do sistema. Na verdade, seria um disfarce melhor usar uma conta do sistema real cuja remoção faria com que algum serviço parasse de funcionar. Mas você não pode ter regras rígidas para detectar possíveis ataques: por definição, os invasores não seguem as regras.

    
por 06.05.2013 / 21:08
2

Não há razão para ter um arquivo de definição de usuário separado. Os usuários do sistema e os usuários reais não são tecnicamente separados, mas organizacionais: pelo intervalo do qual seus UIDs são obtidos. dê uma olhada no arquivo /etc/login.defs . Meu openSUSE tem estas entradas:

SYSTEM_UID_MIN            100
SYSTEM_UID_MAX            499
UID_MIN                  1000
UID_MAX                 60000

As ferramentas de distribuição usam esses valores para separar os dois grupos. Mas se você criou uma conta de usuário com o UID 300, ela provavelmente não será exibida em um menu de login, mas você pode usar essa conta como qualquer outra.

    
por 06.05.2013 / 01:35
1

Se você realmente quer dividir as contas de usuário e sistema (lendo alguns comentários em outras postagens, parece que você está curioso sobre isso), você pode deixar todos os usuários do sistema em files (ou seja, / etc / passwd ) banco de dados e colocar usuários de pessoas em um segundo banco de dados (tipo como se você estivesse fazendo ldap).

Para isso, você pode usar o módulo Berkeley DB NSS (disponível em muitos sistemas através de um pacote extra da glibc chamado nss_db ). Não sei qual SO você está usando, mas este site oferece algumas dicas para o Linux: link

Isto não é para os fracos de coração, pois a documentação não é exatamente abundante, mas pode ser divertido brincar com isso se você quiser aprender mais sobre como esse tipo de coisa funciona (sugestão da @Hauke Laging sobre a implementação o seu próprio também é ótimo).

    
por 06.05.2013 / 05:31
0

A maioria dos daemons são executados como root, alguns (por motivos de segurança, para limitar sua capacidade de danos) são executados como seus próprios usuários. Eles estão listados no arquivo /etc/passwd . A maioria das distribuições limita o UID do "usuário do sistema" a algum valor, como 500 ou 1000, de modo que ele fornece uma pista. Alguns deamons possuem entradas GECOS (descrição do usuário) dizendo "daemon", outras possuem shells estranhas. Mas também existem usuários fantasmas para NFS e outros usos.

    
por 06.05.2013 / 01:39