[FUG-BR] Proteger desktop em rede interna

Paulo Henrique - BSDs Brasil paulo.rddck em bsd.com.br
Sexta Maio 18 18:22:03 BRT 2012


Juano Brozz wrote:
> Boa noite pessoal.
>
> Instalei o FreeBSD9 como desktop, gnome lite, eclipse, OpenJDK, nvidia, e
> vários pacotes do ports. Uso a máquina para desenvolvimento Java. Meu
> desktop roda dentro de uma rede interna, e tem acesso à internet. Tenho um
> roteador wifi simples, D-Link, onde bloqueei todas as portas de entrada,
> então acho que estou relativamente seguro contra ataques externos. O
> problema são ataques que poderiam partir do próprio desktop. Gostaria de
> saber o que fazer para proteger meu desktop.
>
> O primeiro passo que peço ajuda é: quero ter a tranquilidade de saber que
> nenhum processo acesse a rede interna ou a internet sem eu ter especificado
> que ele pode fazer isso. Colocaria nessa listinha processos como chromium,
> firefox, o instalador do ports, o wget para quando eu precisar baixar
> alguma coisa pela linha de comando, e alguns processos java.
>
> Encontrei alguns dizendo que usam um tal de Jail, outros que eu deveria
> configurar os processos para rodarem por usuários específicos e bloquear o
> ID desses usuários. Encontrei também muito material sobre configuração de
> firewall profissional (máquina dedicada de firewall) mas como não sou admin
> de redes, não entendo muito, e não consegui aplicar para a realidade de um
> desktop numa rede interna. Não encontrei nada que me ensine a proteger um
> simples desktop.
>
> Tenho certeza que vocês que já usam desktop FreeBSD há anos poderiam me
> indicar as melhores práticas.
>
> Muito obrigado,
>
> Juano
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>   
Bom, depende muito, do meu ponto de vista, use as regras abaixo para que 
somente processos de aplicação fiquem acessiveis.
#!/bin/csh
set IP_LAN = 192.168.0.2 ( ip da sua maquina )
set Gateway  = 192.168.0.1 ( ip do roteador da rede )
set NETLan = 192.168.0.0/24 ( segmento L3 da sua rede )
set FW = "/usr/sbin/ipfw -q" (ajustando o ipfw, um dos firewalls do 
freebsd com opção de quiet )
set IF_LBack = lo0 ( interface looback )
set IF_LAN = em0 ( substitua para a sua interface fisica correta, no 
caso estou usando como exemplo um gigabit intel. )
set Service_Out_TCP = "53 80 110 143 443 465 587 1863 993 995" ( se 
acessar mais algum serviço externo expecifique a porta dele aqui ).
set Service_Out_UDP= "53"

# Relação de serviços/portas
# http => 80
# dns => tcp/udp 53
# POP3-POP3/S => 110/993
# IMAP-IMAP/S => 143/995
# Https => 443
# SMTP-SMTP/S => 25 ( desativado para evitar conexão na mta do sistema ) 
/ 465
# SMTP Submission => 587
# Messenger => 1863

## Regras com conexões originadas e destinadas ao sistema, se bloquear 
esse trafego coisa estranhas
${FW} add 00010 allow all from 127.0.0.0/8 to any via lo0 ${IF_LBack}
${FW} add 00011 allow all from any to 127.0.0.0/8 via ${IF_LBack}
${FW} add 00012 deny all from any to any via ${IF_LBack}

## Regras de saida para a rede serviços basicos.
${FW} add 00100 allow tcp from ${IP_LAN} to any ${Service_Output_TCP} 
via ${IF_LAN}
${FW} add 00101 allow udp from ${IP_LAN}  to any ${Service_Output_UDP} 
via ${IF_LAN}

## Retorno dos pacotes permitidos pela regra acima, caso configure como 
statefull não é necessário
${FW} add 00201 allow tcp from any ${Service_Output_TCP} to ${IP_LAN} 
via ${IF_LAN}
${FW} add 00202 allow udp from any ${Service_Output_UDP} to {IP_LAN} via 
${IF_LAN}

## Bloqueia todo o resto.
${FW} add 65534 deny all from any to any

Bom esse é um firewall maleavel.
Você conseguirá sair mais ninguem conseguirá entrar.
Considerações importantes.
Por ser desktop, aconselho a criar uma regra mais especifica utilizando 
os UIDs do seu usuário e dos daemons na maquina e criar regras apenas 
sobre as UIDs,
Dessa forma apenas processo que vocë gerar e necessários ao sistema irão 
sair para a rede e voltar.
O uso de UIDs é muito mais pratico quando se trata de estações desktop.
Leia o documento [1] para poder compreende o que estará fazendo.

Outras considerações,
Ative um servidor DNS local com permissão de consulta apenas para o seu 
uid e para o uid=0.
Usar firewall em desktop é muito mais complexo que usar firewall em 
servidor, pois servidor de web por exemplo libera dns/http/https( se 
tiver ) e barra o restante, no desktop é o oposto.
Barra tudo o que entra menos o que explicitamente foi liberando antes ( 
cuidade com FTP/RSTP/RTP ) tais protocolos são N-away o que obrigará 
você a ou colocar um proxy-ftp na sua estação para o ftp e liberar o 
RSTP/RTP para as portas altas ( acima da 1024 ).
Outro detalhe é que jails evita apenas escalonamento de permissão e 
saturação da maquina em caso de ataques, usa-las em desktop deve ser 
meio sem logica.
Como pode ver o exemplo de firewall acima é muito limitado, resta setar 
os tipos de pacotes ICMP ( echo, echo-reply e outros ), assim como 
outros procotolos de uso na sua rede no qual não sabemos de sua precença.

A ultima dica.
Cria uma regra para cada serviços, o acessa é a regra preguiçosa ( mais 
facil de gerenciar ) porem mais generica.
Especifique permissão de submissão apenas para o host que lhe responderá.
Especifique permissão de POP/POP3S, IMAP/IMAP/S apenas para os 
servidores que conectará.
essa dica caso implementado sobre UIDs creio que seja plenamente 
desnecessário.

Referencia Link[1] => 
http://www.freebsdbrasil.com.br/fbsdbr_files/File/public_docs/ipfw-howto.pdf



Att.




Mais detalhes sobre a lista de discussão freebsd