Iptables e o redirecionamento de portas (Resolvido)

Iniciado por Jarod, 19 de Agosto de 2014, 14:02

tópico anterior - próximo tópico

Jarod

Fala pessoal,

Não sou especialista em iptables e estou precisando de uma ajuda com meu script. Tenho esse firewall aqui, fiz funcionar squid, acesso o firewall de todos ips externos, mas não consigo direcionar portas para outras maquinas da rede,  por exemplo determinado IP externo vai para determinado servidor...  exemplo a porta 3389 de TS.

veja como fiz:


# Servicos WAN_to_LAN -- TS
$IPT -A INPUT -i $WAN -p tcp -m tcp --dport 3389 -j ACCEPT
$IPT -A FORWARD -i $WAN -p tcp -m tcp --dport 3389 -j ACCEPT
$IPT -t nat -A PREROUTING -i $WAN -d $IP1 -p tcp -m tcp --dport 3389 -j DNAT --to 192.168.1.2



me parece certo,  vejam resultado:

root@firewall:/etc/squid# iptables -t nat -L -v -n
Chain PREROUTING (policy ACCEPT 5823 packets, 512K bytes)
pkts bytes target     prot opt in     out     source               destination
   0     0 REDIRECT   tcp  --  eth1   *       192.168.1.0/24       0.0.0.0/0            tcp dpt:80 redir ports 3128
   1    52 DNAT       tcp  --  eth0   *       0.0.0.0/0            200.200.200.186      tcp dpt:3389 to:192.168.1.2



meu script que consegui fazer esse:


corumbams


Para suporte externo de empresas terceiras aqui , utilizo em meu servidor o redir

apt-get install redir

# Redirecionando Terminal Server
redir -laddr=0.0.0.0 --lport 3389 --caddr=192.168.1.4 --cport 3389 &

Quando a empresa terceira termina de utilizar o suporte, mato apenas o processo ! assim não preciso ficar mexendo no FIREWAll

Sendo que utilizo para FTP , VNC e etc !

# redirecionando FTP
redir -laddr=0.0.0.0 --lport 21 --caddr=192.168.1.4 --cport 21 &

# redirecionando VNC
redir -laddr=0.0.0.0 --lport 5800 --caddr=192.168.1.4 --cport 5800 &
redir -laddr=0.0.0.0 --lport 5900 --caddr=192.168.1.4 --cport 5900 &

Sendo assim , apenas fico matando processo e não mexo no IPTABLES

Citação de: Jarod online 19 de Agosto de 2014, 14:02
Fala pessoal,

Não sou especialista em iptables e estou precisando de uma ajuda com meu script. Tenho esse firewall aqui, fiz funcionar squid, acesso o firewall de todos ips externos, mas não consigo direcionar portas para outras maquinas da rede,  por exemplo determinado IP externo vai para determinado servidor...  exemplo a porta 3389 de TS.

veja como fiz:


# Servicos WAN_to_LAN -- TS
$IPT -A INPUT -i $WAN -p tcp -m tcp --dport 3389 -j ACCEPT
$IPT -A FORWARD -i $WAN -p tcp -m tcp --dport 3389 -j ACCEPT
$IPT -t nat -A PREROUTING -i $WAN -d $IP1 -p tcp -m tcp --dport 3389 -j DNAT --to 192.168.1.2



me parece certo,  vejam resultado:

