Pourquoi l'utilisateur «bin» a-t-il besoin d'un shell de connexion?


27

Lors d'un audit /var/log/auth.logsur l'un de mes serveurs Web publics, j'ai trouvé ceci:

Jan 10 03:38:11 Bucksnort sshd[3571]: pam_unix(sshd:auth): authentication failure; 
    logname= uid=0 euid=0 tty=ssh ruser= rhost=61.19.255.53  user=bin
Jan 10 03:38:13 Bucksnort sshd[3571]: Failed password for bin from 61.19.255.53 
    port 50647 ssh2

À première vue, cela ressemble à un sshspam de connexion typique de pirates aléatoires; cependant, en regardant de plus près, j'ai remarqué autre chose. La plupart des /var/log/auth.logentrées qui ont échoué disent invalid useren elles, comme celle-ci:

Jan  9 10:45:23 Bucksnort sshd[3006]: Failed password for invalid user sales 
    from 123.212.43.5 port 10552 ssh2

Ce qui est inquiétant à propos de ce message de connexion échoué, binc'est qu'il s'agit d'un utilisateur valide dans /etc/passwdlequel il a même un shell de connexion:

[mpenning@Bucksnort ~]$ grep ^bin /etc/passwd
bin:x:2:2:bin:/bin:/bin/sh

Je pensais avoir couvert les tous les noms d' utilisateur par défaut qui pourrait se connecter à distance quand je désactivé PermitRootLogindans /etc/ssh/sshd_config; découvrir cette entrée a ouvert de nouvelles possibilités dans mon esprit paranoïaque. Si les services fonctionnaient sous bin, il est possible à distance que quelqu'un insère en quelque sorte une clé ssh dans le binrépertoire de l' utilisateur à partir d'un service en cours d'exécution sur la boîte, donc je voudrais désactiver complètement la connexion pour l' binutilisateur, si possible.

Des questions

  • Ce serveur est distant et coûteux à réparer (c'est-à-dire que je paierai des mains distantes pour brancher un KVM, plus la location de KVM). J'essaie de comprendre ce que je pourrais casser si je change l' /etc/passwdentrée pour binressembler à ceci:

    bin:x:2:2:bin:/bin:/bin/false

  • J'ai exécuté les commandes suivantes en essayant de comprendre ce qui binest nécessaire pour ... Cependant, ces commandes n'ont fourni aucun fichier et je n'ai trouvé aucun processus appartenant à bin. Que fait l' binutilisateur de toute façon?

    $ sudo find / -group bin

    $ sudo find / -user bin

  • Y a-t-il d'autres utilisateurs qui devraient configurer leurs shells de connexion /bin/false? Pour votre information, je suis déjà /bin/falsesur www-data.

  • Suis-je trop paranoïaque?

J'utilise Debian, si cela importe.


Une question connexe est unix.stackexchange.com/questions/485505 .
JdeBP

Réponses:


22

Un utilisateur possédant un shell valide et aucun mot de passe peut toujours se connecter par des méthodes non basées sur un mot de passe, la plus courante étant une clé ssh. Un shell valide est nécessaire pour exécuter les tâches cron. Un shell valide est également nécessaire pour su bin -c 'wibble'fonctionner (sous Linux au moins, su bin -s /bin/sh -c 'wibble'fonctionnera également).

Dans le cas de bin, la plupart des systèmes n'exécutent jamais de commande comme binen fonctionnement normal, donc définir le shell /bin/falseserait correct.

Il n'y a aucun risque d'attaque directe permettant binde se connecter via SSH, car cela nécessiterait de créer en /bin/.ssh/authorized_keystant qu'utilisateur binou en tant que root. En d'autres termes, la seule façon d'entrer est d'être. Cependant, avoir un shell valide augmente le risque de mauvaise configuration. Il peut également permettre certaines attaques à distance avec des services autres que SSH; par exemple, un utilisateur signale qu'un attaquant pourrait définir un mot de passe à daemondistance via Samba, puis utiliser ce mot de passe pour se connecter via SSH.

Vous pouvez boucher le trou SSH en répertoriant les noms des utilisateurs du système dans une DenyUsersdirective /etc/ssh/sshd_config(malheureusement, vous ne pouvez pas utiliser une plage numérique). Ou, à l'inverse, vous pouvez mettre une AllowGroupsdirective et autoriser uniquement les groupes qui contiennent des utilisateurs physiques (par exemple, userssi vous accordez à tous vos utilisateurs physiques cette appartenance à un groupe).

Il y a des bogues déposés sur ce problème dans Debian ( # 274229 , # 330882 , # 581899 ), actuellement ouverts et classés comme «liste de souhaits». J'ai tendance à convenir qu'il s'agit de bogues et que les utilisateurs du système devraient avoir /bin/falseleur shell à moins qu'il ne semble nécessaire de faire autrement.


6

Vous n'avez pas à vous en préoccuper en tant qu'utilisateurs. Ce sont des «utilisateurs» au sens de groupes de sécurité, et non des utilisateurs au sens de «se connecter et utiliser» des personnes. Si vous regardez dans "/ etc / shadow", vous verrez que tous ces "utilisateurs" n'ont pas de mots de passe ("x" ou "!" Au lieu d'un long hachage salé). Cela signifie que ces utilisateurs ne peuvent pas se connecter, quoi qu'il arrive.

Cela dit, je ne sais pas si c'est une bonne idée de changer "/ bin / sh" en "/ bin / false" pour tous ces utilisateurs. Étant donné que les programmes s'exécutent sous ces groupes, il peut ne pas leur permettre d'exécuter les commandes dont ils ont besoin. Je les laisserais comme "/ bin / sh".

Vous n'avez pas à vous soucier de ces utilisateurs. Ne vous souciez que des utilisateurs que vous créez (et de ceux avec des hachages dans "/ etc / shadow")


1
Bon point sur l'absence de hachage /etc/shadow, mais si un service fonctionne en tant qu'utilisateur, il est théoriquement possible pour quelqu'un d'insérer une sshclé de connexion, non?
Mike Pennington

Seulement s'ils étaient déjà connectés à votre compte avec des privilèges root ... dans ce cas, ces utilisateurs sont le moindre de vos soucis :-P
Chris

Je ne suis pas sûr d'être d'accord avec toutes les contraintes que vous venez d'énumérer. Si c'était vrai, alors les rpcdports ouverts ne seraient pas un problème; cependant, j'ai personnellement été témoin des résultats d'un exploit à distance sur une ancienne machine Solaris où l'attaquant a eu accès via un rpcexploit sur la boîte. rhostsa été activé et accessible en écriture par cet rpcutilisateur (je ne me souviens plus de détails ... c'était il y a des années) ... De même, s'il peut créer un ~/.ssh/authorized_keyspour un utilisateur qui peut se connecter, cela semble toujours être un risque (même sans mot de passe /etc/shadow)
Mike Pennington

