iptables redirect porta vnc

La rete, Internet, configurazione di Servizi e tutto ciò che permette la comunicazione tra macchine

iptables redirect porta vnc

Messaggioda maxt » 16/06/2017, 0:36

ho una macchina con due schede di rete, su una ho un ip privato tipo 192.168.20.20/16 e sull'altra ho un ip pubblico statico tipo 79.xxxx.xxx.xx

vorrei fare il redirect della porta vnc (5900) dall'ip 79.xx.xx.xx verso l'ip 192.168.70.70/16, pero' non e' cosi' banale perche' quest'ultima macchina ha come default gateway un altro ip (non quello che gli gira la porta)


mi date una mano a girare questa porta?
grazie
maxt
Hero Member
Hero Member
 
Messaggi: 582
Iscritto il: 27/12/2011, 10:00

Re: iptables redirect porta vnc

Messaggioda byte64 » 16/06/2017, 7:41

Devi operare anche sul pc di destinazione o il suo gateway.
Ciao
byte64
Sr. Member
Sr. Member
 
Messaggi: 367
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: iptables redirect porta vnc

Messaggioda maxt » 16/06/2017, 10:09

a fare si puo' fare di sicuro (senza toccare le impostazioni sul computer che deve rispondere, cioe' senza modificare il default gateway o impostare rotte statiche)

praticamente si dovrebbe fare in modo che le richieste provengano da un ip che si trova nella stessa subnet del pc
solo che non riesco a districarmi con iptables
maxt
Hero Member
Hero Member
 
Messaggi: 582
Iscritto il: 27/12/2011, 10:00

Re: iptables redirect porta vnc

Messaggioda byte64 » 16/06/2017, 10:59

Il pc di destinazione quando riceve la richiesta di vnc risponde al suo gateway. La richiesta arriva da un ip che non è generata da quel gateway. O metti una regola al pc di destinazione che dirotta su un altro gateway la risposte a vnc, o metti una regola sul gateway di quel pc che forwarda a lui le richieste vnc che arrivano dal gateway di ingresso, che a questo punto dovrà inviarle a questo gateway e non direttamente al pc di destinazione.
Puoi tranquillamente fare il contrario, cioè far uscire le richieste vnc da quel pc attraverso un gateway che non è il suo e poi fare tornare a lui la connessione, ma anche questo non è proprio banale.
Cosa ti rende sicuro che si possa fare come dici tu? Hai qualche link/esempio dove dare un occhiata?
byte64
Sr. Member
Sr. Member
 
Messaggi: 367
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: iptables redirect porta vnc

Messaggioda maxt » 16/06/2017, 11:16

immaginiamo che il pc ha ip 10.10.10.10/8 (quello che deve fare da server vnc)

il client che si vuole collegare, ha un ip dinamico pubblico, si collega a internet come gli pare e piace

al pc server vnc, i pacchetti non devono venire dall'ip pubblico del client, ma si deve mascherare l'ip in modo che provengano da un ip della rete, tipo da 10.10.10.11/8

mi pare che questa cosi si chiami reverse nat
maxt
Hero Member
Hero Member
 
Messaggi: 582
Iscritto il: 27/12/2011, 10:00

Re: iptables redirect porta vnc

Messaggioda byte64 » 16/06/2017, 11:20

Supponendo che:
eth0 = 79.xx.xx.xx
eth1 = 192.168.20.xxx

Prova così:
Codice: Seleziona tutto
iptables -A FORWARD -i eth0 -o eth1 -p tcp --syn --dport 5900 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5900 -j DNAT --to-destination 192.168.70.xxx
byte64
Sr. Member
Sr. Member
 
Messaggi: 367
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: iptables redirect porta vnc

Messaggioda byte64 » 16/06/2017, 11:30

Scusa ho tagliato fuori l'ultima riga...
Codice: Seleziona tutto
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 5900 -d 192.168.70.xxx -j SNAT --to-source 192.168.20.xxx
byte64
Sr. Member
Sr. Member
 
Messaggi: 367
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: iptables redirect porta vnc

Messaggioda maxt » 16/06/2017, 21:33

ho fatto una prova e non funziona

sulla macchina ho:
eth1 79.xxx.xxx.xxx
eth2 192.168.0.88

il server vnc e' 192.168.0.75

i comandi di iptables che ho dato sono:
Codice: Seleziona tutto
iptables -A FORWARD -i eth1 -o eth2 -p tcp --syn --dport 5900 -m conntrack --ctstate NEW -j ACCEPT

iptables -A FORWARD -i eth1 -o eth2 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i eth2 -o eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 5900 -j DNAT --to-destination 192.168.0.75

iptables -t nat -A POSTROUTING -o eth2 -p tcp --dport 5900 -d 192.168.0.75 -j SNAT --to-source 192.168.0.88



Codice: Seleziona tutto
Chain INPUT (policy ACCEPT 164 packets, 11416 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp  --  eth1   eth2    0.0.0.0/0            0.0.0.0/0            tcp dpt:5900 flags:0x17/0x02 ctstate NEW
    0     0 ACCEPT     all  --  eth1   eth2    0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  eth2   eth1    0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT 172 packets, 24020 bytes)
 pkts bytes target     prot opt in     out     source               destination



