Firewall básico para conexões domésticas – Iptables

A função de um firewall é bloquear o acesso a portas que não estão em uso, ou filtrar o acesso a portas em uso.
O linux possui um excelente (porém complicado a primeira vista) firewall, o iptables.

Abaixo segue um exemplo de configuração bem genérico, que pode ser utilizado na maioria dos casos. O arquivo encontra-se comentado, e sob forma de serviço. Então se vc está no Slackware, copie-o para o /etc/rc.d e dê permissão de execução para o mesmo.

#!/bin/sh

iniciar(){
#limita respostas de ping 1 por segundo
iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT

#se nao eh roteador, desabilitar
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

#pode prover ataques DOS
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#usado para teste de roteadores, permite utilizar pacotes como se fossem outros emissores
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

#nao usarei compartilhamento de conexao
echo 0 > /proc/sys/net/ipv4/ip_forward

#cria a conexao somente depois de receber o syn/ack
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

#responde a pacotes sempre com a mesma interface
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter

#dropa pacotes invalidos
iptables -A INPUT -m state –state INVALID -j LOG –log-level 6 –log-prefix “DROPPED PACKET IVALID:”
iptables -A INPUT -m state –state INVALID -j DROP

#abre para a interface de loopback
iptables -A INPUT -p tcp -i lo -j ACCEPT

#bloqueia um determinado ip
#iptables -A INPUT -p ALL -s 88.191.79.206 -j DROP

#abre portas de servicos usados
# SSH
iptables -A INPUT -p tcp –dport 22 -j ACCEPT

#DNS
iptables -A INPUT -p tcp –dport 53 -j ACCEPT
iptables -A INPUT -p udp –dport 53 -j ACCEPT

#HTTP e HTTPS
#iptables -A INPUT -p tcp –dport 80 -j ACCEPT
#iptables -A INPUT -p tcp –dport 443 -j ACCEPT

#bloqueia conexoes nas demais portas

iptables -A INPUT -p tcp –syn -j LOG –log-level 6 –log-prefix “DROPPED SYN:”
iptables -A INPUT -p tcp –syn -j DROP

#garante que o firewall permitira pacotes de conexoes ja iniciadas
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

#bloqueia as portas udp de 0 a 1023 exceto a 53
iptables -A INPUT -p udp –dport 0:1023 -j LOG –log-level 6 –log-prefix “DROPPED UDP:”
iptables -A INPUT -p udp –dport 0:1023 -j DROP

# bloqueando um site ex:orkut.com
# iptables -A OUTPUT -d http://www.orkut.com -j REJECT

echo “Firewall is alive”
}

parar(){
iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
echo “Firewall is dead”
}

case “$1” in
“start”) iniciar ;;
“stop”) parar ;;
“restart”) parar; iniciar ;;
*) echo “Usage start, stop or restart”
esac

Caso vc tenha um serviço web neste computador, e necessita liberá-lo para fora, remova os comentários referentes as regras das portas tcp 80 e 443.

Este script loga todos os pacotes Dropados (descartados), para facilitar a leitura, altere o arquivo /etc/syslog.conf adicionando

kern.debug -/var/log/iptables.log

Logo após crie o arquivo iptables.log

# touch /var/log/iptables.log
# /etc/rc.d/rc.syslog restart

Para iniciar seu firewall, utilize

# /etc/rc.d/rc.firewall start

Se em algum momento você quizer verificar que regras estão ativas, utilize:

# iptables -L

Para parar o firewall:

# /etc/rc.d/rc.firewall stop

Acompanhe continuamente o arquivo /var/log/iptables para verificar se tentativas de conexão são realizadas, aperfeiçoe seu firewall conforme necessário.


About this entry