Pesquisa de site

Como instalar e proteger o phpMyAdmin no Ubuntu 16.04


Introdução

Embora muitos usuários precisem da funcionalidade de um sistema de gerenciamento de banco de dados como o MySQL, eles podem não se sentir à vontade para interagir com o sistema apenas a partir do prompt do MySQL.

O phpMyAdmin foi criado para que os usuários possam interagir com o MySQL através de uma interface web. Neste guia, discutiremos como instalar e proteger o phpMyAdmin para que você possa usá-lo com segurança para gerenciar seus bancos de dados a partir de um sistema Ubuntu 16.04.

Pré-requisitos

Antes de começar com este guia, você precisa ter algumas etapas básicas concluídas.

Primeiro, assumiremos que você está usando um usuário não root com privilégios sudo, conforme descrito nas etapas 1 a 4 na configuração inicial do servidor do Ubuntu 16.04.

Também vamos supor que você concluiu uma instalação LAMP (Linux, Apache, MySQL e PHP) em seu servidor Ubuntu 16.04. Se isso ainda não estiver concluído, você pode seguir este guia sobre como instalar uma pilha LAMP no Ubuntu 16.04.

Finalmente, há importantes considerações de segurança ao usar software como o phpMyAdmin, uma vez que:

  • Comunica-se diretamente com a instalação do MySQL
  • Lida com autenticação usando credenciais MySQL
  • Executa e retorna resultados para consultas SQL arbitrárias

Por esses motivos, e por ser um aplicativo PHP amplamente implantado e frequentemente alvo de ataques, você nunca deve executar o phpMyAdmin em sistemas remotos por meio de uma conexão HTTP simples. Se você não possui um domínio existente configurado com um certificado SSL/TLS, pode seguir este guia sobre como proteger o Apache com Let’s Encrypt no Ubuntu 16.04.

Depois de concluir essas etapas, você estará pronto para começar com este guia.

Primeiro Passo — Instale o phpMyAdmin

Para começar, instalaremos o phpMyAdmin dos repositórios padrão do Ubuntu.

Podemos fazer isso atualizando nosso índice de pacotes local e usando o sistema de empacotamento apt para baixar os arquivos e instalá-los em nosso sistema:

  1. sudo apt-get update
  2. sudo apt-get install phpmyadmin php-mbstring php-gettext

Isso fará algumas perguntas para configurar sua instalação corretamente.

Aviso: quando o primeiro prompt aparecer, o apache2 será realçado, mas não selecionado. Se você não clicar em Espaço para selecionar o Apache, o instalador não moverá os arquivos necessários durante a instalação. Pressione Espaço, Tab e, em seguida, Enter para selecionar Apache.

  • Para a seleção do servidor, escolha apache2.
  • Selecione sim quando perguntado se deseja usar dbconfig-common para configurar o banco de dados
  • Você será solicitado a fornecer a senha do administrador do banco de dados
  • Você será solicitado a escolher e confirmar uma senha para o aplicativo phpMyAdmin em si

O processo de instalação realmente adiciona o arquivo de configuração Apache phpMyAdmin no diretório /etc/apache2/conf-enabled/, onde ele é lido automaticamente.

A única coisa que precisamos fazer é habilitar explicitamente as extensões PHP mcrypt e mbstring, que podemos fazer digitando:

  1. sudo phpenmod mcrypt
  2. sudo phpenmod mbstring

Depois, você precisará reiniciar o Apache para que suas alterações sejam reconhecidas:

  1. sudo systemctl restart apache2

Agora você pode acessar a interface web visitando o nome de domínio do seu servidor ou endereço IP público seguido por /phpmyadmin:

https://domain_name_or_IP/phpmyadmin

Agora você pode entrar na interface usando o nome de usuário root e a senha administrativa que você configurou durante a instalação do MySQL.

Ao fazer login, você verá a interface do usuário, que será mais ou menos assim:

Etapa dois — Proteja sua instância do phpMyAdmin

Conseguimos colocar nossa interface phpMyAdmin em funcionamento com bastante facilidade. No entanto, ainda não terminamos. Devido à sua onipresença, o phpMyAdmin é um alvo popular para invasores. Devemos tomar medidas extras para impedir o acesso não autorizado.

Uma das maneiras mais fáceis de fazer isso é colocar um gateway na frente de todo o aplicativo. Podemos fazer isso usando as funcionalidades de autenticação e autorização .htaccess integradas do Apache.

Configurar o Apache para permitir substituições de .htaccess

Primeiro, precisamos habilitar o uso de substituições de arquivo .htaccess editando nosso arquivo de configuração do Apache.

Vamos editar o arquivo vinculado que foi colocado em nosso diretório de configuração do Apache:

  1. sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Precisamos adicionar uma diretiva AllowOverride All dentro da seção do arquivo de configuração, assim:

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All
    . . .

Depois de adicionar esta linha, salve e feche o arquivo.

Para implementar as alterações feitas, reinicie o Apache:

  1. sudo systemctl restart apache2

Crie um arquivo .htaccess

Agora que habilitamos o uso de .htaccess para nosso aplicativo, precisamos criar um para realmente implementar alguma segurança.

Para que isso seja bem-sucedido, o arquivo deve ser criado dentro do diretório do aplicativo. Podemos criar o arquivo necessário e abri-lo em nosso editor de texto com privilégios de root digitando:

  1. sudo nano /usr/share/phpmyadmin/.htaccess

Dentro deste arquivo, precisamos inserir as seguintes informações:

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Vamos ver o que cada uma dessas linhas significa:

  • AuthType Basic: Esta linha especifica o tipo de autenticação que estamos implementando. Este tipo implementará autenticação de senha usando um arquivo de senha.
  • AuthName: define a mensagem para a caixa de diálogo de autenticação. Você deve manter isso genérico para que usuários não autorizados não obtenham nenhuma informação sobre o que está sendo protegido.
  • AuthUserFile: define a localização do arquivo de senha que será usado para autenticação. Isso deve estar fora dos diretórios que estão sendo servidos. Criaremos este arquivo em breve.
  • Require valid-user: especifica que somente usuários autenticados devem ter acesso a este recurso. Isso é o que realmente impede a entrada de usuários não autorizados.

Quando terminar, salve e feche o arquivo.

Crie o arquivo .htpasswd para Autenticação

O local que selecionamos para o nosso arquivo de senha foi \/etc/phpmyadmin/.htpasswd. Agora podemos criar este arquivo e passá-lo a um usuário inicial com o htpasswd Utilitário:

  1. sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

Você será solicitado a selecionar e confirmar uma senha para o usuário que está criando. Depois, o arquivo é criado com a senha hash que você digitou.

Se você quiser inserir um usuário adicional, precisará fazê-lo sem o sinalizador -c, assim:

  1. sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

Agora, ao acessar seu subdiretório phpMyAdmin, você será solicitado a fornecer o nome de conta adicional e a senha que acabou de configurar:

https://domain_name_or_IP/phpmyadmin

Depois de inserir a autenticação do Apache, você será direcionado para a página de autenticação normal do phpMyAdmin para inserir suas outras credenciais. Isso adicionará uma camada adicional de segurança, já que o phpMyAdmin sofreu vulnerabilidades no passado.

Conclusão

Agora você deve ter o phpMyAdmin configurado e pronto para uso em seu servidor Ubuntu 16.04. Usando esta interface, você pode facilmente criar bancos de dados, usuários, tabelas, etc., e executar as operações usuais como deletar e modificar estruturas e dados.