Vamos começar instalando os pacotes do
Squid e do
MySQL (foi feito no Ubuntu 16.04):
sudo apt-get install mysql -y
$ sudo apt-get install squid -y
Caso for fazer no Ubuntu 18.04, pode acontecer de o MySQL não pedir a senha de root, nesse caso use o comando:
sudo mysql_secure_installation
Coloque a senha que você deseja para o root e dê skip em tudo (apenas coloque a senha e aperte enter até terminar).
Agora iremos criar as tabelas no MySQL:
mysql -u root -p
mysql>
create database squid;
mysql>
use squid;
mysql>
CREATE TABLE usuarios (nome varchar(50) NOT NULL,senha varchar(32) NOT NULL,status tinyint(1) NOT NULL default "1",PRIMARY KEY (NOME));
mysql>
INSERT INTO usuarios VALUES ('vol1', md5('senha1'), 1);
mysql>
INSERT INTO usuarios VALUES ('vol2', md5('senha2'), 0);
O vol1 e vol2 são os usuários e o md5('senha1') encripta a senha e o 1 e 0 irá dizer se é um usuário ativo ou inativo.
Configuração do basic_db_auth
Será preciso baixar alguns pacotes para a autenticação, pois o
basic_db_auth é escrito em Perl.
sudo apt-get install libdbi-perl -y
$ sudo apt-get install libdbd-mysql-perl -y
Logo após instalar os pacotes, vamos começar a modificar o arquivo para fazer que ele trabalhe com a nossa tabela:
sudo nano /usr/lib/squid/basic_db_auth
Editar a linhas:
- Database DSN. Default "DBI:mysql:database=squid" ---> mudar caso Squid esteja com "S" maiúsculo para squid com "s" minúsculo
- Database table. Default "passwd". ----> mudar para usuários.
- =item B<--usercol>
- Username column. Default "user". ---> nome
- =item B<--passwdcol>
- Password column. Default "password". ----> senha
- my $dsn = "DBI:mysql:database=squid"; ---> mudar caso Squid esteja com "S" maiúsculo para squid com "s" minúsculo
- my $db_user = undef; ----> mudar para nome do usuário do mysql
- my $db_passwd = undef; ----> mudar para senha do mysql
- my $db_table = "passwd"; ----> mudar para usuários
- my $db_usercol = "user"; ----> mudar para nome
- my $db_passwdcol = "password";----> mudar para senha
- my $db_cond = "enabled = 1"; ---> mudar enabled para status
Vamos fazer os testes:
./basic_db_auth --md5
Utilizar o --md5 para utilizar a criptografia md5 do mysql.
vol1 senha1 ----> colocar usuário e senha separados por espaço
Se retornar OK é porque está tudo certo.
./basic_db_auth --md5
vol2 senha2
ERR ---> se retornar ERR é pporque não autenticou.
Nesse caso estão corretos os dois exemplos, pois a autenticação é feita pelo usuário senha e o status, como o status do vol2 é 0 então ele não autentica.