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 como
anna``, 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.
0 COMMENTS