erro firewall bloquear tudo [RESOLVIDO]

1. erro firewall bloquear tudo [RESOLVIDO]

Rafael Massuquetto
RafaelMass

(usa Ubuntu)

Enviado em 14/05/2012 - 14:52h

Estou com um problema no meu script do iptables, tento bloquear tudo e liberar o necessário, mas não está liberando.
Estou usando o Debian Squeeze amd64, iptables 1.4.2 + layer7.
segue meu script basico.

#!/bin/sh
### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $all
# Required-Stop:
# Default-Start: 2
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO

iptables="/usr/local/sbin/iptables"
Interna=eth0
Externa=eth1


start() {
echo "Iniciando o FIREWALL ..."

# Carrega os modulos
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe xt_layer7
modprobe ipt_layer7

# DEFINE AS POLÍTICAS PADRÕES DO IPTABLES COMO DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# HABILITA O ROTEAMENTO NO KERNEL
echo "1" > /proc/sys/net/ipv4/ip_forward

# COMPARTILHA A INTERNET #
$iptables -t nat -A PREROUTING -p tcp -i $Interna --dport 80 -j REDIRECT --to 3128
$iptables -t nat -A POSTROUTING -o $Externa -j MASQUERADE

# Libera o acesso SSH de qualquer origem
$iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Libera o squid a partir da rede interna
$iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

# CONFIG MSN-PROXY
$iptables -t nat -A PREROUTING -i $Interna -p tcp --dport 1863 -j REDIRECT --to-port 1863

# layer7
$iptables -A FORWARD -m layer7 --l7proto 100bao -d any/0 -j DROP
$iptables -A FORWARD -m layer7 --l7proto 100bao -s any/0 -j DROP
#restante do layer7 removido para ficar mais limpo o post
}
stop() {
echo "Limpando o FIREWALL..."

### Exclui todas as regras
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -t filter -F

### Exclui cadeias customizadas
iptables -X
iptables -t nat -X

### Zera os contadores das cadeias
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
iptables -t filter -Z
}

case "$1" in
start) start
;;
stop) stop
;;
*) echo "Uso correto: firewall (start|stop)"
;;
esac


Se alguém puder me dar uma mão...



  


2. MELHOR RESPOSTA

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 17/05/2012 - 13:28h

Tente adicionar as regras:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


Elas vão permitir conexões iniciadas pela sua rede

3. Re: erro firewall bloquear tudo [RESOLVIDO]

wesley alves pereira
wesleya2

(usa Debian)

Enviado em 14/05/2012 - 15:19h

Posso estar enganado, mas a ordem não esta errada?

ja tento tirar aqueles drop de cima e fazer tipo?

input ....

input drop

forward ...

forward drop

...

.
.
.



4. Saida

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 14/05/2012 - 15:31h

Vc precisa liberar o output e o forward para as portas 80,443,53.

Como esta trabalhando com a politica drop sera preciso liberar cada porta que for usar a do DNS (53)é obrigatória.


5. Re: erro firewall bloquear tudo [RESOLVIDO]

Rafael Massuquetto
RafaelMass

(usa Ubuntu)

Enviado em 16/05/2012 - 09:03h

Desculpe a demora para responder.
testei de 2 formas desbloquear as portas

$iptables -A INPUT -p tcp -m multiport --dport 22,53,80,443,3128,8080 -j ACCEPT
$iptables -A FORWARD -p tcp -m multiport --dport 22,53,80,443,3128,8080 -j ACCEPT
$iptables -A OUTPUT -p tcp -m multiport --dport 22,53,80,443,3128,8080 -j ACCEPT

e assim

$iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
$iptables -A FORWARD -p tcp --dport 22 -j ACCEPT


Mas não funcionou. Não sei se faltou alguma porta para desbloquear, ou o comando seria outro.
O script ficou assim.

#!/bin/sh
### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $all
# Required-Stop:
# Default-Start: 2
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO

iptables="/usr/local/sbin/iptables"
Interna=eth0
Externa=eth1


