[ERRO] IPTABLES [RESOLVIDO]

1. [ERRO] IPTABLES [RESOLVIDO]

Diego Goulart
djgoulart

(usa Debian)

Enviado em 23/06/2009 - 16:57h

Olá pessoal !!!
Estou implantando um script de firewall cuja função será basicamente proteger a rede contra possíveis ataques e bloquear o msn, o restante será restringido pelo squid ( que ja está pronto e funcionando), porém ainda nao está configurado como transparente.

A rede será basicamente assim :

MODEM 10.1.1.1
-
-
-
[eth0 Linux]
-
[eth1 Linux] 192.168.1.0/24
-
-
-
Rede Local Windows XP


Conforme está ali em cima peguei um script aqui do VOL .

O script dá o seguinte erro quando eu tento startá-lo.
=====================================================================
Inicializando Firewall
Localizando arquivo principal...
Definindo Interfaces de Rede
Ativando Roteamento Dinamico...

Aplicando Politicas Padrao...
Ativnado Regras de Segurança
iptables: Chain already exists

iptables: No chain/target/match by that name <- Aqui o que acho estranho !!!!

Liberando Trafego Local
Conectando Rede Interna

#####################################################################

Aqui o script que estou usando.


#!/bin/bash
echo "Script Desenvolvido em: 13/10/2003"
echo "Autor: Igor Garcia"
sleep 2
echo "Script Modificado em : 23/06/2009"
echo "Autor: Diego Goulart"
sleep 2
echo "Inicializando Firewall"

echo "Localizando arquivo principal..."
# Local para o executavel do IPTables
IPT=`which iptables`;
echo "Definindo Interfaces de Rede"
# 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"

echo "Ativando Roteamento Dinamico..."
fw_start()
{
#ativa o roteamento dinamico
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr

echo "Aplicando Politicas Padrao..."
# ================ 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

echo "Ativnado Regras de Segurança"
# 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

echo "Liberando Trafego Local"
# 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

echo "Conectando Rede Interna"
# 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
}
echo

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


  


2. Re: [ERRO] IPTABLES [RESOLVIDO]

Genesco Sousa
gesousa

(usa Ubuntu)

Enviado em 23/06/2009 - 17:24h

kra pela logica o erro se encontra em uma dessas regras

$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
$IPT -t mangle -A OUTPUT -o $IF_EXTERNA -p tcp -m multiport --dports 21,22,80,6667 -j TOS --set-tos 0x10

no caso seria testar uma a uma manualmente para ver qual delas apresenta o erro..




3. Re: [ERRO] IPTABLES [RESOLVIDO]

Julian Castaman
maninhx

(usa Slackware)

Enviado em 23/06/2009 - 17:27h

você parece ter regras repetidas.


4. Re: [ERRO] IPTABLES [RESOLVIDO]

Pedro Pereira
pogo

(usa Fedora)

Enviado em 23/06/2009 - 17:28h

Cara, isso indica que:

* ou você cometeu um erro de digitação em alguma das regras do seu script
* ou você se referiu a uma chain na tabela errada

Dê uma lida no http://focalinux.cipsga.org.br/guia/avancado/ch-fw-iptables.html que é um texto bem completo sobre o assunto.

[]'s

Pedro


5. Re: [ERRO] IPTABLES [RESOLVIDO]

Diego Goulart
djgoulart

(usa Debian)

Enviado em 23/06/2009 - 17:28h

Perfeito, vou testar todas elas e volto a postar aqui !
Vou verificar tbm tudo isso que vcs me disseram e volto aqui em seguida , desde já obrigado !!!


6. Re: [ERRO] IPTABLES [RESOLVIDO]

Julian Castaman
maninhx

(usa Slackware)

Enviado em 23/06/2009 - 17:32h

comenta essas linhas e inicia o firewall novamente e ve se vai continuar o erro.

$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


7. Re: [ERRO] IPTABLES [RESOLVIDO]

Diego Goulart
djgoulart

(usa Debian)

Enviado em 24/06/2009 - 09:24h

Comentei as linhas indicadas, mas o erro persiste.


8. Re: [ERRO] IPTABLES [RESOLVIDO]

Julian Castaman
maninhx

(usa Slackware)

Enviado em 24/06/2009 - 09:28h

adiciona essas linhas antes das # ================ POLITICAS PADRAO ===================

#Limpar Regras
iptables -F #Limpa todas a regras da tabela filter
iptables -X #Deleta todas as cadeias da tabela filter
iptables -Z #Zera o contador de tabela filter
iptables -t nat -F #Limpa todas as regras da tabela NAT
iptables -t nat -X #Deleta todas as cadeias da tabela NAT
iptables -t nat -Z #Zera os contadores da tabela NAT
iptables -t mangle -F
iptables -t mangle -X



9. Re: [ERRO] IPTABLES [RESOLVIDO]

Diego Goulart
djgoulart

(usa Debian)

Enviado em 24/06/2009 - 13:06h

Eu mudei de idéia e refiz o script do firewall, daí ele passou a rotear a conecção de internet normalmente, só que surgiu um outro problema.