root@firewall:/etc/squid# iptables -t nat -L -v -n
Chain PREROUTING (policy ACCEPT 5823 packets, 512K bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 REDIRECT   tcp  --  eth1   *       192.168.1.0/24       0.0.0.0/0            tcp dpt:80 redir ports 3128
    1    52 DNAT       tcp  --  eth0   *       0.0.0.0/0            200.200.200.186      tcp dpt:3389 to:192.168.1.2



meu script que consegui fazer esse:



#!/bin/bash
modprobe iptable_nat
modprobe iptable_filter
modprobe ipt_LOG
modprobe ipt_state
modprobe ipt_limit
modprobe ipt_MASQUERADE
modprobe ip_tables
modprobe ipt_REJECT

#Habilita Roteamento
echo "1" > /proc/sys/net/ipv4/ip_forward

#Bloqueia Scan
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

IPT=/sbin/iptables
REDE=192.168.1.0/24
LAN=eth1
WAN=eth0

IP1=200.200.200.186
IP2=200.200.200.187
IP3=200.200.200.188
IP4=200.200.200.189
IP5=200.200.200.190

# Seta IPs nas interfaces virtuais
ifconfig eth0:0 200.200.200.187 netmask 255.255.255.0
ifconfig eth0:1 200.200.200.188 netmask 255.255.255.0
ifconfig eth0:2 200.200.200.189 netmask 255.255.255.0
ifconfig eth0:3 200.200.200.190 netmask 255.255.255.0

#Relacao de portar para abrir, saida
PT_TCP=/etc/squid/PT_TCP
PT_UDP=/etc/squid/PT_UDP

# Limpando Regras existentes
$IPT -F
$IPT -Z
$IPT -X

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

echo "Regras Zeradas..."

# Definindo Politicas Padrao
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT

# Habilitanto NAT
$IPT -t nat -A POSTROUTING -o $WAN -j MASQUERADE

echo "NAT Habilitado..."

# Liberando Input loopback
IPT -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT

# Ativa Proxy Transparente
$IPT -t nat -A PREROUTING -i $LAN -s $REDE -p tcp --dport 80 -j REDIRECT --to-port 3128

echo "Proxy Ativado..."

# Liberando Conexoes Estabelecidas pela LAN
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -m state --state RELATED,ESTABLISHED    -j ACCEPT

# Libera Resposta a ping WAN
$IPT -A INPUT -p icmp -i $WAN           -j ACCEPT

######### Libera Acessos LAN_to_WAN #########

$IPT -A FORWARD -i $LAN -o $WAN -p icmp                 -j ACCEPT

for i in `cat $PT_TCP`; do
$IPT -A FORWARD -i $LAN -o $WAN -p tcp --dport $i       -j ACCEPT
done

for i in `cat $PT_UDP`; do
$IPT -A FORWARD -i $LAN -o $WAN -p udp --dport $i       -j ACCEPT
done

# Acessos LAN_to_Server
$IPT -A INPUT -p icmp -i $LAN -s $REDE                  -j ACCEPT
$IPT -A INPUT -p tcp --dport 53 -i $LAN -s $REDE        -j ACCEPT
$IPT -A INPUT -p udp --dport 53 -i $LAN -s $REDE        -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -i $LAN -s $REDE        -j ACCEPT
$IPT -A INPUT -p tcp --dport 3128 -i $LAN -s $REDE      -j ACCEPT
$IPT -A INPUT -p tcp --dport 2222 -i $LAN -s $REDE      -j ACCEPT


# Servicos WAN_to_Server
$IPT -A INPUT -p tcp --dport 2222 -i $WAN              -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -i $WAN                -j ACCEPT
$IPT -A INPUT -p tcp --dport 3128 -i $WAN              -j ACCEPT


# Servicos WAN_to_LAN -- TS
$IPT -A INPUT -i $WAN -p tcp -m tcp --dport 3389 -j ACCEPT
$IPT -A FORWARD -i $WAN -p tcp -m tcp --dport 3389 -j ACCEPT
$IPT -t nat -A PREROUTING -i $WAN -d $IP1 -p tcp -m tcp --dport 3389 -j DNAT --to 192.168.1.2

#$IPT -t nat -A PREROUTING -p tcp --dport 3389 -i $WAN -d $IP2 -j DNAT --to 192.168.1.3
#$IPT -t nat -A PREROUTING -p tcp --dport 3389 -i $WAN -d $IP3 -j DNAT --to 192.168.1.4
#$IPT -t nat -A PREROUTING -p tcp --dport 3389 -i $WAN -d $IP4 -j DNAT --to 192.168.1.5



# Desabilitando Filtro martian source
for eee in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 0 > $eee
done
echo "Fim do Firewall."




zekkerj

Olá Jarod,

Vc por acaso está testando esse redirecionamento a partir da rede interna? Se estiver, é preciso mais alguns comandos para que o redirecionamento funcione a contento.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Jarod

Citação de: zekkerj online 19 de Agosto de 2014, 14:36
Olá Jarod,

Vc por acaso está testando esse redirecionamento a partir da rede interna? Se estiver, é preciso mais alguns comandos para que o redirecionamento funcione a contento.

externamente, através de ADSL... acredito que seja algo errado no iptables, alguma regra que falte ou fora de lugar... estou testando...

peguei esse script de outro firewall que funciona parecido, estou alterando para meu,  só que esse script  é meio antigo... então pode ser algo funcione diferente no iptables 1.4.12 que é que estou usando...

Jarod

#4
Parece ser simples, mas não da algum conflito com iptables? vc usa no mesmo firewall?

posso fazer scripts com ele também?  e carregar no iniciar ?


vou procurar um manual...



Citação de: corumbams online 19 de Agosto de 2014, 14:33

Para suporte externo de empresas terceiras aqui , utilizo em meu servidor o redir

apt-get install redir

# Redirecionando Terminal Server
redir -laddr=0.0.0.0 --lport 3389 --caddr=192.168.1.4 --cport 3389 &

Quando a empresa terceira termina de utilizar o suporte, mato apenas o processo ! assim não preciso ficar mexendo no FIREWAll

Sendo que utilizo para FTP , VNC e etc !

# redirecionando FTP
redir -laddr=0.0.0.0 --lport 21 --caddr=192.168.1.4 --cport 21 &

# redirecionando VNC
redir -laddr=0.0.0.0 --lport 5800 --caddr=192.168.1.4 --cport 5800 &
redir -laddr=0.0.0.0 --lport 5900 --caddr=192.168.1.4 --cport 5900 &

Sendo assim , apenas fico matando processo e não mexo no IPTABLES


corumbams

Nenhum conflito ! utilizo á anos esse redir , assim não fico mexendo em meu script.

Pode instalar e utilizar.

Tks

Jarod

#6
Citação de: corumbams online 19 de Agosto de 2014, 14:53
Nenhum conflito ! utilizo á anos esse redir , assim não fico mexendo em meu script.

Pode instalar e utilizar.

Tks

tentei usar o redir, também não deu,

redir -laddr=0.0.0.0  --lport 3389 --caddr=192.168.1.2 --cport 3389 &



para limpar as regras só matando processo?

corumbams


Isso mesmo, matar o processo ! mais voce esta intermanete ? tem que ser de fora para dentro !

Jarod

Citação de: corumbams online 19 de Agosto de 2014, 15:26

Isso mesmo, matar o processo ! mais voce esta intermanete ? tem que ser de fora para dentro !

não estou internamente... uso outra conexão ADSL...  pode ser que pelo iptables a porta esteja fechada ou com filtros... o redir vai sobrescrever essas regras?



nmap -v 200.200.200.186 -p 3389

Starting Nmap 6.00 ( http://nmap.org ) at 2014-08-19 15:31 BRT
Initiating SYN Stealth Scan at 15:31
Scanning firewall (200.200.200.186) [1 port]
Completed SYN Stealth Scan at 15:31, 2.01s elapsed (1 total ports)
Nmap scan report for firewall (200.200.200.186)
Host is up.
PORT     STATE    SERVICE
3389/tcp filtered ms-wbt-server



corumbams

Caso exista alguma regra no iptables utlizando 3389 , remova ! e execute novamente seu firewall para limpar e depois rodar novamente

redir -laddr=0.0.0.0  --lport 3389 --caddr=192.168.1.2 --cport 3389 &

Porque nao ira sobrescrever seu iptables a regra do redir

No Aguardo ,

Jarod

Citação de: corumbams online 19 de Agosto de 2014, 15:45
Caso exista alguma regra no iptables utlizando 3389 , remova ! e execute novamente seu firewall para limpar e depois rodar novamente

redir -laddr=0.0.0.0  --lport 3389 --caddr=192.168.1.2 --cport 3389 &

Porque nao ira sobrescrever seu iptables a regra do redir

No Aguardo ,

vou tentar... outra coisa,  pelo redir eu consigo definir externo para tal ip interno?  tenho algum ips externos que quero direcionar um para cada servidor o TS, porta 3389...

zekkerj

Perguntas...

1. Vc recebe ip público na interface da internet?

2. Vc está em sua empresa, ou está usando algum hosting?

3. Quando vc usa o "iptables -t nat -L -v -n", vc vê os contadores da sua regra avançando?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Jarod

#12
Citação de: zekkerj online 19 de Agosto de 2014, 17:23
Perguntas...

1. Vc recebe ip público na interface da internet?

2. Vc está em sua empresa, ou está usando algum hosting?

3. Quando vc usa o "iptables -t nat -L -v -n", vc vê os contadores da sua regra avançando?



acho que descobri problema... amanha posto a solução do meu problema...

Jarod


O problema era que eu não tinha alterado o Gateway dos servidores para Firewall novo, ainda estava para firewall antigo, ai não funcionava o redirecionamento de portas...  :-[


valeu pessoal...

corumbams

Removeu esta regra ?

$IPT -t nat -A PREROUTING -i $WAN -d $IP1 -p tcp -m tcp --dport 3389 -j DNAT --to 192.168.1.2

Abs