Autenticando usuários do Squid em um banco de dados MySQL [Artigo] - página 2
[ Hits: 69.645 ]
Abra um terminal como root e logue-se no seu servidor MySQL com os seguintes comandos:
Será requisitado uma senha, que é a senha do seu servidor MySQL. Ser tudo der certo você estará logado no console do MYSQL, que é mais ou menos assim:
Type "help" or "\h" for help. Type "\c" to clear the buffer.
Bom, se sua tela está assim parabéns, seu servidor MySQL está rodando e pronto para brincar conosco!
Para visualizar as bases criadas digite:
Para selecioná-las, digite:
Em nosso caso vamos criar uma base de dados com o nome de "Squid". Digite o seguinte comando:
e dê um enter. A saída será esta:
Query OK, 1 row affected (0.01 sec).
Em seguida selecione a base que acabamos de criar para podermos trabalhar nela:
Agora vamos criar a tabela que conterá as informações de nome, senha e status do nossos usuários do Squid. Se você analisar, nós podemos ter 3 situações de usuário no nosso servidor proxy: usuário existe, usuário não existe, usuário desabilitado. Quando usamos a autenticação ncsa_auth, para desabilitar um usuário adicionamos o caractere "#" para comentar a linha e ignorá-la, como estamos utilizando uma base dados, utilizaremos um número (0 ou 1) para determinar o status do usuário: 0 = desabilitado e 1 = habilitado.
Para criar a tabela, siga os procedimentos:
status tinyint(1) NOT NULL default "1",
Se tudo ocorrer de maneira correta você terá a mensagem "Query OK...".
Para melhor entendimento, vamos às explicações: criamos uma tabela chamada usuários que contém três campos: nome, senha e status. O campo nome não pode ser em branco e você tem 100 caracteres para digitar, o campo senha também não pode ser em branco e você tem 15 caracteres livres e o campo status você tem a opção de colocar 0 ou 1 e por padrão a flag é zero.
Agora vamos inserir dois usuários para podermos efetuar os testes, ainda com sua base de dados selecionada, digite os seguintes comandos:
mysql> INSERT INTO usuarios VALUES ('vol1', encrypt('senha1'), 1);
mysql> INSERT INTO usuarios VALUES ('vol2', encrypt('senha2'), 0);
Observe que o usuário vol1 está habilitado, diferentemente do usuário vol2.
O parâmetro encrypt antes da senha significa que a sua senha estará devidamente criptografada, porém, isso não pede que suas senhas trafeguem na rede em texto plano base64.
Pronto! Nosso banco de dados está devidamente criado e configurado, agora iremos configurar o Squid para autenticar em nossa base de dados.
Dentro da pasta /usr/lib/squid você terá alguns arquivos executáveis, que nada mais são do que scripts dos métodos de autenticação existentes para seu Squid.
Procure algum script com o nome de mysqlt_auth. Se não tiver, crie-o. Se tiver, mova-o para um arquivo de backup. Partindo do pressuposto que você está criando o arquivo, edite e deixe-o com as seguintes linhas:
$selectdb = mysqli_select_db($link, "Squid");
$select = "SELECT nome, senha FROM usuarios WHERE nome = '".$nome."' AND status = 1";
Certifique-se que todas as informações como nome, senha, nome do banco, senha e host correspondam as informações do seu servidor. A estrutura do script acima é bem objetiva: se os dados de localhost, senha e nome do banco estiverem corretos, você estará conectado a sua base. A seguir, ele selecionará a sua base, que colocamos com o nome de Squid. Por padrão ele lê o nome de usuário e senha digitados. A seguir, faz leitura de usuários que contenham seu status como "1" (habilitado).
Caso ocorra algum erro, o mesmo é retornado. Se encontrado algum usuário, continua a operação. Compara a encriptação da senha digitada com a senha digitada pelo usuário. Se houver algum erro de digitação de usuário/senha, aparece o erro e volta ao início.