De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Infraestrutura para Aplicações Web Seguras parte 2 - SGBDs

Colaboração: Alexandro Silva

Data de Publicação: 09 de março de 2010

O SGBD é ao mesmo tempo o bom e o mau elemento deste processo. Se bem configurado e mantido será um aliado poderoso, infelizmente isto nem sempre ocorre sendo bastante otimista.

As últimas noticias revelam que as boas práticas não estão sendo obedecidas. A técnica de ataque mais utilizada atualmente é o SQL Injection que nada mais é injectar código malicioso permitindo desde a criação de um simples usuário até a total indisponibilidade do serviço.

99.99% dos sites comprometidos (defacements) diariamente estão vulneráveis a este de ataque.Esta falha não está somente ligada ao SGBD, um código mau escrito abre esta e outras vulnerabilidades na aplicação como veremos na 3a. parte do nosso artigo.

Os SGBDs mais utilizados numa infraestrutura baseada em software livre são o MySQL e o Postgresql. Cada um destes sistemas possuem características que atendem a várias demandas de performance, produtividade, escalabilidade e segurança.

A implementação de uma infraestrutura segura para banco de dados inicia-se na modelagem do banco. Uma modelagem bem feita permitirá que sua base de dados expanda mantendo a total integridade, escalabilidade e segurança. Evitando brechas de segurança e evitando as sempre presentes "gambiarras".

Como definimos anteriormente o sistema de arquivos e o tipo de redundância dos discos serão itens criticos de performance e segurança na manipulação dos dados.

SGBD MySQL Seguro

  1. Amplie a segurança local Desabilite o uso do comando LOAD DATA LOCAL INFILE prevenindo contra ataques que permitem a leitura dos arquivos locais. Isso é importante caso haja ataque de SQL Injection através de uma vulnerabilidade no código PHP.

    Adicione o seguinte parâmetro na seção [mysqld] do arquivo /chroot/mysql/etc/my.cnf:

      set-variable=local-infile=0
    

  2. Altere a senha do usuário root do banco

      mysqladmin -u root password 'NOVA_SENHA' -p
    

  3. Remova usuários e bases padrões

      mysql> drop database test;
      mysql> use mysql;
      mysql> delete from db;
      mysql> delete from user where not (host="localhost" and user="root");
      mysql> flush privileges;
    

  4. Renomeie a conta do admin ( root )

      mysql> update user set user="mydbadmin" where user="root";
      mysql> flush privileges;
    

  5. Crie contas de usuários separadas para cada aplicação

      mysql -u mydbadmin -p
      
      mysql> CREATE DATABASE blog;
      mysql> CREATE DATABASE guestbook;
      
      mysql> CREATE USER 'blgu'@'localhost' IDENTIFIED BY 'SENHA';
      mysql> CREATE USER 'gbu'@'localhost' IDENTIFIED BY 'OUTRASENHA';
      
      mysql> GRANT ALL PRIVILEGES ON blog.* TO 'blgu'@'localhost' WITH GRANT OPTION;
      mysql> GRANT ALL PRIVILEGES ON guestbook.* TO 'gbu'@'localhost' WITH GRANT OPTION;
      
      mysql> FLUSH PRIVILEGES;
    

MySQL Tunning

Para fazer o tunning do MyQSL recomendo o uso do script MySQL Performance Tuning Primer Script.

O uso desta ferrramenta é recomendado após 48 horas de uso do banco permitindo que o script detecte os valores corretos para o tunning do banco.

Links Recomendados

SGBD Postgresql Seguro

No caso do Postgresql recomendo a leitura do material do Fernando Ike aka Fike, o cara é uma sumidade no assunto. Nesta apresentação ele aborda o tunning de performance e segurança do Postgresql

Links Recomendados

Ferramentas

Links

Blog do Autor: http://blog.alexos.com.br

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Alexandro Silva