Installer SAMBA (3.0.14) en chroot

[size=200]TUTO : INstaller SAMBA (3.0.14) en CHROOT (debian sarge)[/size]

[size=150]preparation[/size]
preparez votre firewall pour les port 137-138 en udp 139 et 445 en tcp, suivant les besoins du bords.

la version 3.0.14 de la sarge s’installe, les versions antérieurs possedant des failles importantes, il est préférable d’obtenir toujours la version la plus recente.
durant la configuration, il est demandé si vous voulez utiliser les mots de passe cryptés. c’est indispenssable, notez bien quels sont les fichiers de password, cela servira pour l’emprisonnement.
Pour ma part, le fichier de mot de passe se situe initialement dans:
"/var/lib/samba/passdb.tdb".

Je vais creer le repertoire de chrootage comme suit:

on installera le client smb en local pour les tests avec la commande suivante:

[quote]Utilisation de smbclient

* A partir de la machine Linux, utilisez la commande
  smbclient -L hostname -U username
  en remplacant hostname par différents noms de machines ayant des serveurs SMB - que ce soient des machine Linux ou NT. Et en remplaçant username par des noms d'utilisateurs disponibles sur ces systèmes (wroot, pierre, jacques, jean, ...). Observez les indications concernant les ressources des serveurs.
* Au moyen de la même commande, envoyez un message à partir d'une machine Linux vers une machine Windows NT.
  smbclient -M hostname_cible ou smbclient -I ip_cible
  Après avoir entré la commande, vous pouvez entrer le message. La fin du message se signale par un [Ctrl]-d. La machine Windows NT recevra un message Win Pop up.
  Vous allez vouloir faire l'opération inverse (mais si, je vous connais). Pour ce faire vous allez lancer, sous Windows NT, une commande du genre
  net send <nom de la machine> <mon joli message>
  Rien ne se passe (vous rêviez d'une fenêtre s'ouvrant sur le bureau Linux, perdu ! ). Linux recevra un mail si Samba est configuré pour. Pour ce faire, consultez l'option message command:
            [global] message command=</chemin d'accès absolu/commande> .
	Commande du serveur à exécuter lors de la réception d'un message WinPopup émanant d'un client. Ajoutez le suffixe & au nom de la commande pour qu'un accusé de réception soit émis immédiatement. Accepte toutes les variables %, à l'exception de %u (utilisateur), et supporte les variables supplémentaires %s (nom du fichier contenant les messages), %t (machine destinataire) et %f (expéditeur).
  Il est tout de même possible qu'une fenêtre s'ouvre, pour se faire explorer les commande xmessage et linpopup ... implémentez l'une des possibilités 6.2.

[/quote]

apres l’installation de makejail, on va creer dans /etc/makejail, un fichier d’installation automatique de samba dans sa future prison, on le nommera “/etc/makejail/smb.py”

lancement de makejail:

l’installation se déroule normalement sans encombre.
on ajoute un utilisateur reseau pour les tests

[code]# adduser megs$

smbpasswd -a megs$[/code]

on déplace maintenant les repertoires,
des log, et des libs de samba dans la prison, on y place aussi les fichiers de configuration, tout en creant des liens vers ses repertoires a leurs places initiales.

[code]# mkdir /chroot/smb/dev

mknod /chroot/smb/dev/null c 1 3

mkdir /chroot/smb/tmp

chmod 1777 /chroot/smb/tmp

mv /etc/samba /chroot/smb/etc

ln -s /chroot/smb/etc/samba /etc

mv /var/log/samba /chroot/smb/var/log

ln -s /chroot/smb/var/log/samba /var/log/

mv /var/lib/samba /chroot/smb/var/lib

ln -s /chroot/smb/var/log/samba /var/log/

cp /etc/timezone /chroot/smb/etc

cp /etc/resolv.conf /chroot/smb/etc

cp /etc/pam.conf /chroot/smb/etc

cp /etc/hosts* /chroot/smb/etc

cp /etc/passwd /chroot/smb/etc

cp /etc/group /chroot/smb/etc

cp /lib/libnss_* /chroot/smb/lib[/code]

Pour plus de sécurité, effacez les utilisateurs systemes du fichier passwd, shadow et group, ne laisser que les utilisateurs concernés par samba.

on modifie le fichier /etc/init.d/samba

[size=150]problemes rencontrés[/size]

smbd ne se lance pas et les logs font etat de:
[2006/06/06 11:11:38, 1] auth/auth_util.c:make_server_info_sam(840) User nobody in passdb, but getpwnam() fails!
c’est que vous n’avez pas copier les librairies de resolution de nom /lib/libnss_* dans la prison…

impossible de creer un utilisateur avec “smbpasswd -a USER”
il dit que l’utilisateur est dans la base sam mais qu’il est impossible de lui assigner un mot de passe unix…(ou un truc du genre)… bha en fait copier le /etc/shadow dans la prison et faites le menage dedans.

samba se lance, mais ne s’arrête pas correctement avec le init.d
les démons restent en memoire. j’ai eu cette surprise a chaque redemarrage du serveur, en suivant la methode des liens pour le repertoire /var/run/samba, il semblerais que se lien soit supprimé et remplacé par un repertoire en dur, et le liens diparait, les fichiers pids ne sont donc plus accessible…obliger d’effectuer un montage dans le start de init.d/samba:

#start avant lancement du service
mount -o bind /chroot/smb/var/run/samba /var/run/samba
#stop apres arrêt du service
umount -o bind /chroot/smb/var/run/samba /var/run/samba

Connexion refusé sur le serveur par voisinage reseau
le log “/var/log/samba/log.smbd” fait état de:

C’est le le repertoire temporaire /tmp n’a pas les droits 1777 si vous êtes hors prison, et /chroot/smb/tmp (chmod 1777 tmp) si vous êtes dans la prison.

veillez a mettre a jour les fichiers passwd / shadow /group dans la prison, car le modif ultérieur dans /etc/passwd et shadow, n’affecterons pas celui de la prison et il est hors de question evidement de creer un lien sortant.
peut être un chti coup de cron pour des updates regulières. ou bien lancez la commande d’ajout/chagement d’utilisateur samba en la chrootant.

n.b. : il est evident que les dossiers a partager doivent être dans la prison, monter des repertoires dans la prison est possible mais déconseillé.

maj