Projeto e Instalação de Servidores Servidores Linux – Aula 6 – Firewall e Proxy Prof.: Roberto Franciscatto 1 – Firewall e Proxy Introdução FIREWALL 1 – Firewall e Proxy Introdução Firewall • Tem o objetivo de proteger um computador ou uma rede de computadores, seguindo regras estabelecidas 1 – Firewall e Proxy Introdução O que faz um Firewall ? • Um firewall examina o tráfego enquanto ele entra em uma das suas interfaces e aplica regras ao tráfego... • Essencialmente: • permitindo ou impedindo o tráfego baseado nestas regras 1 – Firewall e Proxy Introdução • Portas mais usadas para serviços de internet 22 = SSH 21 = FTP 25 = SMTP 53 TCP e 53 UDP = DNS 80 = HTTP 110 = POP3 143 = IMAP 443 = HTTPS 1194 UDP = OpenVPN 5901 = VNC 1 – Firewall e Proxy Implementando Firewall com IPTABLES • IPTABLES • Serviço de firewall nativo do linux • Possui uma grande variedade de recursos • Baseia-se no conceito de regras de entrada e saida 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Escrever regras do firewall é como que aprender um novo dialeto... • Imagine que ao escrever uma nova regra, você está explicando uma ideia, tente ser claro para que seja entendido... 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: -A INPUT: especifica que a regra se aplica a pacotes de entrada, ou seja, pacotes recebidos pelo servidor, em qualquer interface -A OUTPUT: a regra se aplica a pacotes de saída, transmitidos pelo próprio servidor. 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: -A FORWARD: este parâmetro é usado para compartilhar a conexão com a internet, permitindo que os micros da rede local acessem através do servidor. • Os pacotes dos outros micros, encaminhados pelo servidor, são tratados como ‘FORWARD’, diferente dos pacotes transmitidos pelo próprio servidor, que são tratados como ‘OUTPUT’. 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: -p tcp: especifica que a regra se aplica a pacotes TCP -p udp: especifica que a regra se aplica a pacotes UDP • Ex.: iptables –A INPUT –p udp --dport 53 –j ACCEPT • Importante: é necessário sempre especificar o protocolo, caso contrário, ERRO ! 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: • Caso seja preciso bloquear os três protocolos para um determinado endereço, pode-se usar: iptables –A INPUT –p ALL –s 88.191.79.206 –j DROP 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: • É comum bloquear as portas 0 a 1023 UDP, autorizando apenas as portas que devem ficar abertas como: iptables –A INPUT –p udp --dport 53 –j ACCEPT iptables –A INPUT –p udp --dport 0:1023 –j DROP 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: -p icmp: bloquear o pedido de pings • Ex.: iptables –A INPUT –p icmp --icmp-type echo-request –j DROP 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: -i eth0: a opção ‘-i’ permite definir a interface onde os pacotes devem ser recebidos ou enviados. Exemplos: iptables –A INPUT –p tcp –j REJECT iptables –A INPUT –i eth2 –p tcp –j REJECT iptables –A INPUT –i eth0 –p tcp --dport 22 –j ACCEPT 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: --dport ou --destination-port: especifica uma porta. • O uso mais comum para esta opção é para abrir portas de entrada e depois aplicar uma regra que feche as demais. 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: -d (destiny): destinado ao endereço IP ou domínio citado. Bastante utilizado para bloquear o acesso a determinados sites a partir dos micros da rede local. Ex.: iptables –A FORWARD –d dominio.com –j REJECT 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: -m mac --mac-source 00:11:D8:76:59:2E: esta é a regra que permite especificar endereços MAC dentro das regras do Iptables. Ex.: iptables –A INPUT --dport 22 –m mac --mac-source 00:11:D8:76:59:2E –j ACCEPT 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: --syn: cria uma regra válida apenas para novas conexões, não impedindo que o outro micro responda a conexões iniciadas pelo servidor, como em: Ex.: iptables –A INPUT –p tcp --syn –j DROP 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: -j: é usado no final de cada regra, especificando uma ação, que pode ser: -j ACCEPT: aceita o pacote. Ele é encaminhado ao destino sem passar pelas demais regras. -j REJECT: rejeita educadamente o pacote, enviando um pacote de resposta ao emissor. Ex.: ‘connect to host 192.168.1.1 port 22: Connection refused’ 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: -j DROP: o DROP é mais enfático. O pacote é simplesmente descartado, sem aviso. • O emissor fica um longo tempo esperando, até que eventualmente recebe um erro de time-out. -j LOG: permite logar conexões. É interessante usar estas regras principalmente em regras muito visadas, como a SSH. 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: (continuação) -j LOG: para ativar o log, é necessário duplicar a regra que abre a porta, usando a opção ‘-j LOG’ na primeira e ‘-j ACCEPT’ na segunda, como em: iptables –A INPUT –p tcp --dport 22 –j LOG iptables –A INPUT –p tcp --dport 22 –j ACCEPT 1 – Firewall e Proxy Implementando Firewall com IPTABLES • Entendendo as regras do firewall (Iptables) • Parâmetros do Iptables: (continuação) -j LOG: as mensagens são gravados no arquivo ‘/var/log/messages’. • é possível ver as mensagens com o comando ‘dmesg’ 1 – Firewall e Proxy Escrevendo um script completo (IPTABLES) • Entendendo as regras do firewall (Iptables) # 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: iptables –A INPUT –i eth0 –j ACCEPT # Abre uma porta: iptables –A INPUT –p tcp --dport 22 -j ACCEPT # Ignora pings: iptables –A INPUT –p icmp-type echo-request -j DROP 1 – Firewall e Proxy Escrevendo um script completo (IPTABLES) • Entendendo as regras do firewall (Iptables) (Continuação) # Protege contra IP spoofing: echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter # Descarta pacotes mal formados, protegendo contra ataques diversos: iptables –A INPUT –m state --state INVALID –j DROP # Abre para a interface de loopback: iptables –A INPUT –i lo –j ACCEPT 1 – Firewall e Proxy Escrevendo um script completo (IPTABLES) • Entendendo as regras do firewall (Iptables) (Continuação) # Protege contra IP spoofing: echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter # Descarta pacotes mal formados, protegendo contra ataques diversos: iptables –A INPUT –m state --state INVALID –j DROP # Abre para a interface de loopback: iptables –A INPUT –i lo –j ACCEPT 1 – Firewall e Proxy Escrevendo um script completo (IPTABLES) • Entendendo as regras do firewall (Iptables) (Continuação) # Impede a abertura de novas conexões, bloqueando acesso # externo ao servidor, com exceção das regras anteriores: iptables –A INPUT –p tcp --syn –j DROP 1 – Firewall e Proxy Escrevendo um script completo (IPTABLES) • Entendendo as regras do firewall (Iptables) (Continuação) Após incluir todas as regras do firewall, é necessário salvar e dar permissão de execução. Ex.: # cd /etc/init.d/ # chmod +x firewall 1 – Firewall e Proxy Escrevendo um script completo (IPTABLES) • Entendendo as regras do firewall (Iptables) Para desativar o firewall e voltar a aceitar conexões, use o comando ‘iptables – F’, que limpa as regras do Iptables: # iptables -F 1 – Firewall e Proxy Escrevendo um script completo (IPTABLES) • Forwarding de Portas • Ao compartilhar uma conexão via NAT, apenas o servidor recebe conexões vindas da internet. • Os micros da rede local acessam através do servidor e recebem apenas pacotes de resposta. • Entretanto existem casos em que você realmente deseja que alguns dos hosts fique diretamente acessível a internet 1 – Firewall e Proxy Escrevendo um script completo (IPTABLES) • Forwarding de Portas Exemplo: • Um servidor web, escutando na porta 80 do micro 192.168.1.3 da rede local, fique disponível na internet. • A única forma de fazer isso é o servidor ‘passar a bola’ para este micro • A limitação é que continua existindo uma única porta 80, uma única porta 22, etc... 1 – Firewall e Proxy Escrevendo um script completo (IPTABLES) • Forwarding de Portas Exemplo de Forwarding: # Redireciona uma única porta para um micro da rede local echo 1 > /proc/sys/net/ipv4/ip_forward iptables –t nat –A PREROUTING –p tcp –i eth1 --dport 22 – j DNAT --to 192.168.1.10 iptables –t nat –A POSTROUTING –d 192.168.1.10 –j SNAT --to 192.168.1.1 1 – Firewall e Proxy Escrevendo um script completo (IPTABLES) • Forwarding de Portas É possível ainda indicar uma lista de portas (usando a opção –m multiport), como em: # Redireciona um conjunto de portas echo 1 > /proc/sys/net/ipv4/ip_forward iptables –t nat –A PREROUTING –p tcp –i eth1 –m multiport --dport 21,22,80 –j DNAT --to-dest 192.168.1.10 iptables –t nat –A POSTROUTING –d 192.168.1.10 –j SNAT --to 192.168.1.1 1 – Firewall e Proxy EXERCÍCIOS • Exercícios • Construa um firewall básico para uso em um servidor web, contendo as seguintes regras: • Abrir para a interface de loopback • Bloqueie um determinado IP (hosts específicos) • Abra as portas referentes aos seguintes serviços usados: • SSH, DNS, HTTP, HTTPS • Bloqueie as conexões nas demais portas 1 – Firewall e Proxy EXERCÍCIOS • Exercícios (cont.) • Construa um firewall básico para uso em um servidor web, contendo as seguintes regras: • Garanta que o firewall permitira pacotes de conexões já iniciadas • Bloqueie as portas UDP de 0 a 1023 • Crie este script na forma de um arquivo executável • Adicione este arquivo na inicialização do Linux 1 – Firewall e Proxy EXERCÍCIOS • Exercícios (cont.) • Teste de um cliente linux se as regras estão funcionando • Utilize o site (https://www.grc.com/x/ne.dll?rh1dkyd2) para verificar o que seu firewall está protegendo... 1 – Firewall e Proxy EXERCÍCIOS • Exercícios (2) • Você deve detectar possíveis rootkits em seu servidor. Para isso faça os seguintes passos: • Instale o software chkrootkit • Execute o software • Armazene os resultados em um arquivo teste • Faça a análise dos resultados e explique o que o software encontrou. 1 – Firewall e Proxy Proxy PROXY 1 – Firewall e Proxy Introdução • Proxy • O Proxy é um servidor que atende a requisições repassando os dados do cliente à frente: • um usuário (cliente) conecta-se a um servidor proxy, requisitando algum serviço: • como um arquivo, conexão, página web, ou outro recurso disponível em outro servidor. 1 – Firewall e Proxy Introdução • Proxy • Serviços providos por um proxy: • Cache • Proxy transparente • Proxy aberto • Proxy Anônimo 1 – Firewall e Proxy Squid • Filtragem de pacotes via ACL – Access Control • ACL => Lista de Controle de Acesso • Solução de Proxy para Linux => Squid 1 – Firewall e Proxy Squid • Filtragem de pacotes via ACL – Access Control • Implementando um servidor proxy com o Squid • Para colocar em funcionamento: # apt-get install squid # mv /etc/squid/squid.conf /etc/squid/squid.conf.orig 1 – Firewall e Proxy Introdução • Filtragem de pacotes via ACL – Access Control • Arquivo /etc/squid/squid.conf contendo as seguintes linhas: http_port 3128 visible_hostname servidor acl all src 0.0.0.0/0.0.0.0 http_access allow all 1 – Firewall e Proxy Introdução • Filtragem de pacotes via ACL – Access Control • Implementando um servidor proxy com o Squid • Ex.: permissões 1 – Firewall e Proxy Introdução • Filtragem de pacotes via ACL – Access Control • Bloqueando por dominios ou palavras • Bloqueando por dominios ou palavras (com ou sem www) 1 – Firewall e Proxy Introdução • Filtragem de pacotes via ACL – Access Control • E se a regra ficar muito grande ? 1 – Firewall e Proxy Introdução • Filtragem de pacotes via ACL – Access Control • É possível nestes casos criar um arquivo externo, inserir os dominios, linha-a-linha e posteriormente fazer uma ‘chamada’ a este arquivo • Ex.: • Problema: • Cada novo endereço descoberto deve ser inserido na lista 1 – Firewall e Proxy Introdução • Filtragem de pacotes via ACL – Access Control • Solução: • O Sarg pode ajudar bastante 1 – Firewall e Proxy Introdução • Filtragem de pacotes via ACL – Access Control • É possível também inverter a regra, de forma que eu possa bloquear tudo e ir liberando acesso a determinados sites • Ex.: • Nos proxys mais atuais tem-se o bloqueio de dominios associado aos respectivos Ips, evitando assim que o usuario digite diretamente o IP de um site... 1 – Firewall e Proxy Introdução • Filtragem de pacotes via ACL – Access Control • É possível bloquear também por endereços IP • Descobrir o endereço IP associado a um dominio: # host (dominio) 1 – Firewall e Proxy Introdução • Filtragem de pacotes via ACL – Access Control • Bloqueando por palavras (incluidas na URL de acesso) • Criar um arquivo texto com as palavras a serem bloqueadas • orkut, xxx, sexo, teens... • Adicionar a regra contendo a localização do arquivo 1 – Firewall e Proxy Introdução • Filtragem de pacotes via ACL – Access Control • Mensagens de erro • Adicionar a seguinte linha no squid "error_directory /usr/share/squid/errors/Portuguese/ " • É possivel alterar os arquivos HTML de cada mensagem de forma personalizada... 1 – Firewall e Proxy EXERCÍCIOS • Instalar o squid • Efetuar os seguintes bloqueios: • lista de palavras inapropriadas (criar arquivo) • lista de sites bloqueados pela instituição (criar arquivo) • bloquear acesso durante o período da aula do prof. Roberto • bloquear acesso a arquivos com a extensão (avi, exe, mp3, mov, wmv, etc...) 1 – Firewall e Proxy EXERCÍCIOS (2) • Ainda no squid... • Configure uma cache de paginas e arquivos • Tanto cache de RAM como de HD • Proxy com autenticação • Instalar pacote apache2-utils • Cadastrar 5 usuarios diferentes • Instalar o Sarg • Gerar os relatorios e monitorar acessos Dúvidas, sugestões ou questionamentos ??? [email protected]