Novo firewall não navega;
Bom dia pessoal, virtuaizei as maquinas aqui e criei um novo firewall, porem ele roda um apache para autenticar o squid, é uma pagina html com 2 campos e faz a autenticação com squid usuario e senha talz, so que no meu firewall tem accept para a porta 80 dele e preciso fazer o OUTPUT para web porem os pacotes para fora da rede não estão mais navegando, alguem pode me dar uma luz, pq eu consigo resolver nomes externos e pingar fora da rede mais navegar bulhufas. vlw !!!
#Ativando Nat
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
#Rota redes
ip route add 192.168.2.0/24 via 192.168.1.251
ip route add 192.168.3.0/24 via 192.168.1.49
#Setup default policy
for i in INPUT FORWARD OUTPUT; do iptables -P $i DROP; done
#loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#STATE RETURN
for i in INPUT FORWARD OUTPUT; do iptables -A $i -m state --state ESTABLISHED,R$
#Ports INPUT Free
#SSH
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
#WEB
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
for i in 1 2 3; do iptables -A INPUT -p tcp -s 192.168.$i.0/24 --dport 80 -j -j ACCEPT; done
#DNS
for i in tcp udp; do iptables -A INPUT -p $i --dport 53 -j ACCEPT; done
for i in tcp udp; do iptables -A OUTPUT -p $i --dport 53 -j ACCEPT; done
#ICMP
for i in INPUT OUTPUT; do iptables -A $i -p icmp -j ACCEPT
Obrigado.
tentando entender e sanar duvidas
Eu faço o mascaramento em separado em minha rede.
E a questão da política padrão eu entendi, só porque sempre ativam a política padrão depois de
ter feito todas a regras. Ou pelo menos fazem como este script abaixo.
Estou interessado em seu trabalho, e sei que vou aprender coisas novas. Sabe que acabamos
por ficar em uma coisa só e isso não é bom, pois bugs podem estar presentes e temos que estar sempre atualizados.
Dê uma olhada neste script abaixo e comente o que você achou.
Desde já, obrigado pela atenção.
Vai um firewall que achei legal por ter uma boa estrutura e fácil de fazer adaptações.
#!/bin/bash
#
# Script criado por Igor Garcia
# Local para o executavel do IPTables
IPT=`which iptables`;
# Interface da rede INTERNA
IF_INTERNA="eth0";
# Interface da rede EXTERNA
IF_EXTERNA="eth1";
# Definição da rede interna
REDE_INTERNA="192.168.1.0/24"
fw_start()
{
#ativa o roteamento dinamico
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
# ================ POLITICAS PADRAO ===================
$IPT -t filter -P INPUT DROP
$IPT -t filter -P FORWARD DROP
$IPT -t filter -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P POSTROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
$IPT -t mangle -P INPUT ACCEPT
$IPT -t mangle -P FORWARD ACCEPT
# Cria chain com regras de segurança
$IPT -N BLOCK
$IPT -A BLOCK -p icmp --icmp-type echo-request -j DROP
$IPT -A BLOCK -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPT -A BLOCK -p tcp -m limit --limit 1/s -j ACCEPT
$IPT -A BLOCK -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/s -j ACCEPT
$IPT -A BLOCK -m unclean -j DROP
$IPT -A BLOCK -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A BLOCK -j LOG --log-prefix "FW_ALERT: "
$IPT -A BLOCK -j DROP
# Muda a prioridade dos pacotes (Type Of Service) para agilizar as coisas
$IPT -t mangle -A OUTPUT -o $IF_EXTERNA -p tcp -m multiport --dports 21,22,80,6667 -j TOS --set-tos 0x10
# Libera todo o trafego local
$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A INPUT -i $IF_INTERNA -j ACCEPT
$IPT -t filter -A FORWARD -i $IF_INTERNA -j ACCEPT
# Libera só FTP, SSH e WEB
$IPT -t filter -A INPUT -i $IF_EXTERNA -p tcp -m multiport --dports 21,22,80,6667 -j ACCEPT
# Libera a conexao para a rede interna
$IPT -t nat -A POSTROUTING -s $REDE_INTERNA -j MASQUERADE
# Cria um NAT para o SSH de uma maquina da rede interna
$IPT -t filter -A FORWARD -p tcp -d 0/0 --dport 2222 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp -d 0/0 --dport 2222 -j DNAT --to 192.168.1.2:22
# Regras para evitar packet flood
$IPT -A INPUT -j BLOCK
$IPT -A FORWARD -j BLOCK
}
fw_stop()
{
$IPT -t filter -P INPUT ACCEPT
$IPT -t filter -P FORWARD ACCEPT
$IPT -t filter -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P POSTROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
$IPT -t mangle -P INPUT ACCEPT
$IPT -t mangle -P FORWARD ACCEPT
$IPT -t filter -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t filter -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT -t filter -Z
$IPT -t nat -Z
$IPT -t mangle -Z
}
fw_usage()
{
echo
echo "$0 (start | stop | restart | clear)"
echo
echo "start - Ativa o firewall"
echo "stop - Desativa o firewall"
echo "restart - Reativa o firewall"
echo "clear - Limpa os contatores"
}
fw_clear()
{
$IPT -t filter -Z
$IPT -t nat -Z
$IPT -t mangle -Z
}
case $1 in
start)
fw_start;
;;
stop)
fw_stop;
;;
restart)
fw_stop;
fw_start;
;;
clear)
fw_clear;
;;
*)
fw_usage;
exit;
;;
esac