Usar um sistema de banco de dados é uma necessidade que muitas pessoas têm. Mas sabemos que gerenciar um sistema de banco de dados como o MySQL diretamente de seu cliente de linha de comando exige certa familiaridade com o sistema, o que às vezes pode ser um desafio.

Neste tutorial, mostraremos como instalar o phpMyAdmin no servidor Nginx. Esta é uma ferramenta de software livre que permite aos usuários interagir com o MySQL através de uma interface intuitiva. Também abordaremos como

Pré-requisitos

Para seguir este guia, você precisará:

  • Um servidor Ubuntu 18.04 com uma pilha LEMP protegida com ufw.
  • Acesso ao servidor como um usuário não root com privilégios sudo.
  • Como o phpMyAdmin usa credenciais do MySQL para autenticar, você também deve instalar um certificado SSL / TLS para ativar o tráfego criptografado entre servidor e cliente.

Caso contrário, garanta que você imponha o acesso via túneis SSH, como explicaremos ao longo deste tutorial.

Etapa 1 - Instalando o phpMyAdmin

Nos repositórios do Ubuntu, instale o phpMyAdmin no seu servidor LEMP. Mas primeiro, vamos atualizar o índice de pacotes do servidor usando o seguinte comando:

$

sudo apt update

Depois, instale o phpMyAdmin, faça isso pelo seguinte código:

$

sudo apt install phpmyadmin

Você será solicitado a escolher um servidor da Web para configurar. Como estamos usando o Nginx, devemos apenas pressionar tab e depois de ok e depois avançar para a próxima etapa.

Depois disso, você será perguntado se deve usar dbconfig-common para configurar o banco de dados do aplicativo. Selecione yes. Você também será solicitado a criar uma senha. Aqui você pode deixar em branco e obter uma senha aleatória no phpMyAdmin.

A instalação terminará. Você precisará criar um link simbólico dos arquivos de instalação para o diretório raiz do documento do Nginx, para que o servidor Nginx encontre e atenda corretamente os arquivos phpMyAdmin:

$

sudo ln -s /usr/share/phpmyadmin /var/www/html

Para acessar a interface do phpMyAdmin, acesse o nome de domínio do servidor ou o IP público, seguido de /phpmyadmin no seu navegador da web:

$

https://server_domain_or_IP/phpmyadmin

Agora você deve ter o seu phpMyAdmin instalado e configurado. Como você abriu o servidor de banco de dados para uma interface da Web, ele fica mais vulnerável a ataques. É por isso que abordaremos como proteger e evitar esses ataques.

Etapa 2 - Alterando o local padrão do phpMyAdmin

Tornar sua instalação do phpMyAdmin difícil de encontrar é uma das maneiras mais triviais de protegê-la. Normalmente, os robôs pesquisam caminhos comuns. Alterar o URL da interface de * / phpmyadmin * para algo diferente tornará mais difícil para qualquer script encontrar sua instalação e atacá-la.

Com esta instalação, criamos um link simbólico que aponta para * / usr / share / phpmyadmin *, onde os arquivos reais do aplicativo são colocados. Para alterar o URL da interface, renomeie o link simbólico.

Primeiro, vá para o diretório raiz do Nginx e liste os arquivos que ele contém para ter uma melhor noção da alteração que será feita:

$$

cd /var/www/html/ ls -l

Você terá o seguinte resultado:

total 8 -rw-r--r-- 1 root root 612 Apr 8 13:30 index.nginx-debian.html lrwxrwxrwx 1 root root 21 Apr 8 15:36 phpmyadmin -> /usr/share/phpmyadmin

Como você pode ver, a saída mostra que há um link simbólico chamado phpmyadmin no diretório Você pode renomear o link para o que quiser. Esse processo vai alterar o URL de acesso do phpMyAdmin, o que ajudará a ocultar o terminal dos bots codificados para encontrar os nomes dos terminais.

Recomenda-se escolher um nome que oculte o objetivo do terminal. Neste guia, usaremos /thereisnothinghere, mas você pode escolher um nome de sua preferência.

Renomeie o link seguindo o comando:

$$

sudo mv phpmyadmin /theresnothinghere ls -l

Você terá o seguinte resultado:

total 8 -rw-r--r-- 1 root root 612 Apr 8 13:30 index.nginx-debian.html lrwxrwxrwx 1 root root 21 Apr 8 15:36 theresnothinghere-> /usr/share/phpmyadmin

Verifique se você tem uma mensagem de erro ao acessar o endereço antigo:

$

https://server_domain_or_IP/phpmyadmin

Agora sua interface estará disponível no novo URL que você acabou de configurar:

https://server_domain_or_IP/theresnothinghere

Ao ocultar a localização real do phpMyAdmin no servidor, você garante que sua interface esteja segura contra verificações automatizadas e tentativas manuais.

Etapa 3 - Desativando o login raiz

No MySQL, a conta root é uma conta administrativa especial sem restrições para acessar o sistema. Não é apenas uma conta privilegiada, mas também um nome de login conhecido, que o transforma em um alvo óbvio para ataques.

Com o objetivo de minimizar os riscos, configuraremos o phpMyAdmin para negar qualquer tentativa de login proveniente da raiz do usuário. Com isso, mesmo se você der credenciais para a raiz do usuário, seu acesso não será permitido.

