15 de jul de 2010

Shell Scripts do Firestarter

O Firestarter apresenta diversas funcionalidades que podem ser observadas no seu manual em Inglês que pode ser obtido em [1]. Não é sempre que temos acesso ao ambiente gráfico do Gnome por exemplo, e em muitas situações o que temos é uma conexão por ssh de baixa velocidade. Portanto, vejo que conhecer o ssh e os arquivos de configurações dos programas é fundamental.
Nesta linha de pensamento, abaixo listo alguns comentários sobre os principais scripts do firestarter, não esqueça também de consultar a man page.

Em /etc/firestarter temos os seguintes scripts:

configuration
events-filter-hosts
events-filter-ports
firestarter.sh
firewall
non-routables
sysctl-tuning
user-post
user-pre

configuration é o arquivo principal e muito bem comentado por seção como External Interface, Network Address Translation etc. É possível alterar o comportamento do firewall através destas opções. Use as com cuidado.

events-filter-hosts e events-filter-ports normalmente sem configuração nas opções padrão do firestarter, indica o que deve ser filtrado baseado em hosts ou em portas.

firestarter.sh é o arquivo responsável em chamar as regras e fazer subir os serviços.

Observe atentamente os diretórios  /etc/firestarter/inbound e /etc/firestarter/outbound. Nestes diretórios estão as suas definições das regras criadas. Por exemplo, se estiver usando um firewall permitindo tudo para saída, você deve checar as regas em  /etc/firestarter/outbound e nestes arquivos fazer alteração, porém sem nunca alterar o arquivo setup presente neste diretório. Se suas regras tem bloqueios na entrada do firewall, o diretório onde deve ser observado e alterado as regas seria /etc/firestarter/inbound, porém sem alterar o arquivo setup. Perceba os aquivos allow-from e allow-service, nestes é possível adicionar ou excluir regras facilmente.
Exemplo do allow-service (em /etc/firestarter/inbound):

SSH, 22, everyone, ssh de qualquer lugar
HTTP, 80, 192.168.1.10, apache somente para a máquina 192.168.1.

Trata-se de uma regra por linha, cada linha iniciando pelo nome da regra, seguida do protocolo e para quem é o acesso, pode ser um ip ou everyone. Após a terceira vírgula pode-se colocar um comentário ou mesmo deixar em branco. Neste caso portanto, somente a porta 22 esta aberta para todos e a porta 80 aberta para o ip 192.168.1.10.

Exemplo do deny-service (em /etc/firestarter/outboud). Neste caso temos um cenário onde tudo é permitido e os serviços constantes do deny-services são negados conforme a regra:
DNS, 53, everyone, bloqueia dns
HTTP, 80, everyone, bloqueia http
HTTPS, 443, everyone, bloqueia https
Ainda, considerando as regras em /etc/firestarter/outbound, e pensando em uma regra onde tudo seja bloqueado e liberado as excessões, observe o arquivo allow-service. Neste temos somente o que é permitido sair da máquina em questão.
DNS, 53, everyone, permite dns
HTTP, 80, everyone, permite http
HTTPS, 443, everyone, permite https
Conclusão: Mesmo que utilize o wizard para suas configurações iniciais, não deixe também de conhecer os arquivos de configuração usando seu shell preferido. O firewall firestarter é robusto e permite várias combinações de acordo com seu desejo de segurança. É preciso ter um cenário definido antes de fazer suas regras.

[1] http://www.fs-security.com/docs/fs-manual.pdf