26
Netfilter/Iptables Linux como um roteador doméstico

Netfilter/Iptables Linux como um roteador doméstico

Embed Size (px)

Citation preview

Page 1: Netfilter/Iptables Linux como um roteador doméstico

Netfilter/Iptables

Linux como um roteador doméstico

Page 2: Netfilter/Iptables Linux como um roteador doméstico

Cenário 2

• Linux como um roteador SOHO (Stands Offices and Home Offices).– A máquina Linux irá atuar como um roteador semelhante ao que

temos em nossas residências.• Provendo a conexão ao Provedor Internet.• Compartilhando este acesso com as máquinas da LAN.

• Normalmente os roteadores SOHO possuem uma porta WAN e portas LAN.– Equipamento local do usuário (Modem DSL).

• Geralmente o provedor nos fornece um endereço IP público via DHCP.• PPPoE.

– Conexões Ethernet.– Conexões sem fio.

Page 3: Netfilter/Iptables Linux como um roteador doméstico

Topologia

Page 4: Netfilter/Iptables Linux como um roteador doméstico

Endereços

• O Roteador Linux tem:– O endereço público na interface eth0, fornecido

dinamicamente pelo provedor de acesso (modo NAT).– O endereço privado 192.168.1.1/24 na interface eth1,

configurado por você.• O Laptop possui o endereço 192.168.1.2.• O Desktop possui o endereço 192.168.1.11.• O PC das crianças possui o endereço 192.168.1.55.

Page 5: Netfilter/Iptables Linux como um roteador doméstico

Configurando a rede

• Configure as interfaces de rede e os nomes dos hosts conforme o slide anterior.

• É interessante criar configurações que se mantenham após a reinicialização das máquinas.

Page 6: Netfilter/Iptables Linux como um roteador doméstico

Definindo a política de segurança (1)

• As crianças precisam:– Usar o navegador para pesquisar na Internet.– Não queremos que elas acessem sites

pornográficos.– Não queremos que elas façam download de vírus.– Também não queremos que elas acessem

conteúdos P2P.• O Laptop pode:– Acessar qualquer coisa.

Page 7: Netfilter/Iptables Linux como um roteador doméstico

Definindo a política de segurança (2)

• O Desktop pode:• Acessar qualquer coisa.• Conectar-se à LAN a partir da Internet, via VNC.

• O Roteador Linux precisa:– Rodar SSH a partir da rede interna.

Page 8: Netfilter/Iptables Linux como um roteador doméstico

Construindo o proxy

• Inicialmente precisamos instalar em nossa máquina firewall, o proxy server Squid.

• www.squid-cache.org.– ./configure --prefix=/squid– make all– make install

Page 9: Netfilter/Iptables Linux como um roteador doméstico

Configurando o Squid (1)

• Adicione as linhas abaixo no arquivo /etc/squid.conf. As entradas se referem ao usuário que irá inicializar o Squid.

cache_effective_user Managercache_effective_group Manager

Page 10: Netfilter/Iptables Linux como um roteador doméstico

Configurando o Squid (2)

• Para ser capaz de usar o Squid como um Transparente Proxy, temos que adicionar a seguinte informação no arquivo de configuração em /squid/etc/squid.conf.http_port 3128 transparent

Page 11: Netfilter/Iptables Linux como um roteador doméstico

Criando lista de acesso no Squid

• Agora, precisamos definir listas de acesso para a rede interna acessar o Squid e para proibir o acesso a sites pornográficos e a arquivos perigosos.

• Faremos isso para a rede inteira, mas nós usaremos o Transparente Proxy somente para o computador das crianças.

• Qualquer arquivo pode ser um vírus. O que se segue é apenas um exemplo.

Page 12: Netfilter/Iptables Linux como um roteador doméstico

Criando lista de acesso no Squid (2)

• Insira em squid.conf as linhas abaixo:acl all src 0.0.0.0/0.0.0.0 (pré-definida)acl porn url_regex –i sex adult porn hardcore fetishacl downloads urlpath_regex\.exe$\.rar$\.zip$\.pif$ \.src$acl nossa_rede src 192.168.0.0/24http_access deny pornhttp_access deny downloadshttp_access allow nossa_redehttp_access deny all

Page 13: Netfilter/Iptables Linux como um roteador doméstico

ACLs

• A ACL chamada porn contém a lista de nomes que não são permitidas na URL.– Você não conseguirá acessar sites que possuem

estas palavras na URL, via proxy.• A ACL chamada downloads contém a lista de

tipos de arquivos não permitidos.– Não será possível fazer download de arquivos com

estas extensões.

Page 14: Netfilter/Iptables Linux como um roteador doméstico

Próximos passos

• Agora que já configuramos o proxy, vamos configurar o firewall cujas regras devem casar com as políticas de segurança que nós acabamos de construir.

Page 15: Netfilter/Iptables Linux como um roteador doméstico

Computador das crianças

• Para o computador das crianças nós executaremos o Transparent Proxy.– Significa que o computador acessará o proxy sem

precisar configurar o navegador.• Nós já configuramos o proxy server. Agora, nós

