você está aqui: Home  → Arquivo de Mensagens

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


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

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script