O MySQL é um dos bancos de dados mais populares na internet, sendo utilizado frequentemente em conjunto com PHP. Além de suas vantagens como facilidade de uso e boa performance, o MySQL oferece um simples mas eficiente mecanismo de segurança. Entretanto, sua instalação padrão deixa em aberto alguns pontos (senha de root em branco, por exemplo) tornando-o vulnerável a ataques.

Assim como acontece com a segurança de redes, tornar um banco de dados seguro envolve um esforço de configuração em diferentes camadas existentes (rede, sistema operacional e SGBD, dentre outras) no ambiente em que o sistema está contextualizado. Este artigo descreve os passos básicos que devem ser desempenhados com objetivo de tornar seguro um banco de dados MySQL contra ataques remotos e locais considerando duas camadas: sistema operacional e SGBD.

Pré-requisitos

Este artigo assume que o servidor Apache com o módulo para suporte a PHP estejam instalados e localizados no diretório /chroot/httpd. Além disso, assumiremos também que:

  • O MySQL será utilizado apenas por aplicações desenvolvidas em PHP e instaladas no mesmo host;
  • As ferramentas administrativas padrões (mysqladmin, mysql e mysqldump, dentre outras) serão utilizadas para gerenciar o banco de dados;
  • Backups remotos de dados serão efetuados utilizando o protocolo SSH.

Requisitos de segurança

Objetivando atingir o mais alto nível de segurança, a instalação e configuração do MySQL deve ser efetuada seguindo os seguintes requisitos de segurança:

  • O banco de dados do MySQL deve ser executado em um ambiente chrooted (ler Nota 1);
  • Os processos do MySQL devem rodar sobre um UID/GID único, isto é, que não seja utilizado por outros processos de sistema;
  • Serão permitidos apenas acessos locais ao MySQL;
  • A conta de root do MySQL deve possuir uma senha difícil de ser quebrada;
  • A conta adminitrator deve ser renomeada;
  • Acesso anônimo ao banco de dados (uso da conta nobody) deve ser desativada;
  • Todos os bancos e tabelas exemplo devem ser removidos.

A partir de agora veremos como proceder com a instalação do MySQL.

Nota 1. Ambiente chrooted.

O chrooting é a técnica usada para alterar a raiz do filesystem. O comando chroot é uma abreviação para “change root”, e ele foi criado para alterar a raiz do filesystem para o ambiente ao qual é aplicado. Isto significa que a barra inicial (/) em qualquer nome de caminho é tornada relativa ao caminho chrooted. Por exemplo, se um arquivo chamado /home/jonz/hello.txt existe no sistema, e fizermos o chrooting para /home/jonz, o arquivo vai existir no ambiente chrooted, como /hello.txt.

O objetivo de fazer chroot é para criar uma "jaula" de proteção (teoricamente) impenetrável, protegendo o que está no chroot de poder ler ou modificar qualquer arquivo fora do ambiente do chroot.

...
Quer ler esse conteúdo completo? Tenha acesso completo