Você está na página 1de 25

FIREWALL

FIREWALL
Funes Bsicas:
. Bloquear o acesso a portas que no esto em uso. . Evitar a exposio de servios vulnerveis. . Evitar conexes provenientes da internet

FIREWALL
Brechas de Segurana
No ano de 2004 foi descoberto o buffer overflow no servidor ssh, que poderia ser usado para desenvolver um exploid.
buffer overflow quando o tamanho de um buffer ultrapassa sua capacidade mxima de armazenamento.

FIREWALL
Um exploit, um programa de computador, uma poro de dados ou uma sequncia de comandos que se aproveita das vulnerabilidades de um sistema.
So geralmente elaborados por hackers como programas de demonstrao das vulnerabilidades, a fim de que as falhas sejam corrigidas, ou por crackers a fim de ganhar acesso no autorizado a sistemas. Por isso muitos crackers no publicam seus exploits, conhecidos como 0days, e o seu uso massificado deve-se aos script kiddies.
script Kiddies termo depreciativo atribudo aos grupos de crackers inexperientes

FIREWALL
Protocolo TCP No TCP os dados so transmitidos atravs de conexes. Tudo comea com o cliente enviando o pacote SYN que solicita abertura de conexo, caso a porta esteja fechada o servidor responde com um pacote RST e termina o processo. Caso exista algum servidor disponvel na porta solicitada, ento o mesmo responde com outro pacote SYN, seguido de um pacote ACK, avisando que a porta est disponvel e prosseguindo com a abertura da conexo.

FIREWALL
Transmisso:
Estao SYN : Solicita abertura de conexo Servidor SYN: confirma recebimento e avisa que aporta est aberta Servidor ACK: Inicia a conexo Estao ACK: Confirma a conexo Estao FYN: Solicita o fechamento da conexo Servidor FYN: Confirma Estao FYN: confirma que recebeu a confirmao

FIREWALL

Uma prtica comum bloquear o recebimento de pacotes SYN, usados para iniciar conexes. Dessa forma seu host no aceitar a abertura de novas conexes, mas continua recebendo pacotes referentes a conexes iniciadas por ele. uma forma simples de fechar as portas de entrada sem obstruir o uso da conexo ou o recebimento de dados.

FIREWALL
#Bloqueia SYN e FIN -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP #Bloquear SYN e RST -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP #Bloquear SYN e RST -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP #Bloquear FIN e RST -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROP #Bloquear FIN sem ACK -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROP

FIREWALL

Pesquise as regras citadas e explique o que cada uma est realizando.

SCRIPT DE FIREWALL
EXEMPLOS DE FIREWALLS FOR LINUX . SHOREWALL . FIRESTARTER Variam em nvel de facilidade e recursos, oferecendo uma interface amigvel e gerando regras de iptables.

SCRIPT DE FIREWALL
Iptables -A INPUT -s 192.168.10.0/255.255.255.0 -j ACCEPT Tudo comea com o comando iptables que por definio o utilitrio responsvel por ler os parmetros e atualizar a configurao do firewall. No exemplo acima foi usado INPUT -s 192.168.10.0/255.255.255.0 que se aplica a qualquer pacote de entrada (INPUT), proveniente dos micros da rede local. Como no foi especificado o protocolo, a regra permitir o uso dos trs protocolos: TCP, UDP e ICMP iptables -A INPUT -s 192.168.10.23 -j REJECT

SCRIPT DE FIREWALL
Como seria interpretado pelo Iptables a sequncia de regras abaixo ? iptables -A INPUT -s 192.168.10.10 -j ACCEPT iptables -A INPUT -s 192.168.10.10 -j REJECT

Explique o que as linhas abaixo esto realizando na rede local. Iptables -A INPUT -s 192.168.10.10 -j REJECT iptables -A INPUT -s 192.168.10.0/255.255.255.0 -j ACCEPT

SCRIPT DE FIREWALL

Como seria interpretado pelo Iptables a sequncia de regras abaixo : iptables -A INPUT -s 192.168.10.10 -j ACCEPT iptables -A INPUT -s 192.168.10.10 -j REJECT

SCRIPT DE FIREWALL
Abaixo temos um exemplo de mini-script de firewall que pode ser usado em um desktop que simplesmente acessa a internet como cliente, sem rodar nenhum servidor nem compartilhar a conexo com outros micros. #!/bin/sh iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p tcp syn -j DROP O objetivo do script acima que o micro possa acessar a internet sem ficar vulnervel a acessos externos, os dois comando acima realizam o procedimento da forma mais simples possvel.

SCRIPT DE FIREWALL
A primeira linha orienta o firewall a deixar passar os pacotes enviados atravs da interface loopback -i lo ACCEPT.

iptables -A INPUT -i lo -j ACCEPT

Obs. Todos os programas grficos utilizam a interface loopback para se comunicar com o servidor X, os programas do KDE utilizam a interface para trocar mensagens entre s. Sem esta regra muita coisa deixaria de funcionar.

