Blindando o MySQL: Configurações de segurança

O banco de dados é parte importante e fundamental de um ou vários sistemas de uma empresa, provendo informações necessárias para tomadas de decisões, lançamentos de produtos e regras de negócios, ou seja, é no banco de dados onde estão a informações mais valiosas de uma empresa.

[ Hits: 17.669 ]

Por: Allan Moraes em 28/10/2015


Instalação e configurações do Sistema Operacional



O banco de dados é parte importante e fundamental de um ou vários sistemas de uma empresa, provendo informações necessárias para tomadas de decisões, lançamentos de produtos e regras de negócios, ou seja, é no banco de dados onde estão a informações mais valiosas de uma empresa.

É fato que tanta informação valiosa em um mesmo local não é algo seguro por natureza e é ai que você, DBA, deve agir com inteligência e elaborar estratégias de segurança como: Políticas de senhas, firewall, SO, SGBD e até a própria cultura do local onde você trabalha, pois, não adianta de nada você cuidar da segurança e a sua equipe ficar trafegando o usuário e senha em plain text pela rede.

Criando uma boa estratégia de segurança você evita dores de cabeça como: Acessos indevidos, roubo ou exclusão de dados e indisponibilidade no serviço. Então hoje estarei ensinando alguns truques e passando algumas dicas de como deixar o seu SGBD mais seguro para que você consiga dormir a noite.

Minha primeira dica é: instale o MySQL apenas em sistemas Linux. Pode ser Debian, Suse, Redhat, CentOS, Ubuntu etc. Além do SGBD ter uma performance maior nestes sistemas, teremos uma maior maleabilidade e facilidade de trabalhar com o MySQL e implementar rotinas que possam nos ajudar.

Não deixe os backups do seu MySQL onde está instalado o seu SGBD. Além de não ser uma prática nem um pouco inteligente e muito menos eficaz, você facilita a vida do invasor. Sempre coloque o seu backup em um servidor separado, específico para este serviço e sempre tente trafegar os dados com TLS.

Caso você tenha instalado o MySQL via repositório oficial via yum ou apt-get, por exemplo, você já terá esta configuração pronta, caso tenha compilado o source code, você deve criar um usuário para o MySQL. Este usuário será o responsável por controlar o serviço. Vamos aos comandos para criar o usuário e setar as permissões:

# useradd mysql -d /localdeinstalacao -b /sbin/nologin
# chown mysql:mysql /localdeinstalacao -R


Não esqueça de configurar o seu my.cnf na sessão [ mysqld ] o usuário: "user=mysql" e de configurar as permissões deste arquivo:

# chmod 400 /etc/my.cnf
# chown mysql:mysql /etc/my.cnf


Nunca, jamais, em hipótese alguma faça isso:

# mysql -u root -p'minhasenha'

Assim, você está gravando o seu login de administração no history do Linux! Outra falha clássica é colocar o usuário e senha em um arquivo para não precisar digitar a senha para se logar via mysqlclient. Fazendo isso você está deixando a chave na porta para o invasor.

A próxima dica é: após efetuar a instalação do seu SGBD, execute o programa de configuração de segurança do MySQL. Ele fará diversas checagens e perguntará se as quer corrigir ou não. A primeira é a mais importante de todas: "Você quer trocar a senha de root?".

# mysql_secure_installation

Outra falha de segurança grotesca e que muitos esquecem de fazer é remover o .mysql_history, que fica na home do seu usuário. Neste arquivo ficam armazenados todos os comandos que você executa no mysqclient e dependendo da versão, até os comandos que contêm senhas ficam lá. Um solução é colocar na cron para remover este arquivo a cada 10 minutos, mas não é efetiva. Eu indico criar um link simbólico para o /dev/null, pois esta solução sim resolve o seu problema.

# ln -s /dev/null /SUAHOME/.mysql_history

E a dica mais óbvia, mas que é sempre bom lembrar: não deixe o seu sistema desatualizado! Crie rotinas de update no SO da máquina e no seu SGBD, a falha de updates pode ser tão ou até mais grave do que uma senha fraca. Aliás, não use senhas fracas e óbvias.

    Próxima página

Páginas do artigo
   1. Instalação e configurações do Sistema Operacional
   2. Firewall e Rede
   3. MySQL e seus usuários
Outros artigos deste autor

Fazendo backup do seu MySQL com API do Dropbox

Leitura recomendada

Cluster MySQL - Instalação e configuração

Store Procedures com Transaction no MySQL

A função DATE_FORMAT() do MySQL

SQL Dicas & Truques (versão 0.1)

Introdução ao MySQL

  
Comentários
[1] Comentário enviado por fabio em 28/10/2015 - 12:33h

Excelente artigo, meus parabéns!

[2] Comentário enviado por MySQLBox em 28/10/2015 - 12:43h


[1] Comentário enviado por fabio em 28/10/2015 - 12:33h

Excelente artigo, meus parabéns!


Obrigado, Fabio!

[3] Comentário enviado por wleite em 07/11/2015 - 11:48h

Parabéns pelo artigo!!! As dicas são muito boas!!!

[4] Comentário enviado por wagnerfs em 09/11/2015 - 11:44h

Parabéns pelo artigo e obrigado por compartilhar o conhecimento.
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782

[5] Comentário enviado por UrielRicardo em 20/10/2016 - 15:38h

Boa!
Sysadmin


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts