Posta a saída para
iptables -nL FORWARD
e
iptables -t nat -nL
Postado originalmente por Anonymous
Posta a saída para
iptables -nL FORWARD
e
iptables -t nat -nL
Postado originalmente por Anonymous
Ops... já vi o erro no script anterior... muda o state do FORWARD
iptables -A FORWARD -o $IF_INTERNA -m state --state ESTABLISHED,RELATED -j ACCEPT
Isto deve resolver
Postado originalmente por Anonymous
realmente funcionou...
Mas CRASH2k, porque esse script não funcionou:
Código :#!/bin/bash IF_EXTERNA="eth0" IF_INTERNA="eth1" REDE_INTERNA="172.0.0.0/24" echo "1"> /proc/sys/net/ipv4/ip_forward iptables -F iptables -Z iptables -X iptables -F -t nat iptables -X -t nat iptables -F -t mangle iptables -X -t mangle iptables -P FORWARD ACCEPT iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i $IF_INTERNA -j ACCEPT iptables -A FORWARD -i $IF_INTERNA -p udp --dport 53 -j ACCEPT iptables -A FORWARD -i $IF_INTERNA -p tcp --dport 80 -j ACCEPT iptables -t nat -A POSTROUTING -s $REDE_INTERNA -j MASQUERADE
mesmo parecendo nao ter nada a ver, tenta mudar os ips de rede da sua maquina Linux pra uma das faixas.. esse sua faixa 172.0.0.0/24 nunca vi uso dela em redes locais pequenas...:
use uma dessas:
10.0.0.0/8
172.16.0.0/16
192.168.0.0/24
use o script abaixo pra ver se funciona
# variavies #
IPT='/sbin/iptables'
REDE='192.168.0.0/24'
# Policiamento #
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
# abrir portas #
$IPT -A INPUT -s $REDE -p tcp --dport 22 -j ACCEPT # exemplo se vc usa ssh
$IPT -A FORWARD -s $REDE -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -s $REDE -p udp --dport 53 -j ACCEPT
# regras para estado das conexoes #
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# fazendo nat #
$IPT -t nat -A POSTROUTING -s $REDE -j MASQUERADE
Para ficar mais legivel
Assim funcionou
Código :#!/bin/bash IF_EXTERNA="eth0" IF_INTERNA="eth1" REDE_INTERNA="172.0.0.0/24" echo "1"> /proc/sys/net/ipv4/ip_forward iptables -F iptables -X iptables -F -t nat iptables -X -t nat iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i $IF_INTERNA -j ACCEPT #iptables -A FORWARD -i $IF_EXTERNA -m state --state NEW,INVALID -j DROP iptables -A FORWARD -o $IF_INTERNA -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i $IF_INTERNA -p udp --dport 53 -j ACCEPT iptables -A FORWARD -i $IF_INTERNA -m multiport -p tcp --dport 80,443,8080,119,110,25 -j ACCEPT iptables -t nat -A POSTROUTING -s $REDE_INTERNA -j MASQUERADE
Mas assim não funciona
Código :#!/bin/bash IF_EXTERNA="eth0" IF_INTERNA="eth1" REDE_INTERNA="172.0.0.0/24" echo "1"> /proc/sys/net/ipv4/ip_forward iptables -F iptables -Z iptables -X iptables -F -t nat iptables -X -t nat iptables -F -t mangle iptables -X -t mangle iptables -P FORWARD ACCEPT iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i $IF_INTERNA -j ACCEPT iptables -A FORWARD -i $IF_INTERNA -p udp --dport 53 -j ACCEPT iptables -A FORWARD -i $IF_INTERNA -p tcp --dport 80 -j ACCEPT iptables -t nat -A POSTROUTING -s $REDE_INTERNA -j MASQUERADE
Alguém sabe o motivo ?
Somente colocando esse -m state ... etc... vai funcionar ?
Obrigado
É que o "state" no FORWARD garante o retorno dos pacotes a sua rede local (desde que a conexão já esteja estabelecida ou reincidente). Da forma que estava vc só permitia no sentido "rede local -> internet", mas não tinha nada tratando o retorno.
Postado originalmente por Anonymous
então não tem como fazer isso, sem usar o -m state ?
O negócio é que vc precisa tratar o retorno do pacote, e se vc usar um controle baseado em estados de conexão melhor ainda.
Mas, poderia ter feito o retorno assim:
iptables -A FORWARD -o $IF_INTERNA -m multiport -p tcp --sport 80,443,8080,110,25,119 -j ACCEPT
iptables -A FORWARD -o $IF_INTERNA -p udp --sport 53 -j ACCEPT
O negócio é o retorno. Só q trabalhar com um firewall stateful é mais seguro.
Postado originalmente por Anonymous
Entendi, quando eu troquei para sport, o meu primeiro script funcionou
Vou procurar algo bom para ler sobre o iptables, excplicando como funciona o sport, e esse -m.
Mas fica aqui, o meu Muito Obrigado a todos que me ajudaram
:clap: :clap:
ah, para complementar a porta 53 nem liberei e funcionou...
Mas fechei a 80 para ver o que iria acontecer, e bloqueou perfeitamente.
valeu
O Negocio é verificar o estado da conexao mesmo porque com o meu script fiz uns testes e liberou tudo.
Mas com estado está funcionando perfeitamente :clap: