Bom galera, este é meu primeiro artigo, estou trabalhando com Linux a alguns meses e graças ao VOL eu hoje sinto a liberdade (hehe) que o Linux pode proporcionar. Neste artigo vou descrever como construir um firewall com uma ajudinha do Webmin para editar seus arquivos de configuração. Então mãos a obra.
Inicialmente vamos precisar instalar uma distro de sua escolha (ainda não testei este script em distros diferentes do Debian, então aceito sugestões de mudança). Para este artigo usei o Debian 6 testing, creio que funcionará perfeitamente no Lenny e demais distros Debian.
Bom, não vou abordar a instalação e configuração de seu SO e nem do Webmin, pois o VOL está repleto de artigos e dicas muito completas, sem contar que as instalações necessárias são relativamente simples.
$IPT -t filter -P INPUT DROP
$IPT -t filter -P FORWARD DROP
$IPT -t filter -P OUTPUT ACCEPT
# ENABLE LOOPBACK
$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A OUTPUT -o lo -j ACCEPT
# ENABLE IMPORTANT PORTS
$IPT -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT
$IPT -t filter -A INPUT -m state --state RELATED -j ACCEPT
DOOROPEN=`cat "/server/firewall/portasabertas.conf"`
for n in $DOOROPEN; do
PROTOCOL=`$EC $n | cut -d '@' -f 1`
DOOR=`$EC $n | cut -d '@' -f 2`
if [ "$PROTOCOL" = "tcp" ]; then
$IPT -t filter -A INPUT -p tcp --dport $DOOR -j ACCEPT
elif [ "$PROTOCOL" = "udp" ]; then
$IPT -t filter -A INPUT -p udp --dport $DOOR -j ACCEPT
fi
done
# BLOCK SITES FROM INTRANET
$IPT -t filter -A FORWARD -m state --state ESTABLISHED -j ACCEPT
$IPT -t filter -A FORWARD -m state --state RELATED -j ACCEPT
SITES=`cat "/server/firewall/sitesdesativados.conf"`
for n in $SITES ; do
$IPT -t filter -A FORWARD -s $LAN -d $n -j DROP
$IPT -t filter -A FORWARD -s $n -d $LAN -j DROP
done
# PING OF DEATH
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
$IPT -N PING
$IPT -A INPUT -p icmp --icmp-type echo-request -j PING
$IPT -A PING -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A PING -j DROP
# SYN-FLOOD
echo "0" > /proc/sys/net/ipv4/tcp_syncookies
$IPT -N syn-flood
$IPT -A INPUT -i $IFWAN -p tcp --syn -j syn-flood
$IPT -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A syn-flood -j DROP
# BRUTE-SSH
$IPT -N BRUTE-SSH
$IPT -A INPUT -i $IFWAN -p tcp --dport 22 -j BRUTE-SSH
$IPT -A BRUTE-SSH -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A BRUTE-SSH -j DROP
# ANTI-SPOOFINGS
$IPT -A INPUT -s 10.0.0.0/8 -i $IFWAN -j DROP
$IPT -A INPUT -s 127.0.0.0/8 -i $IFWAN -j DROP
$IPT -A INPUT -s 172.16.0.0/12 -i $IFWAN -j DROP
$IPT -A INPUT -s 192.168.1.0/16 -i $IFWAN -j DROP
[5] Comentário enviado por crandrade em 17/06/2010 - 09:24h
Andre,
Comecei a estudar iptables agora, montei um laboratorio com maquinas virtuais simulando duas redes com um firewall (iptables) no meio, gostaria de saber como faço para bloquear o trafego entre as duas redes e ir liberando aos poucos somente o necessario. As duas redes ja estão se falando.
[6] Comentário enviado por andfeh em 18/06/2010 - 22:35h
Seguinte, você tem que partir do principio, que entre redes separadas, você usará inicialmente a tabela FILTER, cadeia FORWARD para trafegar entre uma rede e outra...
ai por exemplo a rede "A"=192.168.0.XXX/24 e a rede "B"=192.168.10.XXX/24, ok?
entao você cria uma regra + ou - assim:
iptables -t filter -A FORWARD -s 192.168.0.XXX/24 -d 192.168.10.XXX/24 -j DROP
iptables -t filter -A FORWARD -d 192.168.0.XXX/24 -s 192.168.10.XXX/24 -j DROP
tradução: a primeira regra diz que tudo/qualquer protocolo que vier da rede "A" para rede "B" vai seja negado e vice versa...
e assim por diante...
mas lembre-se quando você for adicionar uma regra para aceitar algum tráfego entre as redes vocÊ tem que adicionar antes que o tráfego seja "DROPADO" entre elas, ok?
[7] Comentário enviado por ton.work em 31/08/2010 - 16:44h
André Santos,
estou usando seu firewall e estou gostando muito, tenho em rede dois servidores e cada um com uma placa gv800 e nela precisaria abilitar as seguintes portas:
81
2100
2101
6551
82
4550
2101
6551
abilitei usando a porta 81 e fiz um teste de portas no site shields up e a porta estava aberta, será que tem algum esquema pra deixar essa porta aberta mas em modo Stealth
ficou assim o firewall
#!/bin/bash
## VARIABLES ##
IFWAN=`ifconfig | sed -n "1p" | awk {'print $1'}` # Filtra Saida do comando 'ifconfig' - Automatiza a implantação do Script
IPWAN=`ifconfig | sed -n "2p" | awk {'print $3'}`
IFLAN=`ifconfig | sed -n "11p" | awk {'print $1'}`
IPLAN=`ifconfig | sed -n "12p" | awk {'print $3'}`
LAN=192.168.1.10/24
#compartilhando a web na rede interna
iptables -t nat -A POSTROUTING -s 192.168.1.10/255.255.255.0 -o eth1 -j MASQUERADE &&
echo 1 > /proc/sys/net/ipv4/ip_forward &&
######
# POLICES THIS FIREWALL
$IPT -t filter -P INPUT DROP
$IPT -t filter -P FORWARD DROP
$IPT -t filter -P OUTPUT ACCEPT
# ENABLE LOOPBACK
$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A OUTPUT -o lo -j ACCEPT
# ENABLE IMPORTANT PORTS
$IPT -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT
$IPT -t filter -A INPUT -m state --state RELATED -j ACCEPT
DOOROPEN=`cat "/home/antonio/portasabertas.conf"`
for n in $DOOROPEN; do
PROTOCOL=`$EC $n | cut -d '@' -f 1`
DOOR=`$EC $n | cut -d '@' -f 2`
if [ "$PROTOCOL" = "tcp" ]; then
$IPT -t filter -A INPUT -p tcp --dport $DOOR -j ACCEPT
elif [ "$PROTOCOL" = "udp" ]; then
$IPT -t filter -A INPUT -p udp --dport $DOOR -j ACCEPT
fi
done
# BLOCK SITES FROM INTRANET
$IPT -t filter -A FORWARD -m state --state ESTABLISHED -j ACCEPT
$IPT -t filter -A FORWARD -m state --state RELATED -j ACCEPT
SITES=`cat "/server/firewall/sitesdesativados.conf"`
for n in $SITES ; do
$IPT -t filter -A FORWARD -s $LAN -d $n -j DROP
$IPT -t filter -A FORWARD -s $n -d $LAN -j DROP
done
# PING OF DEATH
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
$IPT -N PING
$IPT -A INPUT -p icmp --icmp-type echo-request -j PING
$IPT -A PING -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A PING -j DROP
# SYN-FLOOD
echo "0" > /proc/sys/net/ipv4/tcp_syncookies
$IPT -N syn-flood
$IPT -A INPUT -i $IFWAN -p tcp --syn -j syn-flood
$IPT -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A syn-flood -j DROP
# BRUTE-SSH
$IPT -N BRUTE-SSH
$IPT -A INPUT -i $IFWAN -p tcp --dport 22 -j BRUTE-SSH
$IPT -A BRUTE-SSH -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A BRUTE-SSH -j DROP
# ANTI-SPOOFINGS
$IPT -A INPUT -s 10.0.0.0/8 -i $IFWAN -j DROP
$IPT -A INPUT -s 127.0.0.0/8 -i $IFWAN -j DROP
$IPT -A INPUT -s 172.16.0.0/12 -i $IFWAN -j DROP
$IPT -A INPUT -s 192.168.1.0/16 -i $IFWAN -j DROP
[9] Comentário enviado por sobralmaster em 09/06/2011 - 16:12h
Boa tarde..
Li os seus postssobre coovachilli e sobre firewall, já ha algum tempo eu venho me dedicando a este tipo de trabalho.
Ja passei por outros softwares para hotspot e pretendo testar este pois me parece uma ótima solução. Quanto ao seu Firewall, Show de bola. Muito bom e seguindo a sua linha de raciocínio ninguém precisa "meter" a mão nos códigos para liberar ou Bloquear alguma cosia, muito bom mesmo
Está de parabens, a galera que está começando agora agradece..
Que Deus continue nos dando a sabedoria necessária.