Como configurar o HTTPS (certificados SSL) para proteger o login de phpmyadmin

Como configurar o HTTPS (certificados SSL) para proteger o login de phpmyadmin

Para apresentar esta dica, vamos cheirar o tráfego HTTP entre uma máquina cliente e o Debian 8 Servidor onde cometemos o erro inocente para fazer login usando as credenciais do usuário do banco de dados ROOT em nosso último artigo em: alteração e seguro

Como mencionamos na dica anterior, não tente fazer isso ainda se você não quiser expor suas credenciais. Para começar a cheirar o tráfego, digitamos o seguinte comando e pressionamos Enter:

# tcpdump porta http -l -a | egrep -i 'pass = | pwd = | log = | login = | user = | nome de usuário = | pw = | passw = | passwd = | senha = | passa: | user: | nome de usuário: | senha: | login: | passa | Usuário '--line -buffer -b20 

Não levará muito tempo para perceber que o nome de usuário e senha foram enviados sobre o fio em formato de texto simples, como você pode ver na saída truncada do tcpdump na imagem abaixo.

Observe que escondemos parte do raiz Senha com uma marca azul sobre ela:

Fuzando tráfego HTTP

Para evitar isso, vamos garantir a página de login com um certificado. Para fazer isso, instale o pacote mod_ssl em CENTOS distribuições baseadas.

# yum install mod_ssl 

Embora nós usemos o Debian/Ubuntu caminho e nomes, o mesmo procedimento é válido para CENTOS e RHEL Se você substituir os comandos e caminhos abaixo pelo CENTOS equivalentes.

Crie um diretório para armazenar a chave e o certificado:

# mkdir/etc/apache2/ssl [on Debian/Ubuntu sistemas baseados] # mkdir/etc/httpd/ssl [on CENTOS sistemas baseados] 

Crie a chave e o certificado:

----------- Sobre Debian/Ubuntu Sistemas baseados ------------- # OpenSSL Req -x509 -Nodes -Days 365 -NewKey RSA: 2048 -Keyout/etc/apache2/ssl/apache.chave --out/etc/apache2/ssl/apache.CRT ----------- ON CENTOS Sistemas baseados ------------- # OpenSSL Req -x509 -Nodes -Days 365 -NewKey RSA: 2048 -Keyout/etc/httpd/ssl/apache.chave --out/etc/httpd/ssl/apache.Crt 
Saída de amostra
… +++… +++ escrevendo nova chave privada para '/etc/httpd/ssl/apache.chave '----- Você está prestes a ser solicitado a inserir informações que serão incorporadas à sua solicitação de certificado. O que você está prestes a entrar é o que é chamado de nome distinto ou DN. Existem alguns campos, mas você pode deixar alguns em branco para alguns campos, haverá um valor padrão, se você entrar '.', o campo ficará em branco. ----- Nome do país (código de 2 letra) [xx]:EM Nome do estado ou da província (nome completo) []:Maharashtra Nome da localidade (por exemplo, cidade) [Cidade padrão]:Mumbai Nome da organização (por exemplo, Empresa) [Empresa Padrão Ltd]:Tecmint Nome da unidade organizacional (por exemplo, seção) []:Tecmint Nome comum (por exemplo, seu nome ou o nome do host do seu servidor) []:Tecmint Endereço de email []:[Email protegido] 

Em seguida, verifique a chave e o certificado.

# cd/etc/apache2/ssl/[on Debian/Ubuntu sistemas baseados] # cd/etc/httpd/ssl/[on CENTOS sistemas baseados] # ls -l total 8 -rw-r-r--. 1 raiz raiz 1424 7 de setembro 15:19 Apache.CRT -RW-R-R--. 1 raiz raiz 1704 7 de setembro 15:19 Apache.chave 

Em Debian/Ubuntu, Certifique -se disso Apache está ouvindo no porto 443 Para o site padrão (/etc/Apache2/sites-ABILIÁRIO/000 Default.conf) e adicione as 3 linhas relacionadas ao SSL dentro do VirtualHost declaração:

Sslengine no sslCertificatefile/etc/apache2/ssl/apache.CRT SSLCERtificateKeyFile/etc/apache2/ssl/apache.chave 
Ativar SSL no VirtualHost

Em CENTOS distribuições baseadas, diga Apache Para ouvir no porto 443 e procure a diretiva de escuta em /etc/httpd/conf/httpd.conf e adicione as linhas acima abaixo dele.

Sslengine no sslCertificatefile/etc/httpd/ssl/apache.CRT SSLCERtificateKeyFile/etc/httpd/ssl/apache.chave 

Salvar alterações, carregar o SSL Apache módulo on Debian/Ubuntu Distribuições (IN CENTOS Isso é carregado automaticamente quando você instalou mod_ssl mais cedo):

# a2enmod ssl 

Força phpmyadmin usar Ssl, verifique se a linha a seguir está presente em /etc/phpmyadmin/config.Inc.php ou /etc/phpmyadmin/config.Inc.php arquivo:

$ cfg ['forcessl'] = true; 

e reinicie o servidor da web:

# SystemCtl reinicie o Apache2 [ON Debian/Ubuntu sistemas baseados] # SystemCTL reinicie HTTPD [ON Debian/Ubuntu sistemas baseados] 

Em seguida, inicie seu navegador da web e digite https: /// meu (Aprenda a alterar o URL de login de phpmyadmin) como mostrado abaixo.

Importante: Por favor, observe que está apenas dizendo que a conexão não é segura porque estamos usando um certificado autoassinado. Clique em Avançado e confirme a exceção de segurança:

Ativar phpmyadmin https

Depois de confirmar a exceção de segurança e antes de entrar, vamos começar a cheirar Http e Https tráfego:

# porta tcpdump http ou porta https -l -a | egrep -i 'pass = | pwd = | log = | login = | user = | nome de usuário = | pw = | passw = | passwd = | senha = | passa: | user: | nome de usuário: | senha: | login: | passa | Usuário '--line -buffer -b20 

Em seguida, faça o login usando as mesmas credenciais que anteriores. O tráfego Sniffer apenas capturará bobagem na melhor das hipóteses:

Fuzando o tráfego HTTP e HTTPS

Por enquanto é isso, no próximo artigo, compartilharemos você para restringir o acesso do PhpMyadmin com o nome de usuário/senha, até então fique atento ao Tecmint.