Oui, mais cet exploit n'était pas via SSH. Les programmes s'exécutent généralement sous leur propre utilisateur (comme vous l'avez dit). Un exploit dans un programme (par exemple, un exploit de dépassement de tampon) peut obliger l'utilisateur malveillant à accéder au shell auquel ce programme a accès. Cependant, ce programme a besoin de cet accès pour faire tout ce que ce programme est censé faire (sinon il ne peut pas accéder aux choses dont il a besoin). C'est pourquoi il est important de s'assurer que les autorisations sont correctement définies. Un exploit dans le démon rpc est un gros problème, qui peut être résolu en mettant à jour le logiciel (ou en le restreignant).
Chris

1
Désolé, j'ai manqué de place. Changer le shell auquel un programme peut accéder DOIT résoudre ce problème, mais cela pose plus de problèmes avec ce que le programme est censé faire. Je pensais que vous vouliez dire à l'origine qu'un utilisateur malveillant pouvait se connecter via cet utilisateur, ce qu'il ne peut pas (à moins qu'il ne définisse une clé, je crois, comme vous l'avez dit). Vous pouvez résoudre ce petit problème en, dans sshd_config, mettez "AllowUsers <username> <username> ..." pour n'autoriser que l'accès SSH à des utilisateurs spécifiques.
Chris

1

Je pense que ce n'est pas un problème, car pour configurer une clé publique SSH dans le binrépertoire personnel de ( /bin), l'attaquant devrait avoir un accès root au système de fichiers, ce qui signifie que vous êtes de toute façon vissé.

Si vous le souhaitez, vous pouvez désactiver toutes les méthodes d'authentification pour l' binutilisateur dans la configuration de sshd en utilisant le MatchUserbloc.

Cela dit, il semble que l'utilisateur bin ne soit pas utilisé sur les systèmes modernes dérivés de Debian et soit purement un clin d'œil à la tradition ou soit conforme à certaines normes.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.