Erro de redirecionamento de portas

Iniciado por luis.sch, 22 de Novembro de 2012, 12:29

tópico anterior - próximo tópico

luis.sch

Boa tarde amigos

Tenho o seguinte script do iptables, que tem funcionado normalmente para navegação.
http://pastebin.com/BBS1HT7G
Porém, tenhos os seguintes redirecionamentos de portas, para outros servidores, que não estão funcionando como deveriam.


        #### Trafego para o Apache ####
        echo -n "Settings to Apache HTTPD..."
        #$IPT -A INPUT -i $IFEXT -p tcp --dport 80 -j ACCEPT
        #$IPT -A INPUT -i $IFEXT -p udp --dport 80 -j ACCEPT
        #$IPT -A INPUT -i $IFEXT -p tcp --dport 443 -j ACCEPT
        #$IPT -A INPUT -i $IFEXT -p udp --dport 443 -j ACCEPT
        $IPT -t nat -A PREROUTING -i $IFEXT -d $IPEXT -p tcp -m tcp --dport 80 -j DNAT --to $IPSMT:80
        $IPT -t nat -A POSTROUTING -d $IPSMT -p tcp --dport 80 -j SNAT --to $IPEXT

        $IPT -t nat -A PREROUTING -i $IFEXT -d $IPEXT -p udp -m udp --dport 80 -j DNAT --to $IPSMT:80
        $IPT -t nat -A POSTROUTING -d $IPSMT -p udp --dport 80 -j SNAT --to $IPEXT

        $IPT -t nat -A PREROUTING -i $IFEXT -d $IPEXT -p tcp -m tcp --dport 443 -j DNAT --to $IPSMT:443
        $IPT -t nat -A POSTROUTING -d $IPSMT -p tcp --dport 443 -j SNAT --to $IPEXT
       
        $IPT -t nat -A PREROUTING -i $IFEXT -d $IPEXT -p udp -m udp --dport 443 -j DNAT --to $IPSMT:443
        $IPT -t nat -A POSTROUTING -d $IPSMT -p udp --dport 443 -j SNAT --to $IPEXT
        echo "Ok"

        #### Trafego para e-mail ###
        echo -n "Redirecting e-mail ports..."
        $IPT -t nat -A PREROUTING -i $IFEXT -d $IPEXT -p tcp --dport 25 -j DNAT --to $IPSMT:25
        $IPT -t nat -A POSTROUTING -d $IPSMT -p tcp --dport 25 -j SNAT --to $IPEXT
        echo "Ok"


Alguém sabe me dizer o que pode ser?

Arthur Bernardes

Não sei se posso te ajudar, mas quando você redireciona uma porta para um determinado host, você tem que definir a porta desejada e o endereço IP do Host que vai receber o redirecionamento..!

luis.sch

Sim, é isso que faço aqui

$IPT -t nat -A PREROUTING -i $IFEXT -d $IPEXT -p tcp --dport 25 -j DNAT --to $IPSMT:25

O ip está definido no script lá no topo.

zekkerj

Citar#$IPT -A INPUT -i $IFEXT -p tcp --dport 80 -j ACCEPT
#$IPT -A INPUT -i $IFEXT -p udp --dport 80 -j ACCEPT
#$IPT -A INPUT -i $IFEXT -p tcp --dport 443 -j ACCEPT
#$IPT -A INPUT -i $IFEXT -p udp --dport 443 -j ACCEPT
Pq vc desativou esse trecho?
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

zekkerj

Outra coisa, observo que vc está direcionando do seu servidor de firewall, e que está usando DNAT/SNAT. Significa que provavelmente tem um IP fixo nessa máquina. Mas é válido (público)? Ou vc tem um modem/roteador antes dessa máquina, recebendo sua conexão? Pq se tiver, vc tem primeiro que redirecionar essas mesmas portas para seu firewall, pra depois redirecionar do firewall pra rede interna.
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

luis.sch

Tenho a eth1 ligada no modem da internet. Ela tem um ip válido.

Certo, fiz dessa forma abaixo, e continua não funcionando.


