“Firewall” Grupo: José Augusto Grassi Leandro Cezario Leite Luis Rafael de Souza Disciplina deTópicos em Engenharia de Computação Prof. Edmar Rezende “Firewall” Apresentação > O que é? > Como Funciona? > Quais suas Aplicações? > Para que Utilizar? > Como Configurar? (Shell Script - Linux) > Como Configurar? (Modo Visual - Windows) “Firewall” O Que é? O Firewall Isola a rede interna de uma organização da Internet pública, permitindo que alguns pacotes passem e bloqueando outros. O firewall é um mecanismo que atua como "defesa" de um computador ou de uma rede, controlando o acesso ao sistema por meio de regras e a filtragem de dados. Um firewall pode ser um dispositivo software ou hardware “Firewall” Como Funciona Firewall funcionam a partir de regras ou valores(portas,ips,etc) que são configurados para que este saiba o que deve ou não passar. A seguir será explicado 2 funcionamentos de Firewall por Filtragem de Pacotes e Firewall de Aplicação. “Firewall” Como Funciona - Valores “Firewall” Como Funciona – Regras sem estado “Firewall” Como Funciona – Regras com estado “Firewall” Suas Aplicações - Filtragem de pacotes (stateless) > Conjunto de Regras > Normalmente Usado em roteador de filtragem > Filtragem Baseada > Endereço IP de origem; > Endereço IP de destino; > Portas TCP/UDP de origem; > Portas TCP/UDP de destino. > Necessidade da rede > Possiveis Acoes > ACCEPT > DROP > REJECT > MASQUERADE > REDIRECT > RETURN “Firewall” Suas Aplicações - Filtragem de pacotes (stateless) | Serviços e protocolos > Tftp > X Windows, Open Windows > RPC > TELNET > FTP > SMTP > DNS “Firewall” Suas Aplicações - Filtragem de pacotes (stateless) | Problemas > Regras complexas > Perda de Desempenho da rede > não ser eficaz “Firewall” Suas Aplicações - Firewall de Aplicação (stateful) > Exemplos de Aplicações: > SMTP > FTP > HTTP > Conhecidos como proxy Gateway > Numero de Sessao do TCP > Acompanhamento Preciso > Log`s e ferramentas de auditoria > Redes de médio e grande porte “Firewall” Suas Aplicações - Firewall de Aplicação (stateful) | Funcionamento “Firewall” Suas Aplicações - Firewall de Aplicação (stateful) | Problemas “Firewall” Suas Aplicações - Firewall de Aplicação (stateful) | Configuração “Firewall” Para que Usar 1 - o firewall pode ser usado para ajudar a impedir que sua rede ou seu computador seja acessado sem autorização. Assim, é possível evitar que informações sejam capturadas ou que sistemas tenham seu funcionamento prejudicado pela ação de hackers; 2 - o firewall é um grande aliado no combate a vírus e cavalos-de-tróia, uma vez que é capaz de bloquear portas que eventualmente sejam usadas pelas "pragas digitais" ou então bloquear acesso a programas não autorizados; “Firewall” Para que Usar 3 - em redes corporativas, é possível evitar que os usuários acessem serviços ou sistemas indevidos, além de ter o controle sobre as ações realizadas na rede, sendo possível até mesmo descobrir quais usuários as efetuaram Com um Firewall você poderá evitar diversos tipos de ataques. Veja abaixo uma lista de ataques que podem ser evitados: - Ataques DoS - Bloquear serviços - Bloquear acessos não-autorizados - Controlar o acesso em sua rede - Bloquear qualquer e todo tipo de conexão SYN “Firewall” Como Configurar? (Shell Script – Linux) | O que é preciso saber Na configuração do firewall com o iptables, é preciso saber quais são as regras a serem utilizadas para rodar o Firewall: Regras do firewall -INPUT: É utilizada quando o destino final é a própria máquina firewall. -OUTPUT: Qualquer pacote gerado pela máquina firewall e que deva sair para a rede será tratado pela regra OUTPUT. -FORWARD: Qualquer pacote que atravessa o firewall, oriundo de uma máquina e direcionado à outra, será tratado pelo chain Forward. “Firewall” Como Configurar? (Shell Script – Linux) | O que é preciso saber As regras do firewall são compostas da seguinte maneira: #iptables [-t tabela] [opção] [chain] [dados] -j [ação] Principais operações de manipulação de chains: -N Cria uma nova chain -X Deleta uma chain [vazia] -P Muda as regras para uma chain padrão -L Lista as regras de uma chain -F "Flush" as regras fora da chain -Z Zera os pacotes e 'byte couters' de todas as regras de uma chain “Firewall” Como Configurar? (Shell Script – Linux) | Exemplos de configuração do Firewall #iptables -A INPUT -P icmp -j DROP Acima, um exemplo que cria uma regra que nega todos os pacotes ICMP vindos do servidor, em que se encontra o firewall. #iptables -D INPUT -p icmp -j DROP Isso apaga a regra setada acima #iptables -A INPUT -s 200.204.120.0/24 -j DROP A regra citada faz com que todos os pacotes vindos de qualquer endereço da clase de ip 200.204.120.0 #iptables -A OUTPUT -p icmp -d ! 200.201.120.0/24 -j ACCEPT Esta regra só permitirá pacotes icmp para máquinas que estejam em qualquer endereço ip, menos no citado acima. - “Firewall” Como Configurar? (Shell Script – Linux) | Exemplos de configuração do Firewall >Configurando o firewall contra ataques Abaixo, um exemplo de configuração de um firewall contra os ataques mais constantes realizados pelos hackers em servidores da Web. Setando essas configurações, o servidor configurado dificilmente será atacado, veja: Proteção contra Syn-floods: Ataques do tipo DoS - um usuário envia um grande núero de pacotes SYN ao servidor, que não suportará a grande carga de pacotes enviados e cairá. Setando a configuração abaixo, isso poderá ser evitado: #iptables -A FORWARD -p tcp -syn -m limit -limit 1/s -j ACCEPT Port scanners ocultos Os famosos port scanners estão à solta. A configuração abaixo impede conexões executadas pelos port scanners: #iptables -A FORWARD -p tcp -tcp-flags SYN,ACK,FIN,RST RST -m zlimit -limit 1/s -j ACCEPT Pings Evita alguns tipos maliciosos de pacotes que podem ser enviados ao seu servidor: iptables -A FORWARD -p icmp -icmp -icmp-type echo-request -m limit -limit 1/s -j ACCEPT “Firewall” Como Configurar? (Shell Script - Linux) # Abre para uma faixa de endereços: iptables -A INPUT -s 192.168.1.0/255.255.255.0 -j ACCEPT # Aceita tudo na interface de rede local: iptables -A INPUT -i eth0 -j ACCEPT # Verifica tanto a interface quanto a faixa de endereços de origem: iptables -A INPUT -s 192.168.1.0/255.255.255.0 -i eth0 -j ACCEPT # Abre uma porta (inclusive para a Internet): iptables -A INPUT -p tcp --dport 22 -j ACCEPT # Abre um conjunto de portas: iptables -A INPUT -m multiport -p tcp --dport 22,80,443 -j ACCEPT # Abre uma porta para um IP específico: iptables -A INPUT -p tcp -s 200.231.14.16 --dport 22 -j ACCEPT “Firewall” Como Configurar? (Shell Script - Linux) # Abre um intervalo de portas: iptables -A INPUT -p tcp --dport 6881:6889 -j ACCEPT # Verifica tanto o endereço IP quanto o MAC antes de autorizar a conexão: iptables -A INPUT -s 192.168.1.100 -m mac --mac-source 00:11:D8:76:59:2E -j ACCEPT # Abre para a faixa de endereços da rede local: iptables -A INPUT -s 192.168.1.0/255.255.255.0 -j ACCEPT # Faz a mesma coisa, só que especificando a interface. Pode ser # usada em substituição à regra anterior: # iptables -A INPUT -i eth0 -j ACCEPT # Abre uma porta (inclusive para a Internet): iptables -A INPUT -p tcp --dport 22 -j ACCEPT “Firewall” Como Configurar? (Shell Script - Linux) # Ignora pings: iptables -A INPUT -p icmp --icmp-type echo-request -j DROP # Protege contra IP spoofing: echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter # Descarta pacotes malformados, protegendo contra ataques diversos: iptables -A INPUT -m state --state INVALID -j DROP # Abre para a interface de loopback. Esta regra é essencial para que # o KDE e outros programas gráficos funcionem adequadamente: iptables -A INPUT -i lo -j ACCEPT “Firewall” Como Configurar? (Shell Script - Linux) # Impede a abertura de novas conexões, efetivamente bloqueando o acesso # externo ao seu servidor, com exceção das portas e faixas de endereços # especificadas anteriormente: iptables -A INPUT -p tcp --syn -j DROP echo "Regras de firewall ativadas" } parar(){ iptables -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT echo "Regras de firewall desativadas" } “Firewall” Como Configurar? (Shell Script – Linux) | Funcionamento A receber qualquer conexão, vinda de qualquer endereço, o firewall primeiro verifica todas estas regras, seqüencialmente, para decidir se o pacote passa ou não. Usando este script de exemplo, teríamos o seguinte: “Firewall” Como Configurar? (Shell Script – Linux) | Funcionamento - Se o pacote vier da rede local, ele é aceito. - Se o pacote for para porta 22 (do SSH), ele é aceito. - Se for um ping, ele é ignorado (de forma a dificultar um pouco para outros descobrirem que você está online). - Pacotes inválidos, que não façam parte de uma conexão aberta anteriormente e que não correspondam à abertura de uma nova conexão são ignorados, protegendo contra pacotes forjados e tentativas de ataque diversas. - Se o pacote vier da sua própria máquina (um programa tentando mostrar alguma coisa na tela, por exemplo), ele é aceito. - Se o pacote for uma resposta a uma conexão que você iniciou, como, por exemplo, o servidor do guiadohardware.net enviando a página do site que você está acessando, ele é aceito. - Tentativas de conexão (toda conexão TCP é iniciada por um pacote syn) fora das condições especificadas acima são descartadas pelo firewall. A conexão nem sequer chega a ser estabelecida e o emissor não recebe qualquer resposta (DROP). “Firewall” Como Configurar? (Modo Visual - Windows) No mundo Windows, a presença de um firewall pré-instalado no sistema é um fenômeno relativamente recente. Até o Windows 2000, o sistema simplesmente não contava com firewall algum. O Windows XP original trouxe um firewall simples batizado de ICF (Internet Connection Firewall), que era destinado a oferecer um nível mínimo de proteção a máquinas destinadas a compartilhar a conexão com a rede local. O ICF evoluiu bastante desde então, dando origem ao Windows Firewall, incluído a partir do Windows XP SP2, que embora ainda ofereça um conjunto modesto de recursos, já é bem mais utilizável que o antecessor. “Firewall” Como Configurar? (Modo Visual - Windows) O Windows Firewall é um firewall básico, que não oferece grandes vantagens sobre outros produtos nem é particularmente seguro, mas que oferece como vantagens o fato de já vir ativo por padrão (a partir do Windows XP SP2) e ser relativamente fácil de configurar. Ele é o absoluto mínimo em termos de proteção para uma máquina Windows diretamente conectada à Internet. Na tela de configuração você tem apenas três opções: ativar o firewall (usando exceções), ativar sem permitir exceções ou desativá-lo: “Firewall” Como Configurar? (Modo Visual - Windows) Na aba "Exceções" você tem acesso a uma lista de programas e serviços que podem receber conexões de entrada. Por padrão, ficam marcadas as opções "Área de trabalho remota", "Assistência remota", "Compartilhamento de Arquivos e Impressoras" e "Estrutura UPnP”. Você pode perceber que a aba "Exceções" mostra apenas os programas detectados pelo firewall, mas não as portas usadas por cada um “Firewall” Como Configurar? (Modo Visual - Windows) Clicando sobre o aplicativo e usando o botão "editar", pode ser visto a lista das portas usadas por ele. O "Compartilhamento de Arquivos e Impressoras", por exemplo, abre um total de 4 portas. “Firewall” Como Configurar? (Modo Visual - Windows) A opção "Qualquer computador (inclusive na Internet)" abre as portas para qualquer um que tenha acesso à sua máquina. Ela deve ser usada apenas no caso de programas de administração remota. A opção "Minha rede (sub-rede) somente" abre apenas para acessos provenientes da rede local. A terceira opção, "Lista personalizada", é destinada a situações onde você quer que o serviço fique acessível apenas para alguns endereços específicos, como VNC por exemplo.