Resumo da palestra Segurança no Firebird no 7º FDD

Olá a todos!

Segue abaixo o resumo que fiz da palestra de Segurança no Firebird Luiz Paulo de O. Santos, 7º FDD.


    A segurança deve ser revista periodicamente. Uns dos cuidados que deve-se ter é em relação a exposição da máquina na rede, somente usuários específicos devem ter acesso ao arquivo de banco de dados no servidor.

    Uma prática de insegurança é utilizar a senha SYSDBA para todos os acessos ao banco de dados, pois assim perde-se o controle do quem fez determinada ação no banco de dados, o ideal é criar um usuário específico para cada conta (Nunca utilize SYSDBA junto com masterkey). Uma prática de segurança é a troca periódica da senha do SYSDBA, no Linux existe um script que realiza a troca da senha para a que foi especificada, junto com ele é possivel agendar semanalmente a troca da senha SYSDBA. Na versão 2.5 do Firebird será possível a transefência de direitos do usuário SYSDBA para outro usuário do sistema, a tranferência pode ser revogada futuramente.

    Alguns comandos como CURRENT_USER e CURRENT_ROLE, já estão dispoíveis desde a versão 1.5 do Firebird, com ele é possivel saber o usuário atual e quais os direitos deste usuário, respectivamente.

    A utilização de concomitantes para criação de roles e criação de Stored Procedures para a criação de logs no banco de dados é um boa pratica. Uma outra prática que visa a melhora da performace do banco é desabilitar o Garbage Colector Automático, pois com ele habilitado os registros ficam "presos" até o final da execução do GCA e a possibilidades de geração de deadlocks é maior.

    A utilização do servidor embutido do Firebird só deve ser utilizado no modo somente leitura, pois este modo embutido não utiliza senhas para acesso, portanto qualquer banco que esteja na máquina poderá ser acessado por ele. Uma boa utilização para ele seria junto com uma distribuição de uma demo no CD ou PenDrive.

    Alguns comandos essenciais:


  • gstat - Exibe o status do banco
  • gfix -shut -full - Melhoria no Garbage Colector e diminuição do tamanho do Banco
  • With Lock - Utilizado junto com o SELECT, consegue-se bloquear os registros do select para o modo somente leitura. Esta é uma boa utilização caso seja preciso utilizar um UPDATE-SELECT para assegurar que os registros do select não venhão a ser alterados enquanto estiver sendo feito o update.

    Ao criar-se um servidor para o Firebird, uma boa prática é somente colocar neste servidor o banco de dados Firebird, outros serviços ou outros banco recomenda-se a utilização de outros servidores. Até para outros bancos, o ideal é somente a utilização de 1 servidor de banco de dados por máquina. Utilize somente virtualização com um hardware específico, caso contrario a performace do banco irá cair.

    Realize backups completos (gback) e incrementais (nbackup), as cópias devem ser feitas para um outro HD, pois caso esteja com algum problema tem-se mais garantias que o backup do banco esteja em condições normais.

    A utilização de Shaddow é muito importante para caso o servidor não seje muito confiável. Shaddow é um espelhamento do banco de dados , caso ocorra algum problema na base atual pode-se recuperar com o backup e com o shaddow volta o banco para o estado atual dos registros. Uma boa configuração do servidor do firebird é utilizar 3 HDs, um para o sistema operacional, outro para o firebird e um terceiro para os backups e shaddows.

    A porta padrão do Firebird 3050, deve ser trocada para uma outra porta e, na porta padrão coloca-se uma implementação de um bastion-host e logs na porta padrão, caso haja uma tentativa de invasão a porta 3050 é a primeira a ser atacada no servidor.

    Caso seja preciso utilização do Firebird pela internet, utilize uma VPN, como o ZBD, com ele é possivel compactar e criptografar a transmissão dos dados. A rede Wireless é muito vulnerável por natureza, então se for utilizar o banco  dados por esta conexão, utilize o ZBD com o modo de criptografia habilitado, pois os dados transmitidos pelo Firebird passam abertos pela rede e qualquer um que conseguir colocar um Sniffer na rede obterá todas as informações que trafegaram.

    O servidor de banco de dados deverá está com um firewall habilitado, com esquemas de bloqueio de brutal-force e, com uma configuração no IPTables consegue-se descobrir quais os IPs que acessam o banco de dados.

    Tipos de Ataque que pode ocorrer: Físico (nas instalações do servidor), Lógicos (brutal-force, deny of service, spoofs(sniffers e penetração/invasão no servidor))

    Algumas ferramentas para realização de testes de penetração e monitoramento:

  • Back Track - Distribuição linux para realização de testes de penetração e descobrir as falhas de segurança do servidor.
  • Deft - Distribuição linux para análise de Forencia Computacional
  • Snort - Ferramenta para detecção de intrusão, com ele rodando no servidor é possivel programar ações para ser feitas quando o servidor sofrer um ataque. Com o Snort é possivel descobrir o IP que mais acessa o BD.
  • OpenVAS - Ferramenta para testes de penetração.

    SQL Injections, devem ser tratados na aplicação. O Delphi deve ser retirado das máquinas dos usuários finais, pois ele possui uma ferramenta chamada Insight que consegue capturar as senhas do banco de dados.

   
    Recursos do Firebird 2.5:

  • Melhor suporte a multiprocessamento
  • Mais seguro
  • Maior ganho de performace
  • Utilização da criptografia SHA-1 para as senhas dos usuários do Banco
  • Possibilidade de realizar um SELECT em tabelas diferentes de servidores diferentes.
  • Muitas mudanças nas UDFs

    Os 8 dos 10 mandamentos para o uso seguro do Firebird, de Luiz Paulo de O. Santos:

  1. Não usará jamais a senha masterkey, seja para o SYSDBA ou outro usuário.
  2. Terás sempre backup atualizado, shaddows e base replicada.
  3. Usarás sempre o ZBD e um firewall para protejer seu Firebird.
  4. Não abusarás de UDFs, principalmente de UDFs que você não criou.
  5. Não utilizarás as variáveis ISC_USER e ISC_PASSWORD em vão.
  6. Manterás o Hardware e sistema operacional atualizados.
  7. Não atribuirás IP rotável ao servidor sem real necessidade.
  8. Não deixarás faltar espaço no disco do seu banco de dados.


Review FDD 7: lagix.blogspot.com
Conferencia Internacional do Firebird: http://www.firebird-conference.com/