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.