Firebird Seguranca
Firebird Seguranca
Firebird Seguranca
Geoff Worboys
3 Maro 2008 Verso do documento 0.5-pt_br Traduo para o Portugus do Brasil: Gabriel Frones
ndice
Introduo .............................................................................................................................................. 3 O Funcionamento em Segundo Plano ...................................................................................................... 3 O Problema ........................................................................................................................................... 4 A Soluo .............................................................................................................................................. 5 Dificuldades ................................................................................................................................... 5 Protegendo as Informaes do Usurio ............................................................................................ 5 Servidor Firebird Embedded ................................................................................................................... 8 Outras Formas de Obscuridade ............................................................................................................... 9 Baixa Segurana Aceitvel ..................................................................................................................... 9 Optando por Obscuridade ..................................................................................................................... 10 O Argumento Filosfico ....................................................................................................................... 10 Concluses ........................................................................................................................................... 10 Agradecimentos .................................................................................................................................... 11 Apndice A: Histrico do Documento ................................................................................................... 12 Apndice B: Uso deste Documento ....................................................................................................... 13
Introduo
Se voc veio parar nessa pgina e no sabe nada sobre Firebird, veja este link: www.firebirdsql.org Este artigo visa discutir a questo de segurana dos arquivos de base de dados do Firebird e, particularmente, o acesso aos metadados armazenados nestes, tendo sido escrito em resposta s frequentes perguntas sobre o tema em listas de discusses. O artigo evita especificaes tcnicas. Para ler sobre como proteger arquivos no seu sistema operacional, especificamente, procure pela documentao relevante a este sistema operacional. Para ler sobre como configurar a segurana de usurios e objetos em sua base de dados Firebird, procure pela documentao disponvel no website do projeto (linkado acima) ou compre o livro Dominando o Firebird (The Firebird Book, no original, em ingls) da autora Helen Borrie.
Todo servidor Firebird possui um usurio SYSDBA, que possui acesso irrestrito a qualquer banco de dados disponvel a esse servidor. Os privilgios especificos dos bancos de dados so ignorados quando este acessado por esse usurio. Quando voc copia um banco de dados para dentro de um servidor, voc pode utilizar este usurio para determinar os privilgios de acordo com os usurios e as necessidades deste servidor. No entanto, dessa forma, se eu tiver acesso ao arquivo do banco de dados, eu posso copiar esse arquivo para um servidor onde eu saiba a senha do usurio SYSDBA, e obterei acesso irrestrito ao arquivo. Como voc pode notar, a segurana do Firebird presume que seu servidor estar sendo executado em um ambiente de segurana apropriado. O Firebird em si no toma precauo alguma para evitar riscos externos. Se uma pessoa tem acesso fsico ao arquivo de banco de dados, no h uma maneira efetiva para prevenir que o usurio leia toda a informao (dados e metadados) contida neste arquivo.
Nota
A segurana adequada depende do nvel de segurana que necessrio ao ambiente em questo. Este quesito varia muito de instalao para instalao.
Isto significa que, para uma segurana razovel, toda instalao deve manter os arquivos do banco de dados adequadamente seguros. Na maioria dos casos, isto significa que o servidor Firebird deve rodar em um usurio especfico no sistema operacional, e apenas esse usurio (e provavelmente o administrador/root) deve ter acesso direto aos arquivos do banco de dados. Estes arquivos no devem ficar em diretrios compartilhados na rede ou que sejam acessveis por qualquer pessoa que no o pessoal autorizado. Para uma segurana ainda mais efetiva, prefervel que o computador que ser o servidor fique armazenado em um local fsico de acesso restrito, de forma a prevenir que algum tente acessar os arquivos por trs das restries do sistema operacional. No entanto, a explicao acima no necessariamente ajuda desenvolvedores que, tendo desenvolvido um banco de dados para distribuio e instalao em locais remotos, desejam proteger as propriedades intelectuais contidas nestes arquivos. Tais preucupaes podem incluir desde os metadados (estruturas, relacionamentos, stored procedures e triggers) at os dados em si, includos em algumas tabelas. este o ponto que representa o foco deste artigo.
O Problema
Um desenvolvedor cria um banco de dados (e, normalmente, um aplicativo cliente que o acompanha) para instalao em locais remotos. Nestes locais, natural que ao menos uma pessoa de l tenha acesso irrestrito ao computador no qual o servidor Firebird ser executado - para poder executar tarefas como backup's e manuteno. Como descrito no tpico acima, acesso direto aos arquivos permitem que se ganhe acesso completo e irrestrito a toda a informao das tabelas (dados e metadados). Nestes casos, o desenvolvedor pode no confiar que os usurios deste local respeitaro a propriedade intelectual que este banco de dados representa. Ento, fica o receio de que o usurio faa a engenharia reversa do banco de dados por interesse prprio, ou que no haja, neste local, uma preocupao real em manter seguros os arquivos a acesso de terceiros. Isto nos leva s frequentes perguntas nas listas de Firebird como: Eu quero proteger os metadados de meu banco de dados (estruturas, stored procedures, triggers etc.) de todos os usurios em uma instalao remota. Como posso fazer isso com Firebird? Eu quero impedir que qualquer usurio de uma instalao remota tenha acesso a estas tabelas em particular. Elas contm informao proprietria que usada internamente pelo aplicativo. O Firebird (pelo menos at a v1.5) no oferece nenhuma facilidade integrada de encriptao. A resposta simples s questes acima que isto no pode ser feito com as atuais capacidades do Firebird. Um usurio que tem acesso direto ao arquivo, tem acesso irrestrito s informaes dele. Na primeira questo, nenhum arranjo pode ser feito, porque o servidor em si deve ser capaz de ler os metadados da tabela. Na segunda questo, possvel implementar rotinas de encriptao/desencriptao no aplicativo cliente, mas neste caso, voc perde a capacidade de fazer um uso efetivo dos ndices e das facilidades de busca do Firebird - e o gerenciamento de senhas de encriptao torna-se um problema ainda maior (mais adiante). 4
A Soluo
Existe apenas uma soluo possivel para esses problemas, na realidade: Armazenar o banco de dados em seu prprio computador e us-lo como servidor remoto, para permitir que os clientes conectem ao banco atravs da internet. Terminal server (Windows ou Linux/Unix) uma alternativa interessante para implementar esta estrutura. Desta forma, voc fica com o controle sobre o arquivo de banco de dados e pode restringir o acesso s suas informaes utilizando as ferramentas internas de segurana do Firebird (roles e privilgios, etc.).
Dificuldades
importante ressaltar que voc pode encontrar dificuldades at mesmo nesta situao, se sua inteno proteger a estrutura do banco de dados.
Segurana arquivos e metadados Existem algumas situaes em que impraticvel colocar o servidor Firebird sob uma infra-estrutura adequadamente segura. Em perodos em que o escritrio esteja funcionando, bem pouco provvel que algum poder acessar o computador para copiar os arquivos do banco de dados (ou at mesmo roubar o computador ou disco rgido para obter os arquivos posteriormente). No entanto, fora do horrio normal de trabalho (noites e finais de semana), a situao pode ser um pouco diferente. Algum poderia conseguir entrar no escritrio e roubar o disco rgido do computador (ou levar o computador inteiro) e levar a algum lugar onde possa obter acesso ao banco de dados.
Encriptao
O Firebird em si no disponibiliza nenhuma ferramenta de encriptao integrada, mas existem excelentes produtos que podem fornecer essa soluo. Voc poderia instalar um software que crie uma partio virtual encriptada em seu computador e colocar os arquivos do banco de dados (e qualquer outra informao confidencial) nessa partio. Dessa forma, toda a informao ficar armazenada em um arquivo encriptado e ningum poder acess-la a menos que tenha a senha. Sempre que voc iniciar o computador, ter que montar a partio virtal encriptada e fornecer a senha secreta para poder acessar as informaes. Esse processo manual de inicializao pode ser um pouco inconveniente, mas pode proporcionar uma excelente segurana a computadores que no so constantemente vigiados. Alguns softwares com essas caractersticas so: TrueCrypt (www.truecrypt.org), Bestcrypt da Jetico (www.jetico.com) e PGPDisk (www.pgpi.org/products/pgpdisk/ note que este link te levar a uma antiga verso gratuita. Nesta mesma pgina existem links para as verses comerciais mais novas). Existem outros, mas estes dois ltimos so os que eu mesmo usei.
Por que o Firebird no possui encriptao nativa? Devido s necessidades descritas anteriormente, muito comum encontrar usurios pedindo que o Firebird, em um verso futura, tivesse a capacidade de encriptar metadados, dados do usurio, ou at mesmo o banco de dados todo. Como no sou um desenvolvedor do ncleo do Firebird, no posso afirmar categoricamente que no vai acontecer. Mas a questo aqui no realmente se a encriptao praticvel ou til, mas se o gerenciamento de senhas de encriptao proporcionaria uma soluo para os problemas que estamos examinando. A encriptao em si pode apenas ser to boa quanto a senha de desencriptao. Pode ser ainda pior, mas no pode ser melhor. Existem diversos excelentes algoritmos de encriptao disponveis que poderiam ser utilizados. Quando a encriptao boa, os ataques costumam centralizar-se contra a senha e no contra a encriptao em si.
Como funcionaria a encriptao? Ento vamos analisar como funcionariam as coisas se o Firebird proporcionasse maneiras de encriptar metadados no banco de dados... Antes que um banco de dados pudesse ser acessado, a senha deveria ser fornecida. Dar a senha ao usurio seria irrelevante, pois nos levaria de volta ao problema original. Ento podemos presumir que, sempre que o cliente reiniciar o servidor, teria que chamar o desenvolvedor, que poderia ento entrar com a senha. Mesmo que isso fosse praticvel, no necessariamente resolveria o problema. Por exemplo: o cliente poderia instalar algum tipo de software para monitorar o servidor e roubar a senha. Existem solues baseadas em hardware para proporcionar a senha para o processo de desencriptao. Mas novamente, este dispositivo precisaria ficar sob a posse do cliente, e se no confiamos nele, no podemos imped-lo de obter acesso ao banco de dados em outro computador onde a senha do usurio SYSDBA conhecida. 6
Segurana arquivos e metadados O Firebird um produto Open Source. Se as facilidades de encriptao forem nativas ou atravs de bibliotecas adicionais tambm open source, seria possvel aos usurios desenvolverem suas prprias verses do servidor ou da biblioteca que no apenas providencie as capacidades de encriptao e desencriptao do banco de dados, mas tambm possa mostrar a senha na tela ou simplesmente mostre os resultados desencriptados diretamente. O desenvolvedor, que no tem o controle do servidor, no pode detectar e nem prever tal atividade. Voc pode vir a considerar a construo de sua prpria verso do Firebird server, com a senha de desencriptao escondida no executvel. Mas descompiladores so facilmente encontrados. No levaria muito tempo para descobrir a senha por uma simples comparao das verses descompiladas da sua verso do servidor e da verso normal. Existem vrios bancos de dados que existem com o propsito de proporcionar uma forte encriptao. Talvez a encriptao seja forte, mas a menos que o gerenciamento de senhas sesteja no local para suportar essa ferramenta, a encriptao no alcanar o efeito desejado. Pode at encoraj-lo a acreditar que est protegido, mas voc precisa estudar o gerenciamento de senhas para descobrir se realmente verdade. A dura realidade que, se voc no tem o controle sobre o hardware no qual o processo de encriptao e desencriptao ocorre, nunca estar protegido. Se a senha de desencriptao no pode ser mantida em segurana, ento at mesmo as melhores encriptaes tornan-se apenas um pouco mais que segurana por obscuridade.
2.
Segurana arquivos e metadados diretamente pelo sistema operacional. Conceder a um usurio suspeito acesso para instalar programas em um servidor seguro j no boa idia, mas se voc tiver especificado permisses de arquivo apropriadas em arquivos de banco de dados seguros, o servidor embedded no representa uma ameaa. A ameaa vem de todas as outras coisas que o usurio poderia instalar. O fato de o servidor embedded existir serve apenas para ressaltar que possvel acessar diretamente as informaes de um arquivo de banco de dados, especialmente em um ambiente open source. Se j no existisse, certamente seria possvel que algum compilasse um equivalente.
O Argumento Filosfico
H tambm a seguinte questo filosfica: Por que voc escolheria um banco de dados Open Source para construir um produto com banco de dados proprietrio. Muitas pessoas contribuiram com o projeto com a crena de que a melhor forma de se fazer software Open Source. Mais particularmente, quando se trata de armazenamento de informaes do usurio, eu acredito que os usurios precisem ter a habilidade de acessar sua prpria informao - o que normalmente inclui a necessidade de entender a estrutura e os processos que voc construiu (metadados). Se voc sair do mercado ou ficar, de alguma forma, indisponvel, ser de crtica importancia que o usurio consiga ao menos extrair sua prpria informao (em formatos apropriados) de forma a conseguir migrar para sistemas alternativos. Voc pode confiar em seus usurios para respeitarem sua propriedade intelectual enquanto voc ainda estiver no mercado e disponvel? Disponibilize os servios e facilidades necessrios e provavelmente, eles respeitaro. Caso contrrio, ento h uma grande chance de que no h nada que voc possa fazer.
Concluses
O problema que muitas pessoas no entendem de segurana e como difcil fazer bem feito. Lamentavelmente existem muitos softwares que estimulam esses desentendidos por implementar obscuridade no lugar de segurana de verdade. Observe o nmero de empresas que existem que oferecem servios de recuperao de informao, que na verdade, nada mais que quebrar a suposta segurana da informao protegida por obscuridade. Encriptao no um milagre da segurana. Se voc no tiver o controle sobre a estrutura (o hardware, o sistema operacional e todos os softwares neste sistema), voc no ter controle sobre a segurana - no importa que esquemas de encriptao voc implemente no local. Essa a situao que voc tem quando precisa distribuir seu banco de dados para instalaes externas. 10
Segurana arquivos e metadados Se voc realmente precisa proteger as informaes (dados e metadados) de seu banco de dados, ento voc precisa reter o controle do arquivo do banco de dados e da estrutura em que ele ser acessado. Nenhuma outra soluo oferece o mesmo nvel de segurana.
Agradecimentos
Eu gostaria de agradecer a todas as pessoas que avaliaram e comentaram este artigo. Gostaria tambm de agradecer as pessoas que contribuem para a lista de suporte do Firebird, que fonte de grande parte das informaes disponveis neste artigo.
11
GW GW
Primeira edio. A seo Baixa Segurana Aceitvel foi revisada para tentar ressaltar que algoritmos XOR simples so fracos demais, para assegurar que os leitores investiguem mais a fundo, se estiverem interessados nessa soluo. Seo adicional sobre o servidor Embedded (e referencias a ela). Movidas notas de rodap para uma nota em itlico, notas de rodap no funcionam bem em HTML. Adicionado TOC. Adicionada referencia ao TrueCrypt. Adicionada seo Uso deste documento. Adicionada seo de agradecimentos. Histrico do Documento e Uso deste Documento movidos para apndices. Adicionado nmero de verso para uso juntamente com o projeto Firebird. Documento adicionado ao repositrio CVS do Firebird. Traduo para o Portugues do Brasil por Gabriel Frones.
N/A
26 Apr 2005
GW
N/A 0.5
GW PV
GF
12
13