Script d'enregistrement SSH

2

Quelqu'un pourrait-il écrire ou m'aider à rédiger un script bash qui aurait les effets suivants:

Un nouvel utilisateur se connecte à mon serveur FreeBSD et se connecte via SSH avec certaines informations d'identification telles que 'enregistrement d'utilisateur, enregistrement de passe' ou quelque chose de similaire. Il est accueilli avec une bannière lui indiquant quoi faire ensuite et un script est lancé pour demander à l'utilisateur de son identifiant d'étudiant. Ensuite, un nouvel utilisateur est créé avec un mot de passe aléatoire et l'ID fourni. Un courrier électronique est envoyé à [email protected] contenant le mot de passe (en tant que méthode de vérification de l'étudiant). Après cette procédure, l’étudiant a un nouveau compte limité sur mon serveur avec l’identifiant fourni et un mot de passe aléatoire et modifiable.

L'idée est de faire un script qui est souvent utilisé dans l'enregistrement MUD ou la création de comptes shell.

Je suppose que le script doit être exécuté lors de la connexion, stocker les informations d'identification fournies dans un champ, puis les transmettre à une commande sudo'ed adduser. Je n'ai qu'une compréhension de base des scripts Unix et apprécierais toute aide.

MODIFIER:

Ok, j'ai donc essayé quelque chose par moi-même:

#! /usr/local/bin/bash

clear
echo "--------------------------------------------------"
echo "                                                  "
echo "      Welcome to FreeBSD community server!        "
echo "                                                  "
echo "--------------------------------------------------"
echo
echo To create a new account enter your album number:
read ALBUM


if [ -d "/home/$ALBUM"  ]; then
        echo ""
        echo "User already exists!"
        echo ""
read
exit

else
        PASSWORD=`cat /dev/urandom |tr -cd A-Za-z0-9 | head -c 8`
        echo "Your FreeBSD server password is:

        $PASSWORD

        If you did not request one, ignore this message." | mail -s "Auth Credentials" [email protected]

        echo ""
        echo "Thank you, a new user has been created and a mail containing your password"
        echo "was sent to [email protected]"
        echo ""

        sudo pw useradd $ALBUM -d /home/$ALBUM -s /usr/local/bin/bash -m
        echo $PASSWORD | sudo pw mod user $ALBUM -h 0


read
exit
fi

Ok, c'est ce que je suis venu avec. Aucune suggestion? L'utilisateur par lequel le script est exécuté est un sodoer avec nopasswd pour utiliser l'outil pw. En outre, le script est autoran avec 'source'.

Halik
la source
1
Demander généralement à quelqu'un d'écrire quelque chose pour vous n'est pas bien vu ici. Nous ne sommes pas une bande de codeurs à la location. Cependant, si vous commencez à écrire votre script et rencontrez des problèmes, nous serons heureux de vous aider.
n0pe
J'ai été encouragé par une aide antérieure que j'ai reçue. J'écrirais volontiers mon propre scénario si je savais même par où commencer.
Halik
Puis-je me voter? : & gt;
Halik

Réponses:

1

Vous pouvez essayer d'écrire un script simple avec lequel vous remplaceriez le shell standard pour l'utilisateur d'enregistrement (dans / etc / passwd). Ce script invoquerait un script d'enregistrement simple via sudo (l'ajout d'un nouvel utilisateur nécessitera un utilisateur privilégié). Considérez les problèmes de sécurité de cette approche - c'est juste une idée, je ne l'ai pas essayée.

Martin Vejmelka
la source
0

Vous devez faire très attention lors de la vérification de l'entrée de l'utilisateur et de l'utilisation de cette entrée, afin d'éviter toute intrusion malveillante dans votre système. Par exemple, que se passe-t-il si l'utilisateur parvient à incorporer ":", des nouvelles lignes ou des backticks dans son nom d'utilisateur?

En outre, vous devriez peut-être envisager d'exécuter votre script newuser sans privilèges root. Ainsi, il ne peut pas modifier /etc/passwd, mais aurait besoin de vous envoyer les informations d’enregistrement par courrier électronique (ou quelque chose de similaire).

Envisagez également de lancer l'enregistrement sshd processus dans une prison ou dans un environnement de machine virtuelle pour minimiser les conséquences d’une intrusion. Ce ne sont que des suggestions.

maxelost
la source
0

Pour mémoire, je suis allé avec:

    #! /usr/local/bin/bash

clear
echo "--------------------------------------------------"
echo "                                                  "
echo "      Welcome to FreeBSD community server!        "
echo "                                                  "
echo "--------------------------------------------------"
echo
echo To create a new account enter your album number:
read ALBUM


if [ -d "/home/$ALBUM"  ]; then
        echo ""
        echo "User already exists!"
        echo ""
read
exit

else
        PASSWORD=`cat /dev/urandom |tr -cd A-Za-z0-9 | head -c 8`
        echo "Your FreeBSD server password is:

        $PASSWORD

        If you did not request one, ignore this message." | mail -s "Auth Credentials" [email protected]

        echo ""
        echo "Thank you, a new user has been created and a mail containing your password"
        echo "was sent to [email protected]"
        echo ""

        sudo pw useradd $ALBUM -d /home/$ALBUM -s /usr/local/bin/bash -m
        echo $PASSWORD | sudo pw mod user $ALBUM -h 0


read
exit
fi
Halik
la source