Oi Rodrigo,
Est� faltando a passagem do DNS :-(
Caso tenha um servidor de DNS Cache-only voc� dever� permitir que ele fa�a a consulta em DNS externo.
Caso n�o possua um DNS, dever� incluir uma regra para a passagem dos pacotes de DNS:
Clientes:>1024 ---------------------> DNS:53 DNS:53 -----------------------------> Clientes:>1024
Lembre-se que as consultas s�o em UDP ;-)
Abra�os
Leandro Silva
Rodrigo Natale escreveu:
Bom dia pessoal.
Estou com um problema que ta me deixando careca com o iptables...
Tenho um servidor de firewall/proxy rodando o slack 9.1 e iptables, onde o squid esta funcionando perfeitamente, a rede navega na internet normalmente sem o firewall ativado. Quando ativo o firewall as esta��es nao conseguem navegar e nem receber/enviar e-mail com o outlook, e ja revisei diversas vezes o script para ver o que esta bloqueando a navega��o e nao consigo. As esta��es usam windows, e no internet explorer aparece a mensagem no rodap� "Localizando o site: www.xxx.com" Ja criei logs para tentar descobrir o que ta bloqueando, mas parece ser alguma coisa com dns, e nao consigo saber o que �. Parece que o site, nao consegue enviar a resposta ao proxy, pois o firewall bloqueia algo. S� conseguem navegar com o firewall ativado, caso eu deixe a linha IPTABLES -P INPUT ACCEPT. Anexo, estou enviando o script, e gostaria que vcs me ajudassem, estarei muito grato.
Obrigado Rodrigo Natale Ciochetti de Camargo - Administrador de Redes Jr.
Rodrigo Natale Ciochetti de Camargo - Administrador de Redes Jr. CUNO Latina Ltda. *(0XX11) 4718-8516 * www.cunolatina.com.br
------------------------------------------------------------------------
#!/bin/sh # # Packetfilter Controle de regras basica de Filtro (police) # chkconfig: 345 10 10 # description: Controle de regras basicas de Filtros (police) - Designer by Rodrigo - {(DotComGuy)}
fe=/sbin/iptables ambiente() { echo " ##############################################" echo " # Iniciando Firewall StateFull #" echo " ##############################################"
echo " ##############################################" echo " # Definindo variaveis de Ambiente #" echo " ##############################################"
echo "2" > /proc/sys/net/ipv4/conf/all/rp_filter echo "1" > /proc/sys/net/ipv4/ip_forward echo "0" > /proc/sys/net/ipv4/tcp_timestamps echo "0" > /proc/sys/net/ipv4/tcp_syncookies echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
for file in /proc/sys/net/ipv4/conf/all/accept_source_route; do echo "0" > $file done
echo "0" > /proc/sys/net/ipv4/conf/all/log_martians echo "32768 61000" > /proc/sys/net/ipv4/ip_local_port_range echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout echo "1800" > /proc/sys/net/ipv4/tcp_keepalive_time echo "0" > /proc/sys/net/ipv4/tcp_window_scaling echo "0" > /proc/sys/net/ipv4/tcp_sack
UNPRIVPORTS="1024:65535"
echo " ##############################################" echo " # Carregando modulos nescessarios #" echo " ##############################################" /sbin/modprobe ip_tables /sbin/modprobe iptable_filter /sbin/modprobe ip_nat_ftp /sbin/modprobe iptable_nat /sbin/modprobe ip_conntrack /sbin/modprobe ip_conntrack_ftp /sbin/modprobe ipt_unclean /sbin/modprobe ip_queue /sbin/modprobe iptable_nat /sbin/insmod /etc/kernel/ipt_p2p.o }
case "$1" in start)
echo " ##############################################" echo " # Inicializando Filtragem de Pacotes #" echo " ##############################################" echo 1 > /proc/sys/net/ipv4/ip_forward echo "." ambiente
echo " ##############################################"
echo " # Dando um FLUSH nas Tabelas #"
echo " ##############################################"
$fe -F $fe -F -t nat
$fe -F -t mangle
echo " ##############################################" echo " # Aceitando qq requisi��o no LOOPBACK #" echo " ##############################################" $fe -A INPUT -i lo -j ACCEPT
echo " ##############################################" echo " # Aceiitando pacotes Conectados #" echo " ##############################################" $fe -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $fe -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT $fe -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $fe -A INPUT -p tcp -s 0/0 -d XXX.XXX.XXX.XXX --dport $UNPRIVPORTS -j ACCEPT
echo " ##############################################" echo " # Fazendo um DROP na tabela INPUT #" echo " ##############################################" $fe -F INPUT $fe -F FORWARD $fe -F OUTPUT $fe -F -t nat $fe -P INPUT DROP $fe -P OUTPUT ACCEPT $fe -P FORWARD DROP
echo " ##############################################" echo " # Ativando Mascaramento de Pacotes #" echo " ##############################################" $fe -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE $fe -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -d 0/0 --dport 25 -j MASQUERADE $fe -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -d 0/0 --dport 110 -j MASQUERADE
echo " ##############################################" echo " # For�ar a saida pela porta 3128 squid #" echo " ##############################################" $fe -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo " ##############################################" echo " # Abrindo portas TCP e UDP Necessarias #" echo " ##############################################" $fe -A INPUT -p tcp --dport 20 -j ACCEPT $fe -A INPUT -p tcp --dport 21 -j ACCEPT $fe -A INPUT -p tcp --dport 22 -j ACCEPT $fe -A INPUT -p tcp --dport 25 -j ACCEPT $fe -A INPUT -p tcp --dport 53 -j ACCEPT $fe -A INPUT -p tcp --dport 80 -j ACCEPT $fe -A INPUT -p tcp --dport 110 -j ACCEPT $fe -A INPUT -p tcp --dport 443 -j ACCEPT ######### ## UDP ## ######### $fe -A INPUT -p udp --dport 22 -j ACCEPT $fe -A INPUT -p udp --dport 53 -j ACCEPT $fe -A INPUT -p udp --dport 443 -j ACCEPT $fe -A INPUT -p udp --dport 110 -j ACCEPT
echo " ##############################################" echo " # Bloqueando Servicos Internos #" echo " ##############################################" $fe -A INPUT -p tcp -s 0/0 -d XXX.XXX.XXX.XXX --dport 61000 -j LOG --log-prefix "Tentativa WEBMin" $fe -A INPUT -p tcp -s 0/0 -d XXX.XXX.XXX.XXX --dport 61000 -j DROP $fe -A INPUT -p tcp -s 0/0 -d XXX.XXX.XXX.XXX --dport 3128 -j LOG --log-prefix "Tentativa 3128" $fe -A INPUT -p tcp -s 0/0 -d XXX.XXX.XXX.XXX --dport 3128 -j DROP $fe -A INPUT -p tcp -s 0/0 -d XXX.XXX.XXX.XXX --dport 81 -j LOG --log-prefix "Tentativa 81" $fe -A INPUT -p tcp -s 0/0 -d XXX.XXX.XXX.XXX --dport 81 -j DROP ######### ## UDP ## ######### $fe -A INPUT -p udp -s 0/0 -d XXX.XXX.XXX.XXX --dport 61000 -j LOG --log-prefix "Tentativa WEBMin" $fe -A INPUT -p udp -s 0/0 -d XXX.XXX.XXX.XXX --dport 61000 -j DROP $fe -A INPUT -p udp -s 0/0 -d XXX.XXX.XXX.XXX --dport 3128 -j LOG --log-prefix "Tentativa 3128" $fe -A INPUT -p udp -s 0/0 -d XXX.XXX.XXX.XXX --dport 3128 -j DROP $fe -A INPUT -p udp -s 0/0 -d XXX.XXX.XXX.XXX --dport 81 -j LOG --log-prefix "Tentativa 81" $fe -A INPUT -p udp -s 0/0 -d XXX.XXX.XXX.XXX --dport 81 -j DROP
echo " ##############################################" echo " # Abrindo portas para rede interna #" echo " ##############################################" $fe -A INPUT -p tcp -s 192.168.1.0/24 -j ACCEPT $fe -A INPUT -p tcp -s 192.168.1.0/24 -d 192.168.1.231 --dport 81 -j ACCEPT $fe -A INPUT -p tcp -s 192.168.1.0/24 -d 192.168.1.231 --dport 3128 -j ACCEPT $fe -A INPUT -p tcp -s 192.168.1.0/24 -d 192.168.1.231 --dport 61000 -j ACCEPT ######### ## UDP ## ######### $fe -A INPUT -p udp -s 192.168.1.0/24 -d 192.168.1.231 --dport 81 -j ACCEPT $fe -A INPUT -p udp -s 192.168.1.0/24 -d 192.168.1.231 --dport 3128 -j ACCEPT $fe -A INPUT -p udp -s 192.168.1.0/24 -d 192.168.1.231 --dport 61000 -j ACCEPT
echo " ##############################################" echo " # Bloqueando pac. com todos os Bits Ligados #" echo " ##############################################" $fe -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
echo " ##############################################" echo " # Bloqueando pac. com todos os Bits Ligados #" echo " ##############################################" $fe -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
echo " ##############################################" echo " # Bloqueando pac. tipos arvore de Natal #" echo " ##############################################" $fe -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
echo " ################################################" echo " #Bloqueando pac. c/ possibilidades Impossiveis.#" echo " ################################################" $fe -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP $fe -A INPUT -p tcp --tcp-flags SYN,FIN,URG SYN,FIN,URG -j DROP $fe -A INPUT -p tcp --tcp-flags SYN,FIN,RST SYN,FIN,RST -j DROP $fe -A INPUT -p tcp --tcp-flags SYN,FIN,PSH SYN,FIN,PSH -j DROP $fe -A INPUT -p tcp --tcp-flags SYN,ACK,FIN SYN,ACK,FIN -j DROP
echo " ##############################################" echo " # Bloqueando pacotes Mal Formados #" echo " ##############################################" $fe -A INPUT -i eth0 -m unclean -j DROP
echo " ##############################################" echo " #Bloqueando pacotes Mal Formados e Suspeitos #" echo " ##############################################" $fe -A INPUT -i eth0 -m state --state INVALID -j DROP
echo " ##############################################"
echo " # Bloqueando ICMP IGMP #"
echo " ##############################################"
for x1 in `seq 1 2`
do
for x2 in OUTPUT INPUT
do
$fe -A $x2 -p $x1 -s 0/0 -d 0/0 -j DROP done
done
echo " ##############################################" echo " # Bloqueando SYN Flood #" echo " ##############################################" $fe -A FORWARD -p tcp --syn -m limit --limit 333 -j ACCEPT
echo " ##############################################" echo " # Bloqueando Programas ICQ,KAZaa,Imesh,etc #" echo " ##############################################" $fe -A FORWARD -m p2p --p2p all -j LOG --log-prefix "Usando P2P." $fe -A FORWARD -m p2p --p2p all -j DROP ;;
################################################################################
stop) clear echo " ##############################################" echo " # Parando filtragem de Pacotes #" echo " ##############################################" echo 0 > /proc/sys/net/ipv4/ip_forward
$fe -F INPUT $fe -F FORWARD $fe -F OUTPUT $fe -F -t nat $fe -P INPUT ACCEPT $fe -P OUTPUT ACCEPT
echo "." ;;
###############################################################################
restart)
clear echo " ##############################################" echo " # Reiniciando filtragem de Pacotes #" echo " ##############################################" $0 stop $0 start ;;
###############################################################################
status)
$fe -L -n ;;
save) clear echo " ######################################################" echo " #Salvando a configura�ao em arquivo /etc/iptables.bk #" echo " ######################################################" iptables-save > /etc/iptables.bk ;;
################################################################################
panico)
clear
echo " #####################################################"
echo " # Entrando em modo PANICO. Todas as portas FECHADAS #"
echo " #####################################################"
$fe -F
$fe -P INPUT DROP
$fe -P OUTPUT DROP $fe -P FORWARD DROP
;;
################################################################################
masq)
clear
echo " ########################################################"
echo " # Modo de Mascaramento ativado. Cuidado, NAO h� regras #"
echo " # de filtragem de pacotes ativadas. ( Sem Firewall ) #"
echo " ########################################################"
$fe -F
$fe -F -t nat
$fe -P INPUT ACCEPT
$fe -P OUTPUT ACCEPT $fe -P FORWARD ACCEPT
$fe -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE
;;
################################################################################
*) echo "Use: $0 {start|stop|restart|status|masq|panico}" exit 1 ;;
esac
exit 0
------------------------------------------------------------------------
-- GUS-BR - Grupo de Usu�rios Slackware - BR http://www.slackwarebrasil.org/ http://www.linuxmag.com.br/mailman/listinfo/slack-users