SCRIPT DE FIREWALL
Vamos imaginar o cenrio onde meu servidor tem duas placas de rede, uma para a rede local e outra para a Internet, precisamos que tudo fique acessvel dentro da rede local, mas manter tudo fechado para quem vem da internet, neste caso usamos a regra abaixo: # Abre uma faixa de endereos iptables -A INPUT -s 192.168.10.0/255.255.255.0 -j ACCEPT Agora, se o servidor possui duas placas de rede, podemos melhorar ainda mais esta regra, especificando a interface de origem em vez da faixa de endereo como segue abaixo: #Aceita tudo na interface de rede local iptables -A INPUT -i eth0 -j ACCEPT

SCRIPT DE FIREWALL
Como priorizamos a segurana e nos tornamos administradores paranicos, podemos tambm combinar as duas regras mencionadas, para que o firewall verifique tanto a interface de origem quanto a faixa de endereos, aceitando a conexo apenas quando as duas condies forem satisfeitas.

#Verifica tanto a interface quanto a faixa de endereos de origem iptables -A INPUT -s 192.168.10.0/255.255.255.0 -i eth0 -j ACCEPT

SCRIPT DE FIREWALL
Abrindo portas para conexes ao servidor

#Abre porta 22 (Inclusive para 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 porta para um ip especfico iptables -A INPUT -p tcp -s 200.161.115.92 dport 22 -j ACCEPT #Abre um intervalo de portas iptables -A INPUT -p tcp dport 6881:6889 -j ACCEPT

SCRIPT DE FIREWALL
Filtrando conexes por MAC

#Verifica o endereo IP o o MAC antes de autorizar a conexo

iptables -A INPUT -s 192.168.10.100 -m mac mac-source 00:11:D8:76:59:2E -j ACCEPT

Obs. Limitar o acesso com base no endereo MAC adiciona uma camada extra de proteo, mas no infalvel, o endereo MAC pode ser trocado de forma simples como o endereo IP como segue abaixo. No linux utilize os seguintes comandos: # ifconfig eth0 down # ifconfig eth0 hw ether 09:13:D9:54:43:2E # ifconfig eth0 up

SCRIPT DE FIREWALL
EXEMPLO DE SCRIPT PARA EVITAR ATAQUES COMUNS #! /bin/bash iniciar( ) { #Abre para a faixa de endereos da rede local iptables -A INPUT -s 192.168.1.0/255.255.255.0 -j ACCEPT #Abre uma porta (inclusive para internet) iptables -A INPUT -p tcp dport 22 -j ACCEPT #Ignora pings iptables -A INPUT -p icmp icmp-type echo-request -j DROP #Proteo contra IP spoofing echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter

SCRIPT DE FIREWALL
#Descarta pacotes malformados, protegendo contra ataques diversos iptables -A INPUT -m state --state INVALID -j DROP #Abre interface Loopback iptables -A INPUT -i lo -j ACCEPT #Impede abertura de novas conexes 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 } case $1 in start) iniciar ; ; stop) parar ;; restart) parar; iniciar ;; *) echo Use os parametros start ou stop esac

SCRIPT DE FIREWALL

Concluindo o script, salve-o dentro da pasta /etc/init.d e marque a permisso de execuo: #chmod +x /etc/init.d/iptables

FIREWALL NO GATEWAY DA REDE


A seguir temos um exemplo de script de firewall que inclui as regras para compartilhar a conexo e ativar o proxy transparente.
#!/bin/bash # Compartilha a conexo modprobe iptable_nat echo 1 > /proc/sys/bet/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE echo Compratilhamento Ativado #Proxy transparente iptables -t nat -A PREROUTING -i eth0 -p tcp dport 80 -j REDIRECT to-port 3128 echo PROXY TRANSPARENTE ATIVADO #Permite conexoes na interface de rede local e na porta 22 iptables -A INPUT -i eth0 -j ACCEPT iptables -A INPUT -p tcp dport 22 -j ACCEPT # Regras Basicas de Firewall iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p icmp icmp-type echo-request -j DROP echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter iptables -A INPUT -p tcp syn -j DROP # Bloqueia as portas UDP de 0 a 1023 iptables -A INPUT -p udp dport 0:1023 -j DROP echo Regras de Firewall e compartilhamento ativados

FIREWALL NO GATEWAY DA REDE


} parar ( ){ iptables -F iptables -t nat -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT echo 0 > /proc/sys/net/ipv4/ip_forward echo Regras de Firewall e Compartilhamento Desativados } case $1 in start:) iniciar ;; stop) parar ;; restart:) parar; iniciar ;; *) echo Use os comandos start ou stop esac

FIREWALL NO GATEWAY DA REDE

Neste exemplo a funo parar do script de inclui tambm os comando iptables -t NAT -F e echo 0> /proc/sys/net/ipv4/ip_forward, destinados a limpar as regras de roteamento de pacotes quando o script destivado, parando tambm o compartilhamento de conexes Outra novidade a regra que bloqueia as portas UDP de 0 a 1023, adicionada no final do script. Ao contrrio da porta TCP, o protocolo UDP no bseado na abertura de conexes, os dados so enviados diretamente, sem serem precedidos por um pacote SYN ou qualquer aviso.