precisamos que todo o tráfego para a porta 80 TCP seja redirecionado para o proxy server.

• Nós também queremos que o computador das crianças acesse a porta 443 TCP (HTTPS).

Page 16: Netfilter/Iptables Linux como um roteador doméstico

Configurando

iptables –t nat –A PREROUTING –s 192.168.1.55 –p tcp – -dport 80 –j REDIRECT - –to-port 3128

iptables –t nat –A POSROUTING –o eth0 -s 192.168.1.55 –p tcp – -dport 443 –j MASQUERADE

Page 17: Netfilter/Iptables Linux como um roteador doméstico

Computador das criançasMasquerade

• Agora, vamos mascarar o computador das crianças quando ele enviar requisições DNS para nosso provedor de acesso.

iptables –t nat –A POSTROUTING –o eth0 –s 192.168.1.55 –p udp – -dport 53 –j MASQUERADE

• Requisições DNS usam a porta UDP 53.

Page 18: Netfilter/Iptables Linux como um roteador doméstico

Yahoo!

• Nós queremos que as crianças usem o “Yahoo!Messenger” somente para chat sem voz e sem transferência de arquivos.

• Lendo os manuais da ferramenta, vê-se que o Yahoo! Messeger usa as portas 20, 23, 25, 80, 119, 5050, 8001 e 8002.

• Também vê-se que os sites que o “Yahoo!Messenger” utiliza para Instant Messeger são: scs.msg.yahoo.com, scsa.msg.yahoo.com, scsb.msg.yahoo.com e scs.cmsg.yahoo.com.

Page 19: Netfilter/Iptables Linux como um roteador doméstico

MASQUERADE

• É melhor mascarar o computador das crianças quando ele acessa esses sites. Nós devemos fazer:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.55 -d scs.msg.yahoo.com -j MASQUERADE

– NOTA: Ao inserir um nome de máquina ao invés do seu endereço IP, o DNS irá resolver este nome. Se um nome é resolvido para múltiplos endereços IP, o iptables irá inserir uma regra independente para cada endereço.

Page 20: Netfilter/Iptables Linux como um roteador doméstico

Proibindo o acesso aos demais hosts

• Agora que nós permitimos o acesso do computador das crianças a determinados sites, devemos agora proibir o acesso a outras portas e outros sites.

iptables –t nat –A POSTROUTING –o eth0 –s 192.168.1.55 –j DROP

Page 21: Netfilter/Iptables Linux como um roteador doméstico

Laptops e Desktop

• O Laptop e o Desktop precisam ser capazes de acessar qualquer site, então nenhuma regra é necessária a não ser o MASQUERADE para a nossa rede.

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE

Page 22: Netfilter/Iptables Linux como um roteador doméstico

Protegendo o firewall

• Já fizemos todas as configurações necessárias a proteção de nossa rede local. Agora vamos proteger o nosso firewall.

• Em primeiro lugar nós precisamos rodar o SSH em nosso firewall para que ele possa ser administrado remotamente.

• Para isto precisamos criar uma nova chain. Podemos chamá-la de SSH.

• Se uma vulnerabilidade for descoberta no SSH, rapidamente haverá scanners de worms na porta padrão do SSH. A porta 22. Então devemos alterar essa porta.

Page 23: Netfilter/Iptables Linux como um roteador doméstico

Criando a chain SSH

• Criando a chain SSH.iptables –N SSH

• Agora, vamos inserir uma regra para pedir ao kernel para checar as regras na chain SSH, para toda conexão TCP na porta 1234.iptables –A INPUT –p tcp - -dport 1234 –j SSH

Page 24: Netfilter/Iptables Linux como um roteador doméstico

Inserindo regras na chain SSH

• Devemos inserir uma regra na chain SSH permitindo acesso somente para hosts confiáveis.

• Digamos que o endereço IP do PC do nosso escritório seja 1.2.3.4.

iptables –A SSH –s 1.2.3.4 –j ACCEPTiptables –A SSH –s 192.168.1.0/27 –j ACCEPT

iptables –A SSH –s 0/0 –j DROP

Page 25: Netfilter/Iptables Linux como um roteador doméstico

Significado das regras

• A primeira regra aceita conexões a partir do computador de nosso escritório.

• A segunda regra permite conexões SSH de entrada somente oriundas de computadores com endereços no intervalo de 192.168.1.1 à 192.168.1.32.

• A terceira regra descarta todos as demais conexões para a porta 1234.

Page 26: Netfilter/Iptables Linux como um roteador doméstico

Finalmente...

• O proxy Squid tem a sua própria segurança usando as Listas de Acesso. Mesmo assim vamos que pacotes TCP SYN, vindos da Internet estabeleçam conexão com nosso Squid/Router/Firewall, exceto na porta 1234 a partir de PC 1.2.3.4.

• Vamos também, liberar todos os pacotes vindos da interface loopback para IPC (processos internos de comunicação).

iptables –A INPUT –i lo –j ACCEPTiptables –A INPUT –i eth0 –p tcp - –syn –j DROP