Como usamos o dbconfig-common para configurar e armazenar as configurações do phpMyAdmin, a configuração padrão agora é armazenada no banco de dados. Criaremos um novo arquivo config.inc.php para definir nossas configurações personalizadas.

Mesmo que os arquivos PHP do software sejam colocados em /usr/share/phpmyadmin, o aplicativo usará os arquivos de instalação localizados em /etc/phpmyadmin. Criaremos um novo arquivo de configurações dentro de /etc/phpmyadmin/conf.d e o chamaremos de pma_secure.php:

$

sudo nano /etc/phpmyadmin/conf.d/pma_secure.php

O seguinte arquivo de configurações possui as configurações necessárias para desativar logins sem senha e login raiz:

/etc/phpmyadmin/conf.d/pma_secure.php

...

#PhpMyAdmin Settings

#This should be set to a random string of at least 32 chars

$cfg['blowfish_secret'] = '3!#32@3sa(+=4?),5XP:U%%8\34sdfSdg43yH#{o';

$i=0; $i++;

$cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['AllowNoPassword'] = false; $cfg['Servers'][$i]['AllowRoot'] = false;

...

Depois disso, salve o arquivo pressionando CTRL+X e y para confirmar as alterações e, finalmente, ENTER. As alterações serão aplicadas automaticamente. Se você recarregar a página de login e tentar fazer login como root, seu acesso será negado.

Com essa medida de segurança, você estará livre de scripts de força bruta que tentam adivinhar a senha do banco de dados raiz no seu servidor.

Etapa 4 - Criando um gateway de autenticação

Aqui vamos explicar como criar uma camada extra de autenticação para sua instalação do phpMyAdmin. Isso permitirá aumentar a segurança.

Como estamos lidando com o phpMyAdmin, é ainda mais importante manter a interface de login protegida. Os usuários precisarão passar por um prompt de autenticação HTTP antes de ver a tela de login do phpMyAdmin. O Nginx fornece isso nativamente.

Para configurá-lo, precisamos criar um arquivo de senha para armazenar as credenciais de autenticação. O Nginx exige que as senhas sejam criptografadas com a função crypt().

Para criar a senha, digite:

$

openssl passwd

O sistema solicitará a senha que você deseja usar. O utilitário exibirá uma versão criptografada da senha com a seguinte aparência:

O5az.RSPzd.HE

Copie a senha, depois de colá-la no arquivo de autenticação que você criará. Para criar o arquivo de autenticação (pma_pass) e colocá-lo no diretório de configuração do Nginx, use o seguinte comando:

$

sudo nano /etc/nginx/pma_pass

Neste arquivo, especifique o nome de usuário que você deseja usar, seguido por dois pontos (:), seguido pela versão criptografada da senha que você recebeu do utilitário openssl passwd```. Vamos nomear nosso usuário comoanna``, mas você pode escolher um nome de usuário diferente.

/etc/nginx/pma_pass

anna:O5az.RSPzd.HE

Depois de fazer isso, salve e feche o arquivo. Agora você pode modificar o arquivo de instalação do Nginx. Neste tutorial, usaremos o arquivo de configuração localizado em /etc/nginx/sites-available/example.com. Abra o arquivo de configuração Nginx relevante para o local da web em que o phpMyAdmin está hospedado:

$

sudo nano /etc/nginx/sites-available/example.com

Em seguida, localize o bloco server e a seção location/ nele. É necessário criar uma nova seção location dentro desse bloco para corresponder ao caminho atual do phpMyAdmin no servidor. Neste tutorial, este local é */thereisnothinghere *

/etc/nginx/sites-available/default

server { . . .

    location / {
            try_files $uri $uri/ =404;
    }

    location /theresnothinghere {
            # Settings for phpMyAdmin will go here
    }

. . .

}

No bloco, precisaremos configurar duas diretivas diferentes: auth_basic para definir a mensagem que será exibida no prompt de autenticação e auth_basic_user_file, que aponta para o arquivo que acabamos de criar:

/etc/nginx/sites-available/default

server { . . .

    location /theresnothinghere {
            auth_basic "Admin Login";
            auth_basic_user_file /etc/nginx/pma_pass;
    }


. . .

}

Depois de fazer isso, salve e feche o arquivo. Verifique a configuração digitando:

$

sudo nginx -t

Você deve ter a seguinte saída:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Para ativar o novo portão de autenticação, recarregue o servidor da web:

$

sudo systemctl reload nginx

Agora, quando você visitar o URL do phpMyAdmin no seu navegador, será solicitado o nome de usuário e a senha que você adicionou ao arquivo pma_pass.

Conclusão

Neste guia, aprendemos como instalar o phpMyAdmin no Ubuntu 18.04 executando o Nginx como servidor da web. Também abordamos métodos avançados para proteger uma instalação do phpMyAdmin no Ubuntu.

Agora você deve poder gerenciar seus bancos de dados MySQL a partir de uma interface web razoavelmente segura. Essa interface do usuário expõe a maioria das funcionalidades disponíveis via linha de comando do MySQL. Você pode navegar nos bancos de dados e esquema, executar consultas e criar novos conjuntos de dados e estruturas.