As regras do Squid nao estao surtindo efeito, ele está em modo trasnparente. Segue abaixo como ficou o script do firewall e do squid.

O unico problema que está dando por enquanto é esse, o squid nao está bloqueando as paginas e o intuido dele é bloquear todas as paginas exeto as que eu especificar.

============================FIREWALL ================================

#!/bin/bash

iniciar(){

# Compartilha a conexão
modprobe ip_nat_ftp
modprobe iptable_nat
IPTABLES=/usr/sbin/iptables
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo "Ativando compartilhamento!"

# Proxy transparente
$IPTABLES -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128


#Entrada
$IPTABLES -A INPUT -p tcp -s 192.168.1.0/24 -d 74.86.157.115 --dport 110 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 192.168.1.0/24 -d 74.86.157.115 --dport 25 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT #Ssh
$IPTABLES -A INPUT -p tcp --dport 25 -j ACCEPT #SMTP
$IPTABLES -A INPUT -p tcp --dport 110 -j ACCEPT #POP
$IPTABLES -A INPUT -p tcp --dport 443 -j ACCEPT #HTTPS
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT #HTTP
$IPTABLES -A INPUT -p tcp --dport 5590 -j ACCEPT #HTTPj REDIRECT --to-port 3128

# OUTPUT (Pacotes que sai da rede)
#---------------------------------------------------------------------------
$IPTABLES -A OUTPUT -p tcp -s 192.168.1.0/24 -d 74.86.157.115 --dport 110 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -s 192.168.1.0/24 -d 74.86.157.115 --dport 25 -j ACCEPT

$IPTABLES -A OUTPUT -p tcp --dport 22 -j ACCEPT #ssh
$IPTABLES -A OUTPUT -p tcp --dport 25 -j ACCEPT #SMTP
$IPTABLES -A OUTPUT -p tcp --dport 110 -j ACCEPT #POP
$IPTABLES -A OUTPUT -p tcp --dport 80 -j ACCEPT #HTTP
$IPTABLES -A OUTPUT -p tcp --dport 443 -j ACCEPT #HTTPS

# FORWARD (REDE LOCAL)
#---------------------------------------------------------------------------
$IPTABLES -A FORWARD -p tcp --dport 22 -j ACCEPT # ssh
$IPTABLES -A FORWARD -p tcp --dport 3389 -j ACCEPT #Remote_Desktop_win-2003-Server
$IPTABLES -A FORWARD -p tcp --dport 25 -j ACCEPT # SMTP
$IPTABLES -A FORWARD -p tcp --sport 110 -j ACCEPT #POP
$IPTABLES -A FORWARD -p tcp --sport 25 -j ACCEPT #SMTP
$IPTABLES -A FORWARD -p tcp --dport 8333 -j ACCEPT #POP
$IPTABLES -A FORWARD -p tcp --dport 443 -j ACCEPT
# FORWARD (REDE LOCAL)
#---------------------------------------------------------------------------
$IPTABLES -A FORWARD -p tcp --dport 22 -j ACCEPT # ssh
$IPTABLES -A FORWARD -p tcp --dport 3389 -j ACCEPT #Remote_Desktop_win-2003-Server
$IPTABLES -A FORWARD -p tcp --dport 25 -j ACCEPT # SMTP
$IPTABLES -A FORWARD -p tcp --sport 110 -j ACCEPT #POP
$IPTABLES -A FORWARD -p tcp --sport 25 -j ACCEPT #SMTP
$IPTABLES -A FORWARD -p tcp --dport 8333 -j ACCEPT #POP
$IPTABLES -A FORWARD -p tcp --dport 443 -j ACCEPT
$IPTABLES -A FORWARD -s 192.168.1.0/24 -p tcp --dport 1863 -j REJECT
$IPTABLES -A FORWARD -s 192.168.1.0/24 -j ACCEPT
#---------------------------------------------------------------------------
echo "Firewall Ativado"
}


parar(){
iptables -F
iptables -t nat -F
echo "Regras de firewall e compartilhamento desativados"
}

case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
*) echo "Use os parâmetros start ou stop"
esac

===============================SQUID=================================
http_port 3128 transparent
visible_hostname starfire

cache_mem 128 MB
maximum_object_size_in_memory 1024 KB
maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /var/log/squid/access.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # SWAT
acl Safe_ports port 110 # pop
acl Safe_ports port 25 # SMTP
acl Safe_ports port 22 #SSH
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

acl permitidos url_regex -i "/etc/squid/permitidos"
http_access allow permitidos

acl redelocal src 192.168.1.0/24
http_access allow localhost
http_access allow redelocal

http_access deny all

=====================================================================

Onde será que esta o erro ?







10. [RESOLVIDO]

Diego Goulart
djgoulart

(usa Debian)

Enviado em 24/06/2009 - 13:44h

Pessoal tudo funcionando agora !!

O erro estava aqui: http_access allow redelocal

onde está "allow" fica "deny"

Muito obrigado a todos os que ajudaram !!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts