Escola de Cincia e Tecnologia Curso Bacharelado SI
Escola de Ciência e Tecnologia Curso: Bacharelado SI IPTABLES Teórico e Prático Disciplina: Segurança em Redes 1
Escola de Ciência e Tecnologia Curso: Bacharelado SI Firewall em Linux q Netfilter é um modulo que fornece ao sistema operacional Linux as funções de firewall, NAT e log de utilização de rede de computadores; q Iptables é o nome da ferramenta do espaço do usuário que permite a criação de regras de firewall e NATs; q Apesar de, tecnicamente, o iptables ser apenas uma ferramenta que controla o módulo netfilter, o nome “iptables” é frequentemente utilizado como referência ao conjunto completo de funcionalidades do netfilter. Disciplina: Segurança em Redes 2
Escola de Ciência e Tecnologia Curso: Bacharelado SI Modelo Padrão de Sistema Operacional Disciplina: Segurança em Redes 3
Escola de Ciência e Tecnologia Curso: Bacharelado SI Firewall Linux Cararacterísticas q. Especificação de portas/endereço de origem/destino; q. Suporte aos protocolos TCP/UDP; q. Suporte a interfaces de origem/destino; q. Manipula serviços de proxy; q. Tratamento de tráfego dividido em chains/cadeias (para melhor controle do tráfego que entra/sai da máquina e tráfego redirecionado; q. Muito rápido, estável e seguro. Disciplina: Segurança em Redes 4
Escola de Ciência e Tecnologia Curso: Bacharelado SI Firewall Linux Cararacterísticas q. Suporte a módulos externos para ampliar funcionalidades do firewall; q. Suporte a especificação de tipo de serviço para priorizar o tráfego de determinados tipos de pacotes; q. Possui mecanismos internos para rejeitar automaticamente pacotes duvidosos ou mal formados. Disciplina: Segurança em Redes 5
Escola de Ciência e Tecnologia Curso: Bacharelado SI Por onde passa um pacote (Linux) q. O iptables, presente no Linux a partir do kernel 2. 4, usa o conceito de "ganchos" do netfilter, permitindo avaliar um datagrama em alguns pontos dentro do kernel. Disciplina: Segurança em Redes 6
Escola de Ciência e Tecnologia Curso: Bacharelado SI Por onde passa um pacote (Linux) Disciplina: Segurança em Redes 7
Escola de Ciência e Tecnologia Curso: Bacharelado SI Ganchos (chain) do netfilter Disciplina: Segurança em Redes 8
Escola de Ciência e Tecnologia Curso: Bacharelado SI Tabelas do Netfilter q. Filter Deve conter apenas regras que determinam se um pacote deve ser aceito ou não. q. NAT Serve para realizar operações de tradução sobre IP e/ou porta, tanto de origem como de destino. q. Mangle Serve para realizar alterações no pacote, como por exemplo, no TOS, TTL, etc. . Disciplina: Segurança em Redes 9
Escola de Ciência e Tecnologia Curso: Bacharelado SI Tabela Filter A tabela filter possui três conjuntos de regras, ou seja, três listas sendo que cada uma delas está associada a um gancho (chain): q INPUT: nesta fila de regras, somente os pacotes direcionados ao Endereço IP da máquina atual serão avaliados por eventuais regras existentes nesta tabela. iptables -t filter -A INPUT [regra] q OUTPUT: nesta fila de regras, somente os pacotes originados por processos locais da máquina serão avaliados. iptables -t filter -A OUTPUT [regra] q FORWARD: nesta fila de regras, somente os pacotes que estão sendo repassados por esta máquina serão avaliados. Obs: não são para ela e nem originados por ela. iptables -t filter -A FORWARD [regra] Disciplina: Segurança em Redes 10
Escola de Ciência e Tecnologia Curso: Bacharelado SI Tabela Filter Disciplina: Segurança em Redes 11
Escola de Ciência e Tecnologia Curso: Bacharelado SI Ações da tabela Filter Cada regra pode realizar uma determinada ação ao pacote (representado graficamente por -j), sendo que na filter as seguintes ações são possíveis: q REJECT: o pacote, uma vez que casou com a regra, é rejeitado. Demais regras existentes são ignoradas e o pacote definitivamente já teve seu destino selado: será descartado. Se for usado REJECT o remetente do pacote será avisado com uma mensagem de erro, normalmente um ICMP de "porta inatingível". q DROP: o DROP tem o mesmo efeito do REJECT e a mesma aplicação, com a diferença de que não é retornado nenhuma mensagem de erro ao remetente (ele não saberá o que aconteceu com o pacote). Disciplina: Segurança em Redes 12
Escola de Ciência e Tecnologia Curso: Bacharelado SI Ações da tabela Filter Cada regra pode realizar uma determinada ação ao pacote (representado graficamente por -j), sendo que na filter as seguintes ações são possíveis: q ACCEPT: Aceita um pacote, deixando que ele siga o seu percurso. O ACCEPT, como os anteriores, causa o término de teste nesta tabela, ou seja, o pacote já foi aceito e não será mais testado por nenhuma outra regra posterior nesta tabela (mas ainda poderá ser testado por outra tabela, como pela mangle ou nat) q LOG: realiza um log deste pacote no sistema (geralmente no /var/log/syslog ou messages). Ao contrário das demais ações (DROP, ACCEPT e REJECT), ao aplicar um log no pacote o mesmo ainda continua sendo testado pelas regras seguintes da fila atual. Uma ação do tipo LOG não causa o término do teste. Caso seja do interesse do usuário ele pode configurar uma mensagem de log que aparecerá nos logs facilitando a análise. Disciplina: Segurança em Redes 13
Escola de Ciência e Tecnologia Curso: Bacharelado SI Topologia de Exemplo Disciplina: Segurança em Redes 14
Escola de Ciência e Tecnologia Curso: Bacharelado SI Formas de habilitar o roteamento (IP Forward - Linux) Configuração provisória: q# sysctl -w net. ipv 4. ip_forward=1 q# echo 1 > /proc/sys/net/ipv 4/ip_forward Configuração permanente: q/etc/sysctl. conf: net. ipv 4. ip_forward = 1 sysctl -p /etc/sysctl. conf (Ativar configuração sem reiniciar) q /etc/rc. local echo 1 > /proc/sys/net/ipv 4/ip_forward Disciplina: Segurança em Redes 15
Escola de Ciência e Tecnologia Curso: Bacharelado SI Exemplos de regras – tabela filter Liberar qualquer tráfego para interface de loopback no firewall. # iptables –t filter –A INPUT –i lo –j ACCEPT # iptables –t filter –A OUTPUT –o lo –j ACCEPT Estabeleça a política DROP (restritiva) para as chains INPUT e FORWARD da tabela filter. # iptables –t filter –P INPUT DROP # iptables –t filter –P FORWARD DROP Fazer LOG e bloquear o acesso a qualquer site que contenha a palavra “games”. # iptables –t filter –I FORWARD -o eth 2 –p tcp --dport 80 -m string --algo bm --string “games”– j LOG # iptables –t filter –I FORWARD -o eth 2 –p tcp --dport 80 -m string --algo bm --string “games”– j DROP Disciplina: Segurança em Redes 16
Escola de Ciência e Tecnologia Curso: Bacharelado SI Exemplos de regras – tabela filter Bloquear acesso para qualquer usuário ao site www. jogosonline. com. br, exceto para seu chefe, que possui o endereço IP 10. 1. 1. 100. # iptables –t filter –I FORWARD -o eth 2 –s 10. 1. 1. 100 –d www. jogosonline. com. br –p tcp --dport 80 -j ACCEPT # iptables –t filter –I FORWARD -o eth 2 –s 10. 1. 1. 0/24 –d www. jogosonline. com. br –p tcp --dport 80 -j DROP Permitir que o firewall receba pacotes do tipo ICMP echo-request (ping), porém, limite a 5 pacotes por segundo. # iptables –t filter –I INPUT -p icmp --icmp-type –echo-request –m limit --limit 5/s -j ACCEPT Permitir que tanto a rede interna como a DMZ possam realizar consultas ao DNS externo, bem como, receber os resultados das mesmas. # iptables –t filter –I FORWARD -o eth 2 –p udp --dport 53 -j ACCEPT # iptables –t filter –I FORWARD -i eth 2 –p udp --sport 53 -j ACCEPT Disciplina: Segurança em Redes 17
Escola de Ciência e Tecnologia Curso: Bacharelado SI Exemplos de regras – tabela filter Permitir o tráfego TCP destinado à máquina 192. 168. 1. 100 (DMZ) na porta 80, vindo de qualquer rede (Interna ou Externa). # iptables –t filter –I FORWARD -d 192. 168. 1. 100 –p tcp --dport 80 -j ACCEPT Faça com que a máquina 192. 168. 1. 100 consiga responder os pacotes TCP recebidos na porta 80 corretamente. # iptables –t filter –I FORWARD -s 192. 168. 1. 100 –p tcp --sport 80 -j ACCEPT http: //www. guiafoca. org/cgs/guia/avancado/ch-fw-iptables. html http: //www. netfilter. org/documentation/index. html#documentation-howto http: //www. vivaolinux. com. br/artigo/Estrutura-do-Iptables Disciplina: Segurança em Redes 18
Escola de Ciência e Tecnologia Curso: Bacharelado SI Tabela NAT A tabela nat possui três conjuntos de regras, ou seja, três listas sendo que cada uma delas está associada a um gancho (chain): PREROUTING: Nesta lista irão as regras que serão aplicados aos para pacotes que acabaram de entrar por uma das interfaces de rede, não importando qual será o destino dos mesmos, se para um processo local ou para ser roteado (forward). Deve-se ter em mente que a etapa de roteamento é quem decidirá qual o caminho que o pacote irá tomar, inclusive decidindo se o mesmo será repassado ou entregue a um processo local. Para realizar o roteamento são considerados parâmetros de destino, como o IP, para saber se é desta máquina ou se deve ser repassado, e porta, se for local para decidir para qual processo. Disciplina: Segurança em Redes 19
Escola de Ciência e Tecnologia Curso: Bacharelado SI Tabela NAT A tabela nat possui três conjuntos de regras, ou seja, três listas sendo que cada uma delas está associada a um gancho (chain): POSTROUTING: Nesta lista irão as regras com poder de alterar um pacote após o roteamento. É a última etapa antes do pacote deixar a interface de rede em direção ao "mundo". OUTPUT: Observe que alterações de destino, como porta ou IP, só podem ser realizados no gancho PREROUTING. Infelizmente, porém, existe um problema aí, pois observe que pacotes gerados por processos locais não passam por este gancho. Para evitar que pacotes gerados localmente fossem condenados a não ter meios de alterar parâmetros de destino, o nat também atua no gancho OUTPUT. As regras do nat OUTPUT tem o mesmo propósito e a mesma sintaxe das do gancho PREROUTING, com a única diferença de operar pacotes originados por processos locais. Disciplina: Segurança em Redes 20
Escola de Ciência e Tecnologia Curso: Bacharelado SI Acões possíveis na tabela NAT As ações (alvos –j) que podem ser executadas nesta tabela são: PREROUTING: DNAT, REDIRECT, LOG e DROP POSTROUTING: SNAT, MASQUERADE, LOG e DROP OUTPUT: DNAT, REDIRECT, LOG e DROP Disciplina: Segurança em Redes 21
Escola de Ciência e Tecnologia Curso: Bacharelado SI Topologia de exemplo Disciplina: Segurança em Redes 22
Escola de Ciência e Tecnologia Curso: Bacharelado SI Exemplos de uso da tabela NAT Possibilite que usuários da rede interna possam acessar o serviço WWW, tanto na porta (TCP) 80 como na 443. Não esqueça de realizar NAT já que os usuários internos não possuem um endereço IP válido. # iptables –t filter –A FORWARD –i eth 0 –o eth 2 –p tcp --dport 80 –j ACCEPT # iptables –t filter –A FORWARD –i eth 0 –o eth 2 –p tcp --dport 443 –j ACCEPT # iptables –t filter –A FORWARD –i eth 2 –o eth 0 –p tcp --sport 80 –j ACCEPT # iptables –t filter –A FORWARD –i eth 2 –o eth 0 –p tcp --sport 443 –j ACCEPT # iptables –t nat –A POSTROUTING –s 10. 1. 1. 0/24 -o eth 2 –j MASQUERADE Disciplina: Segurança em Redes 23
Escola de Ciência e Tecnologia Curso: Bacharelado SI Exemplos de uso da tabela NAT Redirecione pacotes TCP destinados ao IP 200. 20. 5. 1 porta 80, para a máquina 192. 168. 1. 100 que está localizado na DMZ. # iptables –t nat –A PREROUTING –i eth 2 –d 200. 20. 5. 1 –p tcp --dport 80 –j DNAT --to 192. 168. 1. 100 Disciplina: Segurança em Redes 24
Escola de Ciência e Tecnologia Curso: Bacharelado SI Outros exemplos de uso da tabela NAT iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to : 80 iptables -t nat -A PREROUTING -i eth 0 -p tcp -s 10. 1. 5. 4 -d 172. 16. 0. 2 --dport 8080 -j DNAT –to 172. 16. 0. 1: 80 iptables -t nat -A POSTROUTING -p tcp -s 10. 1. 0. 4 -j SNAT --to 10. 1 iptables -t nat -A OUTPUT -p tcp -d IPDOMEUSERVIDOR --dport 22 -j DNAT --to : 2215 iptables -t nat -I OUTPUT -p tcp --dport 90 -j DNAT --to : 80 Disciplina: Segurança em Redes 25
Escola de Ciência e Tecnologia Curso: Bacharelado SI Exemplo – Proxy transparente A porta de um proxy http é, tipicamente, 3128. Em uma rede que possui proxy e que os clientes precisam utilizá-lo, cada navegador precisaria estar configurado para usar o proxy do IP X na porta 3128. Contudo a técnica de proxy transparente permite que não se faça esta configuração. Cada navegador "pensa" que acessa a Internet na porta 80, porém, quando o pacote passa pelo roteador, uma regra de iptables troca o ip destino pelo ip do proxy e a porta destino por 3128: iptables -t nat -A PREROUTING -p tcp -s 10. 1. 0. 0/24 --dport 80 -j DNAT --to 10. 1: 3128 Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Exemplo – Proxy transparente Sempre que o origem for 10. 1. 0. 0/24 (clientes que devem passar pelo proxy) e a porta de destino por 80, não importando o ip de destino, o pacote será enviado para 10. 1 (ip do proxy) na porta 3128. Aí ele cai no proxy querendo ou não. Se o serviço de proxy está executando na própria máquina onde se encontra o firewall, o seguinte comando tem o mesmo efeito: iptables -t nat -A PREROUTING -p tcp -s 10. 1. 0. 0/24 --dport 80 -j REDIRECT --to-port 3128 Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Salvar a configuração realizada Existem diversas forma de gravar as configurações que foram feitas no iptables, para caso o sistema seja reinicializado as configurações não sejam perdidas. Veremos algumas: § Inserir as regras em um script, bash por exemplo. E chamar este script na inicialização do sistema. 1. Para isso deve ser criado um arquivo que terá as regras de firewall, por exemplo. firewall. sh. 2. Deve ser dado as permissões necessárias para execução. # chown root firewall. sh #chmod 750 firewall. sh 3. Definir como script de inicialização. # mv firewall. sh /etc/init. d/ # update-rc. d firewall. sh defaults Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI § Uma outra maneira de inicializar o script: 1. Criar um arquivo que terá as regras de firewall, por exemplo. firewall. sh. 2. Deve ser dado as permissões necessárias para execução. # chown root firewall. sh #chmod 750 firewall. sh 3. Definir como script de inicialização. i. Editar o arquivo /etc/rc. local ii. Adicionar uma linha para realizar a chamada ao script firewall. sh # /etc/regras_firewall/firewall. sh Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Salvar a configuração realizada Podemos salvar a configuração atual (em memória) do iptables para um arquivo, com o seguinte comando: #iptables-save > firewall. sh Para restaurar (tornar ativa) a configuração podemos utilizar o seguinte comando: #iptables-restore < firewall. sh Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Proxy (Firewall de Aplicação) SQUID Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Proxy § É usado como intermediários entre os PCs de uma rede e a Internet; § O servidor precisa que as requisições passam por ele; § Pode ser transparente; § Evita desperdício de recursos da rede; § Possibilita realizar cache; § Possibilita a geração de relatórios; § O proxy cria uma nova conexão para cada cliente. Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Proxy-Squid (Configuração no Linux Ubuntu) § Instalar o proxy s quid. # apt-get update # apt-get install squid 3 § Renomear o arquivo squid. conf e criar um novo arquivo sem configuração. # service squid 3 stop # cd /etc/squid 3 # mv squid. conf. original #gedit squid. conf Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Squid. conf § Configurar cache § Renomear o arquivo squid. conf e criar um novo arquivo sem configuração. # service squid stop # cd /etc/squid 3 # mv squid. conf. original #gedit squid. conf Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Squid. conf § Configurar porta do proxy http_port 3128 § Nome do servidor Visible_hostname Proxy_Teste § Mensagens de erro em português error_directory /usr/share/squid 3/errors/pt-br Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Squid. conf § Configuração básica de cache_mem 512 MB maximum_object_size_in_memory 128 KB maximum_object_size 1024 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 3 1000 16 256 Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Squid. conf § Logs de acesso cache_log /var/log/squid 3/cache. logaccess_log daemon: /var/log/squid 3/access. log squid § ACL Padrão acl SSL_ports port 443 563 873 acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 563 873 acl purge method PURGE acl CONNECT method CONNECT Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Squid. conf § Permissões e bloqueio padrão http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Squid. conf § Requerer autenticação auth_param basic realm Servidor_Proxy (Digite Usuario | Senha) auth_param basic program /usr/lib/squid 3/basic_ncsa_auth /etc/squid 3/usuarios. txt acl autenticados proxy_auth REQUIRED § Criar usuários #htpasswd usuarios. txt usuario 01 #htpasswd usuarios. txt usuario 02 Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Squid. conf § Bloqueio de sites por url acl sites_proibidos url_regex -i "/etc/squid 3/sites_proibidos. txt“ http_access deny sites_proibidos § Permitir alguns sites em horário de almoço acl horario_almoço time MTWHFAS 12: 00 -14: 00 acl sites_proibidos 1 dstdomain "/etc/squid 3/redes_sociais. txt“ http_access allow sites_proibidos 1 horario_almoço autenticados http_access deny sites_proibidos 1 § Bloqueio de downloads por extensão acl downloads_proibidos url_regex -i . exe . torrent . avi . mp 3 http_access deny downloads_proibidos Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI Squid. conf § Permitir usuário autenticados acessar sites que não foram bloqueados: http_access allow autenticados § Permissão de rede local e servidor acl redelocal src 192. 168. 10. 0/24 http_access allow localhost http_access allow redelocal § Padrões e definiçoes de cache refresh_pattern ^ftp: refresh_pattern. 1440 0 20% 10080 4320 § Bloqueio de usuários que não fazem parte da rede http_access deny all Disciplina: Segurança em Redes
Escola de Ciência e Tecnologia Curso: Bacharelado SI ACLs (Access Control List) § São regras para navegação via proxy. § As ACLs são lidas na ordem em que aparecem e pode ser combinadas. § Definindo ACL Ou acl NOME_DA_ACL TIPO_DA_ACL parâmetro acl NOME_DA_ACL TIPO_DA_ACL "/caminho/completo/regra. conf" § Todas as ACLs são tratadas com case-sensitive para definir como case-insensitive utilize a opção –i logo após o tipo da ACL> Disciplina: Segurança em Redes Fonte: http: //www. dicas-l. com. br/arquivo/conhecendo_as_acls_mais_utilizadas_no_squid. php#. VFab. U_n. F 8 Yl
Escola de Ciência e Tecnologia Curso: Bacharelado SI Principais ACLs § src – trata o IP ou uma faixa de endereços IP com que o cliente chega no proxy. acl ESTACAO_DIRETOR src 192. 168. 1. 100/255. 255 § dst – trata o IP de destino da navegação. acl IP_INTEGRAL dst 200. 175. 44. 1/255. 255 § dstdomain – trata o domínio de destino da navegação. acl SITE_INTEGRAL dstdomain. integral. inf. br Disciplina: Segurança em Redes Fonte: http: //www. dicas-l. com. br/arquivo/conhecendo_as_acls_mais_utilizadas_no_squid. php#. VFab. U_n. F 8 Yl
Escola de Ciência e Tecnologia Curso: Bacharelado SI Principais ACLs § time – trata um determinado momento baseado em dia da semana e hora. acl HORARIO_ALMOCO time MTWHF 12: 00 -13: 30 Disciplina: Segurança em Redes Fonte: http: //www. dicas-l. com. br/arquivo/conhecendo_as_acls_mais_utilizadas_no_squid. php#. VFab. U_n. F 8 Yl
Escola de Ciência e Tecnologia Curso: Bacharelado SI Principais ACLs § url_regex (expressão regular na URL) – permite utilizar expressões regulares na avaliação das URLs. acl EXTENSAO_PROIBIDA url_regex ? i . exe$ § port – trata a porta de destino da navegação. acl SITE_8080 port 8080 § Proxy_auth – trata o login com que o cliente se autentica no proxy. Requer configuração de autenticação. acl DIRETOR proxy_auth joao Disciplina: Segurança em Redes Fonte: http: //www. dicas-l. com. br/arquivo/conhecendo_as_acls_mais_utilizadas_no_squid. php#. VFab. U_n. F 8 Yl
Escola de Ciência e Tecnologia Curso: Bacharelado SI Regras das ACLs § http_access – permite ou nega acessos baseados nas ACLs pré definidas. É utilizado seguido de allow ou deny. Se a ACL for precedida de um ponto de exclamação significa que será a negação da ACL. As regras são lidas na ordem em que aparecem. # acesso liberado para o diretor baseado em login http_access allow DIRETOR # acesso liberado ao site da integral exceto no horário do almoço http_access allow SITE_INTEGRAL !HORARIO_ALMOCO # extensão proibida baseado em expressão regular http_access deny EXTENSAO_PROIBIDA Após qualquer modificação no arquivo de configuração do SQUID faz-se necessário digitar o comando: # squid 3 -k reconfigure Disciplina: Segurança em Redes Fonte: http: //www. dicas-l. com. br/arquivo/conhecendo_as_acls_mais_utilizadas_no_squid. php#. VFab. U_n. F 8 Yl
- Slides: 46