start() {
echo "Iniciando o FIREWALL ..."

# Carrega os modulos
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe xt_layer7
modprobe ipt_layer7

# DEFINE AS POLÍTICAS PADRÕES DO IPTABLES COMO DROP
$iptables -P INPUT DROP
$iptables -P OUTPUT DROP
$iptables -P FORWARD DROP

# HABILITA O ROTEAMENTO NO KERNEL
echo "1" > /proc/sys/net/ipv4/ip_forward

# COMPARTILHA A INTERNET #
#$iptables -t nat -A POSTROUTING -s $Interna -o $Externa -j MASQUERADE

$iptables -t nat -A PREROUTING -p tcp -i $Interna --dport 80 -j REDIRECT --to 3128
$iptables -t nat -A POSTROUTING -o $Externa -j MASQUERADE


$iptables -A INPUT -p tcp -m multiport --dport 22,53,80,443,3128,8080 -j ACCEPT
$iptables -A FORWARD -p tcp -m multiport --dport 22,53,80,443,3128,8080 -j ACCEPT
$iptables -A OUTPUT -p tcp -m multiport --dport 22,53,80,443,3128,8080 -j ACCEPT


# Libera o acesso SSH de qualquer origem
$iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
$iptables -A FORWARD -p tcp --dport 22 -j ACCEPT


# Libera o squid a partir da rede interna
$iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

# CONFIG MSN-PROXY
$iptables -t nat -A PREROUTING -i $Interna -p tcp --dport 1863 -j REDIRECT --to-port 1863

# layer7
$iptables -A FORWARD -m layer7 --l7proto 100bao -d any/0 -j DROP
$iptables -A FORWARD -m layer7 --l7proto 100bao -s any/0 -j DROP
#restante do l7...

}
stop() {
echo "Finalizando o FIREWALL..."

}

case "$1" in
start) start
;;
stop) stop
;;
*) echo "Uso correto: msn-proxy (start|stop)"
;;
esac




6. Regras

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 16/05/2012 - 10:28h

Aparententemente esta tudo ok.
Poste a saida de "iptables -L"


7. Limpar regras

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 16/05/2012 - 10:32h

andrecanhadas escreveu:

Aparententemente esta tudo ok.
Poste a saida de "iptables -L"


Esta faltando tambem limpar as regras:

/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F
/sbin/iptables -t filter -F
/sbin/iptables -X
/sbin/iptables -Z



8. Re: erro firewall bloquear tudo [RESOLVIDO]

Rafael Massuquetto
RafaelMass

(usa Ubuntu)

Enviado em 16/05/2012 - 15:18h

Segue o scrpit alterado

#!/bin/sh
### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $all
# Required-Stop:
# Default-Start: 2
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO

iptables="/usr/local/sbin/iptables"
Interna=eth0
Externa=eth1

