Arquivo outubro 2014

tripwire – Checando a integridade do sistema

A primeira versão do Tripwire foi escrita por Gene Kim e Dr. Eugene Spafford da Universidade de Purdue em 1992 e lançado para a comunidade de código aberto. Desde 1999, a Tripwire Inc. continuou a inovar e expandir a plataforma para um conjunto completo de soluções de segurança.  

O Tripware é uma ótima ferramenta para checar a integridade do sistema, sendo um sistema de detecção de intruso baseado em host que ajuda a manter o administrador informado em caso de mudanças indesejadas mantendo estas informações em sua base de dados.

Instalação

Neste artigo o tripwire será instalado em um sistema Debian versão 7 (Wheezy), certifique-se de que seu arquivo /etc/sources.list esteja bem configurado e efetue a instalação com o comando apt-get:

apt-get install tripwire

O tripwire utiliza duas chaves criptográficas, na tela inicial é questionada a criação da chave do “site”, que é a chave utilizada para assinar as configurações e políticas  e chave local, que é responsável por assinar arquivos específicos do sistema e sua base de dados.

A tela apresentada informa sobre a possibilidade de uma das senhas ser comprometida caso algum atacante esteja conectado ao servidor, pois nesse momento da instalação e configuração a senha não é criptografada.

Recuse a criação de ambas as chaves para possamos gerar as mesmas manualmente, por fim são informadas as localizações dos binários e bases de dados.

Configuração

Conforme descrito acima, o tripwire utiliza um par de chaves, estas são criadas informando o local das mesmas, no caso /etc/tripwire bastando digitar uma senha e em seguida repetir a mesma:

Chave do site

twadmin --generate-keys --site-keyfile /etc/tripwire/site.key

Chave local

twadmin --generate-keys --local-keyfile /etc/tripwire/`hostname`-local.key

O tripwire utiliza dois arquivos de configuração, o twcf.txt e o twpol.txt que são responsáveis pelo armazenamento de configurações e políticas. Estes encontram-se em formato texto, porém o tripwire os lê as configurações e políticas em formato binário, com os comandos a seguir é realizado o processo de criação do arquivo de configuração, será questionada as chaves do do site criada anteriormente.

twadmin --create-cfgfile --cfgfile /etc/tripwire/tw.cfg --site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt

Em seguida é criado o arquivo de políticas, após a execução dos comandos será solicitada a senha do site:

twadmin --create-polfile --cfgfile /etc/tripwire/tw.cfg --polfile /etc/tripwire/tw.pol --site-keyfile /etc/tripwire/site.key /etc/tripwire/twpol.txt

Após a conversão dos arquivos, a configuração dos mesmos pode ser visualizada com os seguintes comandos:

twadmin --print-cfgfile --cfgfile /etc/tripwire/tw.cfg
twadmin  --print-polfile --polfile /etc/tripwire/tw.pol

Após realizada a configuração e conferidos os arquivos, o banco de dados do tripwire deve ser inicializado com os seguintes comandos, será iniciada a senha local criada anteriormente:

tripwire --init --cfgfile /etc/tripwire/tw.cfg --polfile /etc/tripwire/tw.pol

Finalmente é efetuada a checagem do sistema com os seguintes comandos:

tripwire --check --cfgfile /etc/tripwire/tw.cfg --polfile /etc/tripwire/tw.pol

Os relatórios são localizados no diretório /var/lib/tripwire, na sessão a seguir será demonstrado como ler os relatórios gerados, manter a base de dados atualizada e automatizar as checagens.

Administração

Como informado anteriormente, os relatórios do tripwire ficam armazenados e /var/lib/tripwire/report ou de acordo com o parâmetro REPORTFILE no arquivo de configuração.

Os relatórios possuem por padrão o formato HOSTNAME-AAAAMMDD-HHMMss.twr, com a linha de comandos a seguir é possível exibir os relatórios:

twprint --print-report --twrfile /var/lib/tripwire/report/HOSTNAME-20141024-155019.twr

Ao analisar o arquivo de relatório, é possível ver ver diversos detalhes, como número de arquivos checados, hostname, endereço ip, a linha de comandos utilizada para gerar o relatório, dentre outros.

O processo de atualização da base de dados consiste em desmarcar os arquivos que não devem ser atualizados. Por exemplo, o administrador do sistema teve a necessidade de adicionar um novo usuário. Com isso serão reportadas as mudanças nos arquivos /etc/passwd e /etc/shadow, neste caso foi uma alteração realizada pelo administrador do sistema e a base de dados deve ser atualizada, porém no caso de uma alteração não reconhecida pelo administrador é necessário analisar o ocorrido e não atualizar a base de dados.

