script de registro SSH

2

Alguém poderia escrever ou me ajudar a escrever um script bash que faria o seguinte:

Novo usuário se conecta ao meu servidor FreeBSD e log-ins via SSH com certas credenciais como 'registro de usuário, passe de registro' ou algo similar. Ele é recebido com um banner instruindo-o sobre o que fazer em seguida e um script é lançado perguntando ao usuário do seu id de aluno. Em seguida, um novo usuário é criado com uma senha aleatória e o ID fornecido e um e-mail é enviado para [email protected] contendo a senha (como um método de verificação do aluno). Após esse procedimento, o aluno tem uma conta nova e limitada no meu servidor com ID fornecida e uma senha aleatória e alterável.

A ideia é criar um script que geralmente é usado no registro MUD ou na criação de contas shell.

Eu acho que o script precisaria ser executado no login, armazenar as credenciais fornecidas em um campo e depois passá-las para um comando adduser sudo'ed. Só tenho conhecimento básico de scripts unix e gostaria de receber ajuda.

EDITAR:

Ok, então tentei algo por conta própria:

#! /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, é isso que eu fiz. Alguma sugestão? O usuário pelo qual o script é executado é um sodoer com nopasswd para usar a ferramenta pw. Além disso, o script é autoran com 'source'.

    
por Halik 04.07.2011 / 16:12

3 respostas

0

Para o registro, eu fui com:

    #! /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
    
por 23.02.2012 / 16:26
1

Você poderia tentar escrever um script simples com o qual substituiria o shell padrão para o usuário do registro (em / etc / passwd). Este script invocaria algum script de registro simples via sudo (adicionar novo usuário requererá usuário privilegiado). Considere questões de segurança dessa abordagem - é apenas ideia, eu não tentei isso.

    
por 04.07.2011 / 16:25
0

Você deve ter muito cuidado com a verificação da entrada do usuário e com o uso dessa entrada, para evitar a invasão de qualquer usuário mal-intencionado em seu sistema. Por exemplo, e se o usuário conseguir inserir ":", novas linhas ou backticks em seu nome de usuário?

Além disso, talvez você deva considerar a execução de seu novo script de usuário sem privilégios de root. Portanto, ele não pode modificar /etc/passwd , mas precisa enviar as informações de registro por e-mail para você (ou algo semelhante).

Considere também executar o processo de registro sshd em um ambiente de cadeia ou máquina virtual para minimizar as consequências de uma intrusão. Estas são apenas sugestões.

    
por 06.07.2011 / 13:08