#### Trafego para o Apache ####
echo -n "Settings to Apache HTTPD..."
$IPT -A INPUT -i $IFEXT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i $IFEXT -p udp --dport 80 -j ACCEPT
$IPT -A INPUT -i $IFEXT -p tcp --dport 443 -j ACCEPT
$IPT -A INPUT -i $IFEXT -p udp --dport 443 -j ACCEPT
$IPT -t nat -A PREROUTING  -d $IPEXT -p tcp -m tcp --dport 80 -j DNAT --to $IPSMT:80
$IPT -t nat -A PREROUTING  -d $IPEXT -p tcp -m tcp --dport 443 -j DNAT --to $IPSMT:443
$IPT -A FORWARD -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -p tcp --dport 443 -j ACCEPT
$IPT -t nat -A POSTROUTING -d $IPSMT -p tcp --dport 80 -j SNAT --to $IPEXT
$IPT -t nat -A POSTROUTING -d $IPSMT -p tcp --dport 443 -j SNAT --to $IPEXT
echo "Ok"

#### Trafego para e-mail ###
echo -n "Redirecting e-mail ports..."
$IPT -A INPUT -i $IFEXT -p tcp --dport 25 -j ACCEPT
$IPT -t nat -A PREROUTING  -d $IPEXT -p tcp --dport 25 -j DNAT --to $IPSMT:25
$IPT -A FORWARD -p tcp --dport 25 -d $IPSMT -j ACCEPT
$IPT -t nat -A POSTROUTING -d $IPSMT -p tcp --dport 25 -j SNAT --to $IPEXT
echo "Ok"


Estou testando através do telnet.

zekkerj

CitarEstou testando através do telnet.
Como, exatamente?
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

luis.sch


zekkerj

Qual resposta vc obtem? Timeout ou conexão recusada?

Está fazendo no próprio servidor de compartilhamento?
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

luis.sch


zekkerj

Tente testar a partir de outra máquina, não do próprio servidor.
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

luis.sch

Efetuei o teste de outra máquina e o erro foi de timeout.

zekkerj

Os comandos abaixo mostram a estatística dos pacotes que cada regra redirecionou. Execute-o e cole o resultado aqui (não esqueça de proteger os IPs de sua rede), pra gente analisar.

sudo iptables -L -v -n
sudo iptables -t nat -L -v -n
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

luis.sch

sudo iptables -L -v -n