****************     tabella NAT   ******************************************

Chain PREROUTING (policy ACCEPT 53 packets, 3189 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:5900 to:192.168.0.75

Chain INPUT (policy ACCEPT 52 packets, 3100 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 1 packets, 60 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 1 packets, 60 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 SNAT       tcp  --  *      eth2    0.0.0.0/0            192.168.0.75         tcp dpt:5900 to:192.168.0.88




p.s.: ho fatto le prove sia mettendo /proc/sys/net/ipv4/ip_forward a 0 che a 1 e in entrambi i casi non va.
come deve stare? abilitato?
fino ad oggi e' rimasto disabilitato, perche' non mi e' mai servito come gateway per altre macchine, se serve lo posso abilitare
maxt
Hero Member
Hero Member
 
Messaggi: 582
Iscritto il: 27/12/2011, 10:00

Re: iptables redirect porta vnc

Messaggioda byte64 » 17/06/2017, 8:39

Il forward DEVE essere abilitato, lo davo per scontato scusa....
Il seguente comando eseguito dal pc gateway cosa ritorna?
Codice: Seleziona tutto
nmap -v 192.168.0.88

La scheda eth1 (79.x.x.x) è direttamente esposta a internet?
Non hai nessuna regola nelle chain INPUT e OUTPUT, il che è molto rischioso a meno di un firewall esterno alla eth1, quindi come fai a connetterti dall'esterno della eth1? Sicuro che la porta 5900 da fuori sia disponibile?
Lo stesso comando precedente dato dal pc che vuoi usare come client cosa ritorna? (Lascia le regole ipatbles che ti ho indicato attive)
Codice: Seleziona tutto
nmap -v 79.x.x.x

Inoltre nel primo post parlavi di 2 reti private diverse tra la eth2 e il server vnc, invece sono nella stessa rete 192.168.0.0, come è configurata la eth2? (nel file interfaces)
byte64
Sr. Member
Sr. Member
 
Messaggi: 367
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: iptables redirect porta vnc

Messaggioda maxt » 17/06/2017, 15:59

allora:
la scheda di rete con ip 79.xx e' direttamente esposta su internet e senza firewall, cosi' evitiamo ulteriori complicazioni dovute a configurazioni errate di firewall vari
se un programma apre una porta sul computer, quella porta e' direttamente raggiungibile da tutti.
non ci sono ulteriori complicazioni in mezzo
una volta risolto il problema della porta vnc vedo di sistemare il tutto

dal pc 192.168.0.88 ho eseguito i seguenti comandi:

Codice: Seleziona tutto
#     nmap -v 192.168.0.88

Starting Nmap 6.47 ( http://nmap.org ) at 2017-06-17 16:51 CEST
Initiating Parallel DNS resolution of 1 host. at 16:51
Completed Parallel DNS resolution of 1 host. at 16:51, 0.01s elapsed
Initiating SYN Stealth Scan at 16:51
Scanning 192.168.0.88 [1000 ports]
Discovered open port 139/tcp on 192.168.0.88
Discovered open port 53/tcp on 192.168.0.88
Discovered open port 80/tcp on 192.168.0.88
Discovered open port 21/tcp on 192.168.0.88
Discovered open port 111/tcp on 192.168.0.88
Discovered open port 22/tcp on 192.168.0.88
Discovered open port 445/tcp on 192.168.0.88
Completed SYN Stealth Scan at 16:51, 2.41s elapsed (1000 total ports)
Nmap scan report for 192.168.0.88
Host is up (0.000028s latency).
Not shown: 993 closed ports
PORT    STATE SERVICE
21/tcp  open  ftp
22/tcp  open  ssh
53/tcp  open  domain
80/tcp  open  http
111/tcp open  rpcbind
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 2.52 seconds
           Raw packets sent: 1060 (46.640KB) | Rcvd: 2127 (89.348KB)



Codice: Seleziona tutto
#     nmap -v 192.168.0.75

Starting Nmap 6.47 ( http://nmap.org ) at 2017-06-17 16:59 CEST
Initiating ARP Ping Scan at 16:59
Scanning 192.168.0.75 [1 port]
Completed ARP Ping Scan at 16:59, 0.21s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 16:59
Completed Parallel DNS resolution of 1 host. at 16:59, 0.01s elapsed
Initiating SYN Stealth Scan at 16:59
Scanning 192.168.0.75 [1000 ports]
Discovered open port 22/tcp on 192.168.0.75
Discovered open port 5900/tcp on 192.168.0.75
Discovered open port 111/tcp on 192.168.0.75
Discovered open port 2049/tcp on 192.168.0.75
Completed SYN Stealth Scan at 16:59, 1.25s elapsed (1000 total ports)
Nmap scan report for 192.168.0.75
Host is up (0.000095s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
2049/tcp open  nfs
5900/tcp open  vnc
MAC Address: D0:50:99:15:4E:27 (ASRock Incorporation)

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 1.66 seconds
           Raw packets sent: 1001 (44.028KB) | Rcvd: 1001 (40.044KB)
root@debian:/SCRIPT/iptables#






Codice: Seleziona tutto
# cat /etc/network/interfaces

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback




#scheda rete integrata
allow-hotplug eth1
iface eth1 inet static
        address 79.xxxxxxxxxx
        netmask 255.255.255.248
        network 79.xxxxxxxxxxxx
        broadcast 79.xxxxxxxxxxxxxx
        gateway 79.xxxxxxxxxxxxx
        dns-nameservers xxxxxxxxxxxxxxxxxxxx




#scheda rete pci
# The primary network interface
allow-hotplug eth2
iface eth2 inet static
        address 192.168.0.88
        netmask 255.255.0.0
        network 192.168.0.0
        broadcast 192.168.255.255





Codice: Seleziona tutto
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         79.xxxxxxxx    0.0.0.0         UG    0      0        0 eth1
79.xxxxxxxxxxxx   0.0.0.0         255.255.255.248 U     0      0        0 eth1
192.168.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth2



ho fatto una scansione porte sull'ip 79xxxxxxx e la porta 5900 risulta chiusa


per quanto riguarda il discorso reti: praticamente i router, la macchina 192.168.0.88, la macchina 192.168.0.75, e tutto il resto sono fisicamente collegati nello stesso switch di rete
maxt
Hero Member
Hero Member
 
Messaggi: 582
Iscritto il: 27/12/2011, 10:00

Re: iptables redirect porta vnc

Messaggioda byte64 » 17/06/2017, 18:15

Visto che non hai regole di drop o reject per ora riprova con solo queste 3 regole, dopo aver resettato iptables.
Codice: Seleziona tutto
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 5900 -j DNAT --to-destination 192.168.0.75
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -p tcp --dport 5900 -d 192.168.0.75 -j SNAT --to-source 192.168.0.88

Assicurati di avere il port forwarding attivo
in /etc/sysctl.conf
Codice: Seleziona tutto
net.ipv4.ip_forward = 1

poi esegui
Codice: Seleziona tutto
sysctl -p /etc/sysctl.conf

Le prime due regole sarebbero sufficienti se il gateway del server vnc fosse il 192.168.0.88, non puoi proprio cambiare gateway sul 192.168.0.75?
Inoltre ricontrolla con le regole attive se da internet la porta 5900 risulta closed o filtered.
byte64
Sr. Member
Sr. Member
 
Messaggi: 367
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: iptables redirect porta vnc

Messaggioda maxt » 17/06/2017, 19:15

no, ho provato a fare un port scan da internet e non risulta aperta la 5900
inoltre ho provato a fare http://79xxxxxxx e non riesce a visualizzare neanche la pagina web

appena fatto il flush di iptables, riesco ad accedere di nuovo sulla pagina web, fermo restando che la 5900 non va
maxt
Hero Member
Hero Member
 
Messaggi: 582
Iscritto il: 27/12/2011, 10:00

Re: iptables redirect porta vnc

Messaggioda byte64 » 18/06/2017, 10:28

Al momento non saprei cosa altro dirti. Ho diverse installazioni col nat attivo e funzionano con le regole che ti ho indicato. Ovviamente non ho le impostazioni dei gateway differenziate come te, nei miei casi il gateway sul pc di destinazione è sempre corrispondente all'indirizzo della eth privata sul router.
Avevo risolto situaziioni simili alla tua, ma agendo o sul pc di destinazione o sul suo gateway.
Dovrei provare a mettere su qualche nodo virtuale e fare dei test diretti, se trovo un po' di tempo magari mi ci metto anche. Intanto possiamo solo aspettare che si faccia sentire qualche altro utente più esperto o che ha già risolto la tua situazione.
Ciao
byte64
Sr. Member
Sr. Member
 
Messaggi: 367
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: iptables redirect porta vnc

Messaggioda maxt » 19/06/2017, 20:49

ho fatto una prova installando su un computer pfsense, e impostando una regola per deviare il traffico verso il pc 192.168.0.75 e funziona tutto perfettamente :D (acceso al pc 192.168.0.75 e mi dice che la connessione proviene dall'ip 192.168.0.120 che sarebbe l'ip della scheda di rete lan del pc con pfsense)

il problema e' che vorrei evitare di tenere acceso anche un altro computer solo per fare questo redirect.. se si potesse utilizzare iptables sarebbe assai meglio
maxt
Hero Member
Hero Member
 
Messaggi: 582
Iscritto il: 27/12/2011, 10:00

Re: iptables redirect porta vnc

Messaggioda byte64 » 19/06/2017, 21:08

Ottimo :) , avevo dato un occhiata a pfsense tempo fa.
Prova dalla shell a dare questi comandi:
Codice: Seleziona tutto
pfctl -vvsr
pfctl -vvsn
pfctl -vvsa

Dovrebbero ritornare le regole attive sul firewall, possiamo così provare a tradurle per iptables.
byte64
Sr. Member
Sr. Member
 
Messaggi: 367
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Prossimo

Torna a Network

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti