introdução
sistemas relacionais de gerenciamento de banco de dados como MySQL e MariaDB são necessários para uma porção significativa de sites e aplicações. No entanto, nem todos os usuários se sentem confortáveis administrando seus dados a partir da linha de comando.
para resolver este problema, um projeto chamado phpMyAdmin foi criado, a fim de oferecer uma alternativa na forma de uma interface de gestão baseada na web. Neste guia, vamos demonstrar como instalar e proteger uma configuração phpMyAdmin em um servidor CentOS 7. Vamos construir esta configuração em cima do servidor web Apache, o servidor web mais popular do mundo.
pré-requisitos
Antes de começarmos, há alguns requisitos que precisam ser resolvidos.
para garantir que você tem uma base sólida para construir este sistema, você deve executar através do nosso guia inicial de configuração do servidor para CentOS 7. Entre outras coisas, isso irá ajudá-lo a configurar um usuário não-root com sudo
Acesso para comandos administrativos.
o segundo pré-requisito que deve ser cumprido para começar neste guia é instalar uma pilha de lâmpadas (Linux, Apache, MariaDB e PHP) no seu servidor CentOS 7. Esta é a plataforma que vamos usar para servir a nossa interface phpMyAdmin (MariaDB é também o software de gerenciamento de banco de dados que estamos querendo Gerenciar). Se você ainda não tem uma instalação de lâmpada em seu servidor, siga o nosso tutorial sobre a instalação de lâmpada em CentOS 7.
quando o seu servidor estiver em bom estado de funcionamento após seguir estes guias, você pode continuar com o resto desta página.
Step One-Install phpMyAdmin
com a nossa plataforma de lâmpadas já no lugar, podemos começar imediatamente com a instalação do software phpMyAdmin. Infelizmente, o phpMyAdmin não está disponível no repositório padrão do CentOS 7.
para obter os pacotes de que precisamos, teremos de adicionar um repo adicional ao nosso sistema. O EPEL repo (pacotes Extra para Enterprise Linux) contém muitos pacotes adicionais, incluindo o pacote phpMyAdmin que estamos procurando.
o repositório EPEL pode ser disponibilizado ao seu servidor através da instalação de um pacote especial chamado epel-release
. Isto irá reconfigurar a sua lista de repositório e dar-lhe acesso aos pacotes EPEL.
Para instalar, basta digitar:
sudo yum install epel-release
Agora que o repositório EPEL é configurado, você pode instalar o pacote phpMyAdmin usando o yum
sistema de empacotamento digitando:
sudo yum install phpmyadmin
A instalação será concluída agora. A instalação incluiu um arquivo de configuração Apache que já foi colocado em prática. Precisaremos modificar isto um pouco para que funcione corretamente para nossa instalação.
abra o ficheiro no seu editor de texto agora para que possamos fazer algumas alterações:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
no interior, vemos alguns blocos de diretório com alguma lógica condicional para explicar a Política de Acesso para o nosso diretório. Existem dois diretórios distintos que são definidos, e dentro destes, configurações que serão válidas tanto para o Apache 2.2 quanto para o Apache 2.4 (que estamos executando).
actualmente, esta configuração está configurada para negar o acesso a qualquer ligação que não seja feita a partir do próprio servidor. Uma vez que estamos trabalhando em nosso servidor remotamente, precisamos modificar algumas linhas para especificar o endereço IP de sua conexão de casa.
mude qualquer linha que leia Require ip 127.0.0.1
ou Allow from 127.0.0.1
para se referir ao endereço IP da sua ligação doméstica. Se precisar de Ajuda para encontrar o endereço IP da sua ligação em casa, consulte a secção seguinte. Deve haver quatro locais no arquivo que devem ser alterados:
. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .Require ip your_workstation_IP_address. . .Allow from your_workstation_IP_address. . .
quando terminar, reinicie o servidor web Apache para implementar as suas modificações escrevendo:
sudo systemctl restart httpd.service
com isso, nossa instalação phpMyAdmin está agora Operacional. Para acessar a interface, vá para o nome de domínio do seu servidor ou endereço IP público seguido de /phpMyAdmin
, no seu navegador web:
http://server_domain_or_IP/phpMyAdmin
para assinar, use um par de utilizador / Senha de um utilizador MariaDB válido. O usuário root
e a senha administrativa MariaDB é uma boa escolha para começar. Poderá então aceder à interface administrativa:
Encontre o seu endereço IP
terá de saber o endereço IP do computador que está a usar para aceder às suas bases de dados, a fim de completar o passo acima. Esta é uma precaução de segurança para que pessoas não autorizadas não possam se conectar ao seu servidor.Nota :Este não é o endereço IP do seu VPS, é o endereço IP do seu computador de casa ou de trabalho.
pode descobrir como a maior web vê o seu endereço IP visitando um destes sites no seu navegador web:
- Qual é o meu endereço IP?Qual é o meu IP?
- o meu endereço IP
Compare alguns sites diferentes e certifique-se que todos lhe dão o mesmo valor. Use este valor no ficheiro de configuração acima.
Passo 2-Seguro a sua instância de phpMyAdmin
a instância de phpMyAdmin instalada no nosso servidor deve ser completamente utilizável neste ponto. No entanto, ao instalar uma interface web, expusemos o nosso sistema MySQL ao mundo exterior.Mesmo com a tela de autenticação incluída, este é um grande problema. Devido à popularidade do phpMyAdmin combinada com a grande quantidade de dados que fornece acesso a, instalações como estas são alvos comuns para atacantes.Implementaremos duas estratégias simples para reduzir as chances de nossa instalação ser alvo e comprometida. Vamos mudar a localização da interface de /phpMyAdmin
para algo mais para desviar algumas das tentativas automatizadas de Força bruta de bot. Nós também vamos criar um gateway de autenticação adicional, ao nível do servidor web que deve ser passado antes mesmo de chegar à tela de login phpMyAdmin.
alterando a localização de acesso da aplicação
a fim de que o nosso servidor web Apache trabalhe com o phpMyAdmin, o nosso ficheiro de configuração Apache phpMyAdmin usa um nome alternativo para indicar a localização do directório dos ficheiros.
para alterar o URL onde a nossa interface de phpMyAdmin pode ser acedida, precisamos simplesmente de mudar o nome do nome falso. Abre agora o ficheiro de configuração Apache phpMyAdmin:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
em direção ao topo do arquivo, você vai ver duas linhas que se parecem com este:
Alias /phpMyAdmin /usr/share/phpMyAdminAlias /phpmyadmin /usr/share/phpMyAdmin
estas duas linhas são os nossos pseudónimos, o que significa que se acedermos ao nome de domínio ou endereço IP do nosso site, seguido por /phpMyAdmin
ou /phpmyadmin
, seremos servidos o conteúdo em /usr/share/phpMyAdmin
.
queremos desabilitar estes pseudónimos específicos, uma vez que são fortemente visados por bots e usuários maliciosos. Em vez disso, devíamos decidir o nosso próprio pseudónimo. Deve ser fácil de lembrar, mas não é fácil de adivinhar. Não deve indicar o propósito da localização da URL. No nosso caso, usaremos /nothingtosee
.
para aplicar as nossas alterações pretendidas, devemos remover ou comentar as linhas existentes e adicionar as nossas próprias:
# Alias /phpMyAdmin /usr/share/phpMyAdmin# Alias /phpmyadmin /usr/share/phpMyAdminAlias /nothingtosee /usr/share/phpMyAdmin
quando terminar, salve e feche o arquivo.
Para implementar as alterações, reinicie o serviço web:
sudo systemctl restart httpd.service
Agora, se você ir para a localização anterior do seu phpMyAdmin instalação, você irá obter um erro 404:
http://server_domain_or_IP/phpMyAdmin
no Entanto, sua interface do phpMyAdmin estará disponível no novo local, foi selecionada:
http://server_domain_or_IP/nothingtosee
configurar um portal de autenticação do servidor Web
a próxima funcionalidade que queríamos para a nossa instalação era uma linha de autenticação que um utilizador teria de passar antes de ver o ecrã de autenticação do phpMyAdmin.
felizmente, a maioria dos servidores web, incluindo o Apache, fornecem esta capacidade nativamente. Só precisamos modificar nosso arquivo de configuração Apache para usar um arquivo de autorização.
abra o ficheiro de configuração do Apache phpMyAdmin no seu editor de texto de novo:
sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
dentro do bloco de diretório /usr/share/phpMyAdmin
, mas fora de qualquer um dos blocos dentro, precisamos adicionar uma diretiva de cancelamento. Vai ficar assim.:
. . .<Directory /usr/share/phpMyAdmin/> AllowOverride All <IfModule mod_authz_core.c> . . .</Directory>. . .
isto permitir-nos-á especificar detalhes de configuração adicionais num ficheiro chamado .htaccess
localizado dentro do próprio directório phpMyAdmin. Vamos usar este arquivo para configurar a nossa autenticação de senha.
Salve e feche o ficheiro quando terminar.
reiniciar o serviço web para implementar esta alteração:
sudo systemctl restart httpd.service
crie um .htaccess File
Now that we have the override directive in our configuration, Apache will look for a file called .htaccess
within the /usr/share/phpMyAdmin
directory. Se encontrar uma, utilizará as directivas contidas nas mesmas para completar os seus dados de configuração anteriores.
nosso próximo passo é criar o arquivo .htaccess
dentro desse diretório. Use o seu editor de texto para fazer isso agora:
sudo nano /usr/share/phpMyAdmin/.htaccess
Dentro deste arquivo, precisamos inserir as informações a seguir:
AuthType BasicAuthName "Admin Login"AuthUserFile /etc/httpd/pma_passRequire valid-user
vejamos o que cada uma dessas linhas de média:
- AuthType Basic: Esta linha especifica o tipo de autenticação que estamos implementando. Este tipo irá implementar a autenticação de senha usando um ficheiro de senha.
- AuthName: isto define a mensagem para a janela de autenticação. Você deve manter este genérico para que os usuários não autorizados não ganhem conhecimento sobre o que está sendo protegido.
- AuthUserFile: isto define a localização do ficheiro de senha que será usado para Autenticação. Isto deve estar fora dos directórios que estão a ser servidos. Vamos criar este arquivo em um momento.
- necessita de um utilizador válido: Indica que só os utilizadores autenticados devem ter acesso a este recurso. Isto é o que realmente impede os usuários não autorizados de entrar.
quando terminar de introduzir esta informação, salve e feche o ficheiro.
Crie o ficheiro de senha para Autenticação
agora que especificámos a localização do nosso ficheiro de senha através do uso da Directiva AuthUserFile
no nosso ficheiro .htaccess
, precisamos de criar e preencher o ficheiro de senha.
isto pode ser conseguido através do uso de um utilitário Apache chamado htpasswd
. Invocamos o comando passando-lhe o local onde gostaríamos de criar o ficheiro e o nome de utilizador que gostaríamos de introduzir os detalhes de autenticação para:
sudo htpasswd -c /etc/httpd/pma_pass username
a bandeira -c
indica que isto irá criar um ficheiro inicial. A localização do Diretório é a localização e o nome do arquivo que será usado para o arquivo. O utilizador é o primeiro utilizador que gostaríamos de adicionar. Ser-lhe-á pedido para introduzir e confirmar uma senha para o utilizador.
se quiser adicionar utilizadores adicionais para autenticar, poderá voltar a ligar para o mesmo comando sem a opção -c
, e com um novo nome de utilizador:
sudo htpasswd /etc/httpd/pma_pass seconduser
com o nosso ficheiro de senha criado, foi implementada uma ‘gateway’ de autenticação e devemos agora ver uma ‘prompt’ de senha da próxima vez que visitarmos o nosso site:
http://server_domain_or_IP/nothingtosee
uma vez que você digite suas credenciais, você será levado para a página de login phpMyAdmin normal. Esta camada adicional de proteção ajudará a manter seus registros MySQL limpos das tentativas de autenticação, além do benefício de segurança adicionado.
conclusão
pode agora gerir as suas bases de dados MySQL a partir de uma interface web razoavelmente segura. Esta IU expõe a maior parte da funcionalidade que está disponível a partir da linha de comandos MySQL. Você pode ver bancos de dados e esquemas, executar consultas, e criar novos conjuntos de dados e estruturas.