Chain INPUT (policy DROP 4 packets, 176 bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  *      *       127.0.0.1            127.0.0.1
    0     0 ACCEPT     tcp  --  *      *       [ip]                 0.0.0.0/0            tcp dpt:53
1134 85077 ACCEPT     udp  --  *      *       [ip]                 0.0.0.0/0            udp dpt:53
    0     0 ACCEPT     tcp  --  *      *       [ip]                 0.0.0.0/0            tcp dpt:23
    0     0 ACCEPT     udp  --  *      *       [ip]                 0.0.0.0/0            udp dpt:23
    0     0 LOG        all  --  eth1   *       10.0.0.0/8           0.0.0.0/0            limit: avg 3/sec burst 5 LOG flags 0 level 6 prefix "FIREWALL: Spoofing - 10. --"
    0     0 DROP       all  --  eth1   *       10.0.0.0/8           0.0.0.0/0
    0     0 LOG        all  --  eth1   *       172.16.0.0/16        0.0.0.0/0            limit: avg 3/sec burst 5 LOG flags 0 level 6 prefix "FIREWALL: Spoofing - 172.16. "
    0     0 DROP       all  --  eth1   *       172.16.0.0/16        0.0.0.0/0
    0     0 LOG        all  --  eth1   *       192.168.0.0/16       0.0.0.0/0            limit: avg 3/sec burst 5 LOG flags 0 level 6 prefix "FIREWALL: Spoofing - 192.168."
    0     0 DROP       all  --  eth1   *       192.168.0.0/16       0.0.0.0/0
   75  4300 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     udp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            udp dpt:80
    0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     udp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            udp dpt:443
    0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:25
    0     0 ACCEPT     tcp  --  *      *       [ip]                 0.0.0.0/0            tcp dpt:8787
    0     0 ACCEPT     udp  --  *      *       [ip]                 0.0.0.0/0            udp dpt:8787
17867 2142K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW,RELATED,ESTABLISHED
    4   176 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 3 LOG flags 0 level 6 prefix "Firewall: INPUT --"

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  *      *       127.0.0.1            127.0.0.1
    0     0 ACCEPT     tcp  --  *      *       [ip]                 0.0.0.0/0            tcp dpt:53
    0     0 ACCEPT     udp  --  *      *       [ip]                 0.0.0.0/0            udp dpt:53
   29  1616 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcpflags: 0x17/0x02 limit: avg 2/sec burst 5
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8 limit: avg 1/sec burst 5
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            [ip]                 tcp dpt:25
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW,RELATED,ESTABLISHED
    0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 3 LOG flags 0 level 6 prefix "Firewall: FORWARD --"

Chain OUTPUT (policy ACCEPT 1 packets, 40 bytes)
pkts bytes target     prot opt in     out     source               destination
3312  411K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW,RELATED,ESTABLISHED
    1    40 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 3/min burst 3 LOG flags 0 level 6 prefix "Firewall: OUTPUT --"


sudo iptables -t nat -L -v -n

Chain PREROUTING (policy ACCEPT 9598 packets, 851K bytes)
pkts bytes target     prot opt in     out     source               destination
   17   948 DNAT       tcp  --  *      *       0.0.0.0/0            [ip_valido]        tcp dpt:80 to:[ip]:80
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            [ip_valido]        tcp dpt:443 to:[ip]:443
    2    96 DNAT       tcp  --  *      *       0.0.0.0/0            [ip_valido]        tcp dpt:25 to:[ip]:25
    0     0 REDIRECT   tcp  --  *      *       [ip]          0.0.0.0/0            tcp dpt:80 redir ports 8787
    0     0 REDIRECT   udp  --  *      *       [ip]          0.0.0.0/0            udp dpt:80 redir ports 8787

Chain INPUT (policy ACCEPT 9107 packets, 824K bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 1854 packets, 154K bytes)
pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 1854 packets, 154K bytes)
pkts bytes target     prot opt in     out     source               destination
   17   948 SNAT       tcp  --  *      *       0.0.0.0/0            [ip]             tcp dpt:80 to:[ip_valido]
    0     0 SNAT       tcp  --  *      *       0.0.0.0/0            [ip]             tcp dpt:443 to:[ip_valido]
    2    96 SNAT       tcp  --  *      *       0.0.0.0/0            [ip]             tcp dpt:25 to:[ip_valido]
    0     0 MASQUERADE  all  --  *      eth1    [ip]                0.0.0.0/0
    0     0 MASQUERADE  all  --  *      eth1    [ip]                0.0.0.0/0
    0     0 MASQUERADE  all  --  *      eth1    [ip]                0.0.0.0/0
    0     0 MASQUERADE  all  --  *      eth1    [ip]                0.0.0.0/0
    0     0 MASQUERADE  all  --  *      eth1    [ip]                0.0.0.0/0
    0     0 MASQUERADE  all  --  *      eth1    [ip]                0.0.0.0/0
    0     0 MASQUERADE  all  --  *      eth1    [ip]                0.0.0.0/0
    0     0 MASQUERADE  all  --  *      eth1    [ip]                0.0.0.0/0
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:21
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:21
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:22
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:22
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:25
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:25
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:80
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:80
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:110
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:110
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:143
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:143
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:443
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:443
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:445
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:445
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:465
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:465
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:995
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:995
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:587
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:587
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:1863
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:1863
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:2631
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:2631
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:3389
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:3389
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:8080
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:8080
    0     0 MASQUERADE  tcp  --  *      eth1    [ip]                0.0.0.0/0            tcp dpt:8787
    0     0 MASQUERADE  udp  --  *      eth1    [ip]                0.0.0.0/0            udp dpt:8787

zekkerj

Cara, eu consigo ver o tráfego entrando no seu firewall e sendo direcionado pro servidor; há registro de 17 pacotes na porta 80/tcp, e 2 na porta 25/tcp. Mas não consegui ver sinal de tráfego de retorno... é como se os pacotes fossem pro servidor e não voltassem.

Tente pingar do firewall pro servidor, usando apenas o endereço interno. Certifique-se de que esse servidor está com  firewall configurado pra aceitar esses pacotes.
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