# TaBr : hébergement de services à taille humaine
       
       Voici un recueil d'outils permettant de gérer les inscriptions à un serveur.
       
       Téléchargement : 
 (BIN) tabr.tgz
       
       Services actuellement gérés:
       
       * mail (smtpd + dovecot)
       * xmpp (prosody)
       
       Un dossier ''/var/tabr-data/'' (variable "data" dans tabr.conf) contiendra un fichier par utilisateur contenant les codes de récupération hachés.
       
       Ce dossier appartiendra et ne sera lisible que à/par un utilisateur dédié : ''_tabr_admin''.
       
       Les utilisateurs appartiennent à un groupe commun ''_tabr_users'', ce qui pourra simplifier la gestion si un accès SSH est envisagé. Il s'agit de réels utilisateurs système, ce qui impose une limite à leur nombre maximum : 2147483647 (y a de la marge).
       
       ## Mise en place
       
       Création de groupes et d'utilisateurs dédiés. _tabr_admin n'a pas de dossier personnel ni de shell, il ne servira qu'à lancer des commandes sans être root via doas.
       
       ```
       groupadd _tabr_users
       useradd -s /sbin/nologin -m -d /var/_tabr_admin _tabr_admin
       install -m 0700 -o _tabr_admin -g _tabr_admin -d /var/_tabr_admin/tabr-data
       install -m 0700 -o _tabr_admin -g _tabr_admin -d /var/_tabr_admin/tabr-data/instructions
       ```
       
       La modification de mot de passe sera gérée par l'user _tabr_admin, il faut donc configurer doas:
       
       ```
       cat >> /etc/doas.conf << EOF
       permit root
       # TaBr admin need to change passwords
       permit nopass _tabr_admin cmd /usr/sbin/useradd
       permit nopass _tabr_admin cmd /usr/sbin/usermod
       permit nopass _tabr_admin cmd /usr/sbin/userdel
       permit nopass _tabr_admin cmd /usr/local/sbin/prosodyctl
       ```
       
       Les messages envoyés à _tabr_admin peuvent être redirigés vers root:
       
       ```
       echo "_tabr_admin:  root" >> /etc/mail/aliases
       newaliases
       ```
       
       Un fichier de configuration est attendu à /etc/tabr.conf, vous devriez le configurer après l'installation.
       
       ```
       vi /etc/tabr.conf
       ```
       
       La commande qrencode doit être disponible pour tabr_adduser:
       
       ```
       # pkg_add libqrencode
       ```
       
       ## Installation
       
       Les différents scripts et outils peuvent être installés avec la commande ''make install''.
       
       Vous voudrez probablement auparavant ajuster la configuration du script cgi en éditant le fichier ''config.h'' du dossier ''tabr_chpw_cgi''.
       
       ## Utilisation
       
       Les différents scripts sont supposés être appelés en tant que _tabr_admin. Pour cela, doas est là.
       
       ## Description des outils
       
       ### tabr_adduser
       
       ```
       doas -u _tabr_admin tabr_adduser nouvel_utilisateur
       ```
       
       Ajout d'un nouvel utilisateur du si3tch TaBr.
       
       * Vérification que l'user n'existe pas
       * Création de l'user avec mot de passe aléatoire
       * Création du compte xmpp
       * Enregistrement de la phrase de récupération dans un fichier après passage à encrypt.
       * Génération fiche avec instructions et QRcode contenant phrase de récupération. Cette fiche est envoyée à _tabr_admin qui peut la transmettre de la façon qu'il préfère à l'utilisateur.
       
       ### tabr_chpw.cgi
       
       CGI pour demander une modification de mot de passe pour un utilisateur. Un délai d'attente avant de répondre et un captcha est prévu pour limiter les abus. Il profite de unveil et pledge pour éviter les escalades. Il se configure en éditant le fichier ''config.h'' situé dans le dossier ''src/chpw_cgi''.
       
       * Affichage d'un formulaire avec user, code de recupération, nouveau pw demandé
       * Enregistrement de la demande dans un fichier txt portant le nom de l'utilisateur dans un dossier dédié à cet effet.
       
       httpd doit être configuré pour appeler le cgi:
       
       ```
       # rcctl enable slowcgi
       # rcctl start slowcgi
       # cat /etc/httpd.conf
       [...]
       server "example.com" {
           [...]
           location "/chpw" {
               root "/cgi-bin/tabr_chpw.cgi"
               fastcgi
           }
       }
       # rcctl reload httpd
       ```
       
       ### tabr_passwd
       
       ```
       doas -u _tabr_admin tabr_passwd /var/www/tabr_chpw_requests/
       ```
       
       * Lecture des fichiers de demande de changement de mot de passe.
       * Alerte _tabr_admin qu'une demande de changement a eu lieu
       * Réalisation des changements. doas doit donc être correctement configuré.
       
       Une tâche cron de _tabr_admin appelle le script qui regarde tous les fichiers éventuellement créés par tabr_chpw.cgi:
       
       ```
       # crontab -u _tabr_admin -e
       */1 * * * * /usr/local/sbin/tabr_passwd /var/www/tabr_chpw_requests
       ...
       ```
       
       * vérifie que l'user existe
       * vérifie que le code de récupération de l'user correspond
       * lance le changement de pw pour les différents services
       * prévient l'admin de la tentative/réussite de changement.
       
       ### tabr_deluser
       
       Script qui supprime l'utilisateur et son fichier de récupération
       
       ---
 (DIR) /