O arquivo temporário aberto para atualização da base de dados é bem intuitivo. Basta remover o “x” do ítem em questão para que este não seja atualizado na base de dados do tripwire, após atualizar a base de dados com o comando a seguir será solicitada a senha do local e a base atualizada.

tripwire --update --twrfile /var/lib/tripwire/report/HOSTNAME-20141024-155418.twr

Automatizando tarefas

A tarefa de checagem do sistema pode ser adicionada ao crontab do servidor de acordo com o tempo necessário, a seguir um exemplo de checagem a cada hora enviando um email ao administrador do sistema:

00 *    * * *   root    tripwire --check --cfgfile /etc/tripwire/tw.cfg --polfile /etc/tripwire/tw.pol | mail -s "Tripwire Report `hostname`" user@domain.com

O tripwire pode também enviar emails com o resultado de relatórios, para isso deve ser configurado o arquivo /etc/tripwire/twcfg.txt e alterados os parâmetros descritos a seguir:

MAILMETHOD    =SMTP
SMTPHOST      =localhost
SMTPPORT      =25
TEMPDIRECTORY =/tmp

Os comandos a seguir podem ser utilizados para testar as configurações de email:

tripwire --test --email user@ddomain.com

Após alterar o arquivo com as opções mais adequadas, é necessário gerar um novo arquivo de configuração. Este processo deve ser realizado da mesma forma como descrito anteriormente onde é criado o arquivo de configuração. O mesmo processo serve para o arquivo de políticas, devendo ser informada a senha do site para o arquivo de políticas.

 Conclusão

Com o tripwire é possível incrementar ainda mais a segurança do sistema possibilitando tomar ações em caso de acessos indevidos ao sistema.

 Gostou deste artigo? Clique aqui e baixe em formato PDF agora mesmo!

Criando volumes criptografados

Visando maior segurança das informações no sistema, é possível criar volumes criptografados protegendo as informações sensíveis (como senhas e endereços de servidores) em arquivos que só podem ser abertos após a confirmação de senha ou frase. Neste pequeno artigo mostraremos de maneira simples como efetuar tal procedimento. Lembramos que os comandos administrativos devem ser executados com o super usuário ou permissões mantidas de acordo com a necessidade do administrador do sistema.

Preparando o volume

Primeiramente criaremos o arquivo onde serão armazenados os dados:

dd if=/dev/zero of=volume1.img bs=1M count=100

No exemplo acima é criado um arquivo do tamanho de 100 mb para armazenamento de senhas e endereços de servidores.

O comando losetup trata de transformar este arquivo recém criado para um dispositivo de blocos adicionado em /dev,  mapearemos a seguir o arquivo para um dispositivo de bloco:

# losetup /dev/loop0 /volume1.img

Em seguida, com o utilitário cryptsetup formatamos o arquivo para o formato criptografado. O sistema pedirá uma senha, esta deverá ser utilizada posteriormente na montagem do volume. Caso a mesma seja perdida os dados contidos no volume não poderão ser recuperados.

# cryptsetup luksFormat /dev/loop0

Após criado e mapeado o arquivo para o dispositivo de blocos e formatar o mesmo, abrimos o arquivo para início das operações:

# cryptsetup luksOpen /dev/loop0 volume1

Uma vez montado o novo dispositivo de blocos, formatamos o mesmo como um dispositivo comum:

# mkfs.ext3 /dev/mapper/volume1

Montando o volume

Criação do ponto de montagem:

# mkdir /mnt/volume1

E finalmente montamos o dispositivo para utilização:

# mount /dev/mapper/volume1 /mnt/volume1

Uma vez montado o dispositivo, podemos escrever informações no mesmo como um cartão sd ou pendrive normalmente. Porém as mesmas ficam armazenadas de forma protegida tendo seu acesso por meio de senha ou frase, minimizando assim o acesso não autorizado a dados sensíveis.

Desmontagem do volume

Assim como os dispositivos de bloco devem ser montados, o processo de desmontagem do volume também é necessário, este pode ser feito normalmente com o comando umount:

# umount /mnt/volume1

Remoção do mapeamento existente:

# cryptsetup luksClose volume1

Remoção do dispositivo de blocos

# losetup -d /dev/loop0

Conclusão

Com este procedimento é possível proteger arquivos e diretórios de acesso não autorizado via senha ou frase secreta, aumentando assim a segurança de dados importantes e que não devem ser de conhecimento de todos.

Gostou deste artigo? Baixe o mesmo em formto pdf aqui.