Curta e compartilhe
  • Segurança: SSH - Verificação em duas etapas

    29
    agosto/15

    A verificação em duas etapas (two-factors) é a tecnologia que nos permite adicionar uma camada de segurança no processo de autenticação convencional (usuário e senha).
    É recomendável usar sempre que é possível, mas e o SSH, tem alguma coisa voltada para isso? Não sei, mas podemos criar algo nós mesmos para isso.

    O Linux nos dá o poder de fazer as configurações necessárias.

    Então vamos a ela.

    Primeiro passo você precisa alterar o bash do seu usuário, os comandos a seguir precisam ser executados como root.

    Edite o arquivo "/etc/passwd", quando encontrar seu usuário, altere o bash dele

    exemplo:

    leandro:x:1000:1000:Leandro Henrique:/home/leandro:/bin/bash
    altere para:
    leandro:x:1000:1000:Leandro Henrique:/home/leandro:/usr/local/token

    Feito isso hora de criar nosso arquivo "/usr/local/token" para fazer a segunda verificação

    exemplo:


    #!/bin/bash
    echo -e "\nControl + c acionado.\n"
    control_c () {
    #pkill -kill -u $USUARIO
    exit 0;
    }

    trap control_c INT HUP TERM

    USUARIO=`whoami`;
    #Aqui você coloca uma URL para enviar para você um SMS,
    #ou um email.
    #Claro se for SMS você precisa de ter um gateway que faça isso
    #existem outros meios, mas este artigo não tem objetivo de
    #explorar isso.
    VALID_TOKEN=`curl http://asterisk.reis/api/sms/sendtoken/6`

    echo "Please enter the token:"
    read TOKEN;

    if [ "$TOKEN" == "$VALID_TOKEN" ]; then
    echo "You have access!"
    /bin/bash
    exit;
    fi

    echo "ACCESS DENIED!"
    #pkill -kill -u $USUARIO
    exit;


    O que o código a cima faz?
    Primeiro e disse que o script vai ser executado pelo bash.
    Cria uma função para prevenir que caso o usuário pressione ctrl+c, ao invés de cancelar o script e ir para o prompt de comando, saia do bash e finalize a conexão SSH, ou caso prefira, pode remover o comentário da linha "#pkill -kill -u $USUARIO" e todas as sessões com este usuário serão fechadas (meio brusco, mas fica a critério de cada um), tem suas vantagens e desvantagens vale a você analisar o que é melhor para você.

    Depois ele pega gera um token usando um serviço externo que este artigo não contempla, cabe a você desenvolver ou utilizar algo pronto por ai para enviar um SMS ou email para você.

    Em seguida ele solicita ao usuário que digita o valor do token, que foi enviado por SMS ou EMAIL ou qualquer meio que você utilizar.
    Então verifica se os tokens batem, se batem ok! Ele passa, senão sai do bash, finaliza.

    Bom temos dois problemas ai, primeiro é que seu gateway pode falhar, segundo que você pode ter acesso ao terminal fisicamente e ficaria incomodo você com acesso físico ter que esperar sempre receber o token para poder acessar sua máquina toda vez que abrir um terminal.

    Então vamos a um script que verifica se ouve erro, vamos considerar que o token seja apenas de 6 caracteres se o CURL devolver algo maior que isso é porque deu algum erro.

    O código completo de como fica está abaixo, e no vídeo mais detalhes da utilização desse processo.


    #!/bin/bash
    control_c () {
    echo -e "\nControl + c acionado.\n"
    #pkill -kill -u $USUARIO
    exit 0;
    }

    trap control_c INT HUP TERM

    if [[ $(who am i) =~ \((\:0\))$ ]]; then
    /bin/bash
    exit;
    fi

    USUARIO=`whoami`;
    SECRET="123123";

    VALID_TOKEN="15";
    #VALID_TOKEN=`curl http://asterisk.reis/api/sms/sendtoken/6`

    TAMANHO=${#VALID_TOKEN};
    NO_TOKEN="-";

    if [[ "$VALID_TOKEN" == "$NO_TOKEN" || "$TAMANHO" -gt 6 ]]; then
    echo "Failed to send the token";
    stty -echo;
    VALID_TOKEN=$SECRET;
    fi

    echo "Please enter the token:"
    read TOKEN;
    stty echo;

    if [ "$TOKEN" == "secret" ]; then
    VALID_TOKEN=$SECRET;
    echo "Please enter the password:"
    stty -echo;
    read TOKEN;
    stty echo;
    fi

    if [ "$TOKEN" == "$VALID_TOKEN" ]; then
    echo "You have access!"
    /bin/bash
    exit;
    fi

    echo "ACCESS DENIED!"
    #pkill -kill -u $USUARIO
    exit;

    Bom temos ai um script que caso falhe a geração do tem, ou você não queira muito esperar possa digitar "secret" e depois digitar sua segunda senha secreta.

    Assista o vídeo para mais detalhes de utilização e como funciona, caso não tenha compreendido.



    Fazer comentário

  • Instalação e configuração do php, nginx, mysql, phpmyadmin, na DO, do zero.

    22
    agosto/15

    Se você tem dúvidas de como configurar um servidor do zero, eis sua oportunidade de aprender.
    Assista o vídeo e veja passo a passo.


    Link para criar sua conta na DO (Digital Ocean) https://goo.gl/DMgK38

    Fazer comentário

  • Laravel: Validation (telefone, celular, hora, cnpj ou cpf etc).

    22
    agosto/15

    Frequentemente eu estava estendendo a classe Validation do Kennedy Tedesco,então resolvi criar um pacote que estende o pacote dele e acrescentei os métodos que uso, cnpj ou cpf (no mesmo campo), possibilidade de ser preenchido com zeros o CNPJ/CPF, hora, telefone, celular.

    link do repositório: https://github.com/resultsystems/validation

     

    Fazer comentário

  • Laravel: Validation->Como validar pelo form request uma array de dados

    07
    agosto/15

    Você já deparou com a necessidade de validar uma array de informações?

    Imagina o cenário:

    Cliente tem várias referências comerciais, e você precisa validar cada uma, mas também estas referências não são obrigatórias.

    Considerando que você está usando o formrequest, vou deixar um exemplo aqui, para o método rules():


    public function rules()
    {
        $input = parent::all();

        /*
        * verifica se referencias foi enviado
        * caso contrário não valida nada
        * ou
        * você pode definir a obrigatoriedade colocando
        * return ['referencias' => 'required'];
        */
        if (!isset($input['referencias'])) {
            return [];
        }

        /*
        * verifica se referencias é uma array
        * caso contrário pedi para enviar como array
        */
        if (!is_array($input['referencias'])) {
            return ['referencias' => 'array'];
        }

        /*
        * pega as rules padrão
        * @var array
        */
        $rules = [
            'nome' => 'required|min:2|max:30',
            'telefone' => 'required|integer|min:10|max:11'
        ]

        /*
        * pega as referências comerciais informadas
        * @var array
        */
        $referencias = $input['referencias'];

        /*
        * varre a array de referências e verifica se todos os campos
        * de "rules" foram informados
        * @var array
        */
        $newRules = array();
        foreach ($referencias as $keyRefe => $referencia) {
            /*
            * se for informado um id
            * verifica se ele existe na tabela de referências comerciais
            */
            if (isset($referencia['id'])) {
                $newRules['referencias.'.$keyRefe.'.id'] = 'exists:referencias_comerciais,id';
                continue;
            }

            /*
            * varre rules para verificar as keys e
            * o tipo de validação configurada, e adiciona nas novas rules
            * @var array
            */
            foreach ($rules as $key => $value) {
                $newRules['referencias.'.$keyRefe.'.'.$key] = $value;
            }
        }


        return $newRules;
    }

    Fazer comentário

  • Meus sonhos concretizados!

    25
    julho/15

    Até tentaram matar meus sonhos, mas foi dai que criei forças para concretizá-los.

    Obrigado!

    Agora meus sonhos tem vida própria.

    Para quem dizia que era impossível, desculpe-me, eu não sabia por isso dei forma aos meus objetivos.

    Fazer comentário

<< 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29