J'essaie de configurer une prison ssh-chroot sur l'un de mes serveurs NAS. Le système fonctionne sur NAS4Free (qui est basé sur nanobsd). L'utilisateur ne doit pouvoir exécuter qu'une seule commande, qui est un script bash qui ouvre ssh sur un autre serveur et y exécute une commande.
Pour configurer le chroot, j'ai ceci dans ma configuration sshd.
Match User op
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
Le script contient cette ligne :
ssh -i /.ssh/id_rsa [email protected]$externalresource -t "/mnt/storage/backup/run_project.sh '$1' '$2'"
Je peux me connecter à ce chroot en utilisant ssh, mais lorsque j'exécute le script, l'erreur suivante s'affiche lorsque j'essaie d'exécuter la commande ssh.
Couldn't open /dev/null: Operation not supported
La même chose se produit lorsque j'essaie d'exécuter ssh plain dans le chroot
[I have no [email protected] /]$ ssh
Couldn't open /dev/null: Operation not supported
/dev/null ressemble à ceci :
$ ls -la dev/
total 8
drwx--x--x 2 root staff 512 Nov 29 18:16 .
drwxr-xr-x 8 root staff 512 Nov 29 18:06 ..
crw-rw-rw- 1 root staff 0x18 Nov 29 18:16 null
Sans les autorisations 666, j'obtiens bien sûr une erreur /dev/null autorisation refusée.
J'ai créé dev/null en utilisant
mknod dev/null c 2 2
J'ai essayé de trouver une explication pour laquelle l'opération de retour /dev/null n'est pas autorisée, mais je n'ai rien trouvé d'utile.
Quelqu'un pourrait-il expliquer comment résoudre ce problème ?
Réponse acceptée :
J'ai créé dev/null en utilisant
mknod dev/null c 2 2
Vos connaissances sont dépassées. Les choses ne fonctionnent plus de cette façon, maintenant que NAS4Free est basé sur les goûts de FreeBSD 10 et 11. (Ce ne sont pas non plus les numéros de périphérique pour le périphérique nul de toute façon.) Lisez le mknod
Manuel. Vous pouvez toujours exécuter mknod
pour créer des nœuds de périphérique dans un disque réel ou un système de fichiers RAM, mais les nœuds que vous créez seront pratiquement totalement inutiles. Comme vous pouvez le voir, le noyau ne vous permet pas d'ouvrir des périphériques avec eux.
C'est pourquoi dans les prisons - les prisons réelles, celles fournies avec le système d'exploitation, pas de simples environnements chrootés que l'on peut configurer avec sshd_config
— on obtient les fichiers du périphérique en montant un devfs
instance au sein de la prison. C'est aussi pourquoi les prisons ont des boutons pour contrôler si devfs
peut être monté et quel jeu de règles devfs s'y applique.
Si vous voulez un /dev/null
dans votre environnement racine modifié, vous devrez utiliser mount_nullfs
pour faire le réel /dev
arbre visible dans la racine modifiée. Si vous utilisez une prison authentique, configurez-la simplement pour monter un devfs sur /dev
.
Si vous utilisez une prison de bonne foi, vous la configurez bien sûr pour qu'elle exécute sshd
à l'intérieur de la prison , écoutant l'adresse IP de la prison et activé en tant que service dans la prison /etc/rc.conf
de manière normale.
Autres lectures
mknod
. Manuel FreeBSD 11.0.devfs
. Manuel FreeBSD 11.0.devfs.rules
. Manuel FreeBSD 11.0.- Documentation : Tutoriel :Prisons. Wiki NAS4Free.
- Matteo Riondato. "Prisons". Manuel FreeBSD .
- Scott Robb (2015-03-04). Jailles FreeBSD .