12 práticas recomendadas de segurança MySQL/Mariadb para Linux

12 práticas recomendadas de segurança MySQL/Mariadb para Linux

Mysql é o sistema de banco de dados de código aberto mais popular do mundo e Mariadb (A Fork of MySQL) é o sistema de banco de dados de código aberto que mais cresce no mundo. Depois de instalar o MySQL Server, é inseguro na configuração padrão e protegê -lo é uma das tarefas essenciais no gerenciamento geral de banco de dados.

Leia também: Aprenda mysql/mariadb para iniciantes - Parte 1

Isso contribuirá para o endurecimento e o aumento da segurança geral do servidor Linux, pois os invasores sempre examinam as vulnerabilidades em qualquer parte de um sistema, e os bancos de dados foram no passado as principais áreas -alvo. Um exemplo comum é a forçada bruta da senha raiz para o banco de dados MySQL.

Neste guia, explicaremos útil Mysql/mariadb Prática recomendada de segurança para Linux.

1. Instalação segura do MySQL

Esta é a primeira etapa recomendada após a instalação do MySQL Server, para proteger o servidor de banco de dados. Este script facilita a melhoria da segurança do seu servidor MySQL, pedindo que você:

  • Defina uma senha para a conta raiz, se você não a definiu durante a instalação.
  • Desative o login do usuário root remoto removendo contas root que são acessíveis de fora do host local.
  • Remova as contas do usuário anônimo e o banco de dados de teste que, por padrão, pode ser acessado por todos os usuários, até usuários anônimos.
# mysql_secure_installation 

Depois de executá -lo, defina a senha raiz e responda à série de perguntas digitando [Sim/y] e pressione [Digitar].

Instalação segura do MySQL

2. Vincular o endereço de banco de dados ao endereço de loopback

Essa configuração restringirá o acesso de máquinas remotas, diz ao servidor MySQL para aceitar apenas conexões de dentro da localhost. Você pode defini -lo no arquivo de configuração principal.

# vi /etc /meu.CNF [RHEL/CENTOS] # VI/etc/mysql/my.conf [debian/ubuntu] ou # vi/etc/mysql/mysql.conf.d/mysqld.CNF [Debian/Ubuntu] 

Adicione a seguinte linha abaixo em [MySqld] seção.

Address de ligação = 127.0.0.1 

3. Desative o Infile Local em MySQL

Como parte do endurecimento da segurança, você precisa desativar LOCAL_INFILE Para impedir o acesso ao sistema de arquivos subjacente de dentro do MySQL usando a seguinte diretiva em [MySqld] seção.

Infile local = 0 

4. Altere a porta padrão do MySQL

O Porta A variável define o número da porta MySQL que será usado para ouvir nas conexões TCP/ IP. O número da porta padrão é 3306 Mas você pode alterá -lo sob o [MySqld] seção como mostrado.

Porta = 5000 

5. Ativar logs MySQL

Os logs são uma das melhores maneiras de entender o que acontece em um servidor, em caso de ataques, você pode facilmente ver atividades relacionadas à intrusão de arquivos de log. Você pode ativar o log mysql adicionando a seguinte variável em [MySqld] seção.

log =/var/log/mysql.registro 

6. Defina a permissão apropriada nos arquivos MySQL

Verifique se você tem permissões apropriadas definidas para todos os arquivos do servidor MySQL e diretórios de dados. O /etc/meu.conf O arquivo só deve ser escrito para root. Isso bloqueia outros usuários de alterar as configurações do servidor de banco de dados.

# chmod 644 /etc /meu.CNF 

7. Exclua história do MySQL Shell

Todos os comandos que você executa no MySQL Shell são armazenados pelo cliente MySQL em um arquivo de histórico: ~/.mysql_history. Isso pode ser perigoso, porque para quaisquer contas de usuário que você criará, todos os nomes de usuário e senhas digitados no shell serão gravados no arquivo de histórico.

# gato/dev/null> ~//.mysql_history 

8. Não execute os comandos MySQL da CommandLine

Como você já sabe, todos os comandos que você digita no terminal são armazenados em um arquivo de história, dependendo do shell que você está usando (por exemplo ~/.Bash_history Para Bash). Um invasor que consegue obter acesso a esse arquivo de histórico pode ver facilmente todas as senhas gravadas lá.

Não é altamente recomendável digitar senhas na linha de comando, algo assim:

# mysql -u root -password_ 
Conecte o MySQL com senha

Quando você verifica a última seção do arquivo de histórico de comando, você verá a senha digitada acima.

# história 
Verifique o histórico de comando

A maneira apropriada de conectar o MySQL é.

# mysql -u root -p Digite a senha: 

9. Defina usuários de banco de dados específicos para aplicativos

Para cada aplicativo em execução no servidor, dê apenas acesso a um usuário encarregado de um banco de dados para um determinado aplicativo. Por exemplo, se você tiver um site WordPress, crie um usuário específico para o banco de dados do site WordPress, como segue.

# mysql -u root -p mariadb [(nenhum)]> criar banco de dados osclass_db; Mariadb [(nenhum)]> Crie o usuário 'Osclassdmin'@'localhost' identificado por '[email protegido]%!2 '; Mariadb [(nenhum)]> conceda todos os privilégios em Osclass_db.* Para 'Osclassdmin'@'localhost'; Mariadb [(nenhum)]> Privilégios de descarga; Mariadb [(nenhum)]> saída 

e lembre -se de sempre remover as contas de usuário que não estão mais gerenciando nenhum banco de dados de aplicativos no servidor.

10. Use plugins de segurança e bibliotecas adicionais

O MySQL inclui vários plugins de segurança para: Autenticação de tentativas dos clientes para se conectar ao servidor MySQL, validação de senha e proteger o armazenamento para informações confidenciais, que estão todas disponíveis na versão gratuita.

Você pode encontrar mais aqui: https: // dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. Altere as senhas MySQL regularmente

Este é um conselho comum de informação/aplicação/segurança do sistema. Com que frequência você faz isso dependerá inteiramente da sua política de segurança interna. No entanto, pode impedir que os "bisbilhotadores" que possam estar rastreando sua atividade por um longo período de tempo, de obter acesso ao seu servidor MySQL.

Mariadb [(nenhum)]> Use mysql; Mariadb [(nenhum)]> Atualizar usuário Definir senha = senha ('Seu masspordhere') Onde user = "root" e host =' localhost '; Mariadb [(nenhum)]> Privilégios descarregados; 

12. Atualize o pacote do MySQL Server regularmente

É altamente recomendável atualizar regularmente os pacotes MySQL/Mariadb para acompanhar as atualizações de segurança e correções de bugs, do repositório do fornecedor. Normalmente, os pacotes em repositórios de sistema operacional padrão estão desatualizados.

# yum update # atualização apt 

Depois de fazer alterações no servidor MySQL/Mariadb, sempre reinicie o serviço.

# SystemCtl reinicie o mariadb # rhel/centros # SystemCtl Reiniciar mysql # Debian/Ubuntu 

Leia também: 15 dicas úteis de ajuste e otimização do MySQL/Mariadb

Isso é tudo! Adoramos ouvir de você através do formulário de comentário abaixo. Compartilhe conosco qualquer dicas de segurança MySQL/Mariadb ausentes na lista acima.