start() {
echo "Iniciando o FIREWALL ..."

# Carrega os modulos
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe xt_layer7
modprobe ipt_layer7

$iptables -F
$iptables -t nat -F
$iptables -t mangle -F
$iptables -t filter -F
$iptables -X
$iptables -Z

# DEFINE AS POLÍTICAS PADRÕES DO IPTABLES COMO DROP
$iptables -P INPUT DROP
$iptables -P OUTPUT DROP
$iptables -P FORWARD DROP

# HABILITA O ROTEAMENTO NO KERNEL
echo "1" > /proc/sys/net/ipv4/ip_forward

# COMPARTILHA A INTERNET #
#$iptables -t nat -A POSTROUTING -s $Interna -o $Externa -j MASQUERADE

$iptables -t nat -A PREROUTING -p tcp -i $Interna --dport 80 -j REDIRECT --to 3128
$iptables -t nat -A POSTROUTING -o $Externa -j MASQUERADE


$iptables -A INPUT -p tcp -m multiport --dport 22,53,80,443,3128,8080 -j ACCEPT
$iptables -A FORWARD -p tcp -m multiport --dport 22,53,80,443,3128,8080 -j ACCEPT
$iptables -A OUTPUT -p tcp -m multiport --dport 22,53,80,443,3128,8080 -j ACCEPT


# Libera o acesso SSH de qualquer origem
$iptables -A FORWARD -p tcp --dport 2231 -j ACCEPT
$iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
$iptables -A FORWARD -p tcp --dport 22 -j ACCEPT

$iptables -A INPUT -p tcp --dport 53 -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
$iptables -A FORWARD -p tcp --dport 53 -j ACCEPT

$iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
$iptables -A FORWARD -p tcp --dport 80 -j ACCEPT

# Libera o squid a partir da rede interna
$iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

# CONFIG MSN-PROXY
$iptables -t nat -A PREROUTING -i $Interna -p tcp --dport 1863 -j REDIRECT --to-port 1863

# layer7
$iptables -A FORWARD -m layer7 --l7proto 100bao -d any/0 -j DROP
$iptables -A FORWARD -m layer7 --l7proto 100bao -s any/0 -j DROP
#....

}
stop() {
echo "Finalizando o FIREWALL..."

# Exclui todas as regras
$iptables -F
$iptables -t nat -F
$iptables -t mangle -F
$iptables -t filter -F

# Exclui cadeias customizadas
$iptables -X
$iptables -t nat -X
$iptables -t mangle -X
$iptables -t filter -X

# Zera os contadores das cadeias
$iptables -Z
$iptables -t nat -Z
$iptables -t mangle -Z
$iptables -t filter -Z

# Define a política padrão do firewall
$iptables -P INPUT ACCEPT
$iptables -P OUTPUT ACCEPT
$iptables -P FORWARD ACCEPT

}

case "$1" in
start) start
;;
stop) stop
;;
*) echo "Uso correto: msn-proxy (start|stop)"
;;
esac


para testar estou reiniciando o micro, para hevitar "contaminações" no script.
segue o resultado do iptables -L

Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere multiport dports ssh,domain,www,https,3128,http-alt,2231
ACCEPT tcp -- anywhere anywhere tcp dpt:2231
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT tcp -- anywhere anywhere tcp dpt:3128

Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere multiport dports ssh,domain,www,https,3128,http-alt,2231
ACCEPT tcp -- anywhere anywhere tcp dpt:2231
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:www
DROP all -- anywhere anywhere LAYER7 l7proto 100bao
DROP all -- anywhere anywhere LAYER7 l7proto 100bao

Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere multiport dports ssh,domain,www,https,3128,http-alt,2231
ACCEPT tcp -- anywhere anywhere tcp dpt:2231
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:www



quando comento as 3 regras de drop, fica ok.......


9. Padrão

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 16/05/2012 - 15:50h

Tem certeza que este caminho esta certo?:
iptables "/usr/local/sbin/iptables"
O padrão é /sbin/iptables.

Veja com locate iptables


10. Kernel

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 16/05/2012 - 18:03h

Você compilou o kernel com suporte ao layer7?


11. Kernel

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 16/05/2012 - 18:05h

andrecanhadas escreveu:

Você compilou o kernel com suporte ao layer7?


Da uma lida vê se faltou algo:
http://redeunderground.blogspot.com.br/2011/12/adicionando-suporte-ao-layer7-no-debian.html


12. Re: erro firewall bloquear tudo [RESOLVIDO]

Rafael Massuquetto
RafaelMass

(usa Ubuntu)

Enviado em 17/05/2012 - 09:36h

Sim recompilei o kernel, mas tive que baixar os fontes do site do iptables pois não está baixando os fontes via apt-get do 5.0.x.
Baixei o iptables 1.4.2 compilei e instalei segundo um tutorial.


wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.2.tar.bz2
tar jxvf iptables-1.4.2.tar.bz2
cp /usr/src/netfilter-layer7-v2.22/for_older_iptables/iptables-1.4.1.1-for-kernel-2.6.20forward/* /usr/src/iptables-1.4.2/extensions/
cd iptables-1.4.2/
./configure --with-ksource=/usr/src/linux
make
make install


se eu usar o /sbin/iptables não executa o layer7, tentei usar este sem o layer7 mas o resultado é o mesmo.
as regras de DROP é que estão causando o problema, não sei se tenho que mudar aposição delas no script, ou está faltando faldo (abrir mais uma porta,etc).




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts