[IPTABLES] Aiuto nella configurazione di gateway

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

[IPTABLES] Aiuto nella configurazione di gateway

Messaggioda Genymus » 02/08/2017, 14:13

Salve a tutti.
Sono sicuro che penserete male, di me, quando avrò finito di spiegare il mio problema, ma sono sicuro che qualche buona anima mi potrà aiutare:
Sono ormai giorni che sbatto la testa nella configurazione di una rete particolare con un gateway centrale da cui si diramano ben 7 reti diverse, il mio principale problema è il forwarding con iptables.

Come potete vedere dall'immagine allegata, il firewall/router (da quì in poi chiamato "Firewall"), ha 7 schede di rete fisiche (di cui 6 utilizzate) e possiede (oltre all'interfaccia di loopback), un'interfaccia virtuale per il tunnel VPN.

Descrivo brevemente le interfaccie ed il loro utilizzo:
Codice: Seleziona tutto
wan1 = Collegamento (ad alta velocità) alla rete internet. Essendo la rete sotto NAT, questa interfaccia verrà usata solo per uscire con la navigazione
wan2 = Collegamento alla rete internet di supporto. Questa rete è necessaria per il collegamento delle VPN.
tap1 = Interfaccia della VPN
lan1 = Interfaccia della rete locale 1
lan2 = Interfaccia della rete locale 2
dom1 = Interfaccia della rete riservata ai dispositivi riguardanti l'infrastruttura domotica dell'edificio
srv1 = Interfaccia riservata al collegamento diretto di un unico server che fungerà da proxy


Per una questione di sicurezza, le policy delle catene dovranno essere impostate su DROP

Le regole dovrebbero permette le seguenti connessioni:
    • Il Server 192.168.50.10 deve rispondere al PING dalla rete tap1, lan1, lan2 e dom1.
    • Il Server 192.168.50.10 deve essere raggiungibile dalle reti tap1, lan1, lan2 e dom1 senza però essere mascherato (ovvero: da dentro ognuna delle 4 reti, devo poter raggiungere il server scrivendo, ad esempio, sul browser l'indirizzo http://192.168.50.10).
    • Il traffico verso la porta 80 dalle reti lan1, lan2 e dom1 deve essere reindirizzato verso il server 192.168.50.10.
    • I pacchetti dalle porte 80 (che la regola sopra reindirizzerà al server) e 443 deve essere scartato dalle interfacce lan1, lan2 e dom1.
    • Il server 192.168.50.10 deve accettare connessioni dalla porta 80, 443, 3641, 10443 e 22
    • Il Firewall deve forwardare il traffico delle porte 80 e 443 provenienti dalle reti srv1 e lo, eseguendo il NAT ed il mascheramento, verso l'interfaccia wan1.
    • Il Firewall deve accettare, verso se stesso e solo dalla rete lan1, il traffico sulla porta 389, mentre da srv1 quello sulla porta 5050.
    • Dalla wan2, il server deve accettare connessioni dalla porta 1194.
    • Dalla wan2, il server deve fare il port forwarding delle porte 5550 e 5551 verso il client 192.168.5.60 (nella rete dom1).
    • Dalla tap1, devo poter connettermi tramite la porta 22 al Firewall ed al server 192.168.50.10.
    • Dalla tap1, devo potermi connettere direttamente (senza mascheramenti) al client 172.10.0.100 tramite la porta 80.
    • Da tap1 e da lan1 devo poter raggiungere l'ip 192.168.15.10 sulla porta 80.

So che sto chiedendo molto, e vi prometto che quando avrò le regole mi sforzerò di capirle prima di applicarle, ma sono giorni che ci sbatto la testa e, su internet, è impossibile trovare una guida completa (almeno non in italiano) sull'utilizzo di iptables... quando mi sembra di aver capito (perchè tutto sembra funzionare) quando cerco di repricarlo, questo non funziona più.
Inoltre credo che ci sia da abilitare qualche modulo sul kernel (cosa che non riesco a capire come fare e se è necessario).
Come distribuzione sto usando Debian 9.0 x64, ho abilitato il forward sul kernel aggiungendo il parametro "net.ipv4.ip_forward = 1" nel file "/etc/sysctl.conf", ma non capisco se bisogna abilitare altro e come fare per vedere cosa è già abilitato.
Sebbene posso dire di riuscire a cavarmela nella lettura dei manuali in inglese, devo dire che quello presente a questa pagine (https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html) è decisamente un po' troppo ostico da leggere.

Vi prego, potete darmi una mano?

Grazie mille
Genymus
Allegati
NetworkScheme.jpg
Scheda rappresentativo della rete.
Nei client, l'ip corrisponde al Client, il gateway all'interfaccia nel Server (Gateway)
NetworkScheme.jpg (89.2 KiB) Osservato 844 volte
Genymus
Newbie
Newbie
 
Messaggi: 22
Iscritto il: 14/07/2017, 13:58

Re: [IPTABLES] Aiuto nella configurazione di gateway

Messaggioda byte64 » 02/08/2017, 17:31

Inserendo le regole una ad una fino a dove sei riuscito ad ottenere quello che vuoi? Dove ti sei "incartato"?
Iniziamo con le regole funzionanti che hai creato e poi vediamo come intervenire e proseguire.

Ciao
byte64
Sr. Member
Sr. Member
 
Messaggi: 309
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: [IPTABLES] Aiuto nella configurazione di gateway

Messaggioda Genymus » 07/08/2017, 6:29

Salve,
scusate se non mi faccio sentire spesso, ma ho sempre molto da fare.

Ho risolto quasi tutti i miei problemi con iptables (mi sono letto il malloppo di roba ed alla fine ho capito la maggior parte delle cose).

Sono riuscito ad applicare tutte le regole tranne il forwarding dei pacchetti ICMP:
pensavo di poter fare tranquillamente:
Codice: Seleziona tutto
iptables -A FORWARD -p icmp --icmp-type any -i lan1 -o srv1 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type any -i srv1 -o lan1 -j ACCEPT

ma non funziona: i pc non rispondono al ping.

Potete aiutarmi?

Grazie mille e cordiali saluti
Genymus

PS: Appena ho un'altro po' di tempo da dedicare, posterò le regole che ho utilizzato.
Genymus
Newbie
Newbie
 
Messaggi: 22
Iscritto il: 14/07/2017, 13:58

Re: [IPTABLES] Aiuto nella configurazione di gateway

Messaggioda Genymus » 16/08/2017, 23:07

Salve, nessuno mi può dare una mano?
Grazie
Genymus
Newbie
Newbie
 
Messaggi: 22
Iscritto il: 14/07/2017, 13:58

Re: [IPTABLES] Aiuto nella configurazione di gateway

Messaggioda byte64 » 17/08/2017, 9:41

Hai abilitato ICMP anche in INPUT e OUTPUT per le interfacce interessate?
byte64
Sr. Member
Sr. Member
 
Messaggi: 309
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: [IPTABLES] Aiuto nella configurazione di gateway

Messaggioda Genymus » 17/08/2017, 9:52

byte64 ha scritto:Hai abilitato ICMP anche in INPUT e OUTPUT per le interfacce interessate?


Mi sa di no 8che stupido... neppure ci avevo pensato) ... appena posso provo e vi faccio sapere...

Grazie e cordiali saluti
Genymus
Genymus
Newbie
Newbie
 
Messaggi: 22
Iscritto il: 14/07/2017, 13:58

Re: [IPTABLES] Aiuto nella configurazione di gateway

Messaggioda Genymus » 10/11/2017, 15:16

Salve,
scusate se non mi sono fatto sentire per molto tempo, ma sono stato super impegnato e non ho avuto molto tempo da dedicare alla configurazione del server.
Adesso ho ripreso in mano il tutto, e non riesco a risolvere il problema del ping verso i dispositivi delle altre reti.

Nella pratica questo si traduce nel secondo server (nella rete 192.168.50.0/24, che ha come indirizzo 192.168.50.10) che deve eseguire i ping verso i dispositivi della rete lan1 (ovvero 172.20.0.0/16 verso, ad esempio, l'ip 172.20.255.253) e viceversa.

Ho applicato le seguenti regole:
Codice: Seleziona tutto
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

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

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT

iptables -A FORWARD -i lan1 -d 192.168.50.10 -p icmp --icmp-type 8 -j ACCEPT
iptables -A FORWARD -o lan1 -s 192.168.50.10 -p icmp --icmp-type 0 -j ACCEPT

iptables -A FORWARD -i lan1 -d 192.168.50.10 -p tcp --dport 80 -j ACCEPT

Purtroppo mi è impossibile pingare il server dalla lan1 e viceversa, anche se la connessione verso il webserver installato nel server funziona.

Come posso rendere possibile il ping tra le reti?

Grazie
Genymus
Genymus
Newbie
Newbie
 
Messaggi: 22
Iscritto il: 14/07/2017, 13:58

Re: [IPTABLES] Aiuto nella configurazione di gateway

Messaggioda byte64 » 11/11/2017, 11:18

Avendo specificato quale tipo di pacchetto icmp vuoi gestire in input e ouptut devi impostare le regole a "due vie":

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT


iptables -A FORWARD -i lan1 -d 192.168.50.10 -p icmp --icmp-type 8 -j ACCEPT
iptables -A FORWARD -o lan1 -s 192.168.50.10 -p icmp --icmp-type 0 -j ACCEPT
iptables -A FORWARD -i lan1 -d 192.168.50.10 -p icmp --icmp-type 0 -j ACCEPT
iptables -A FORWARD -o lan1 -s 192.168.50.10 -p icmp --icmp-type 8 -j ACCEPT
byte64
Sr. Member
Sr. Member
 
Messaggi: 309
Iscritto il: 07/01/2017, 19:02
Località: Bergamo

Re: [IPTABLES] Aiuto nella configurazione di gateway

Messaggioda Genymus » 14/11/2017, 5:08

Salve,
ancora non riesco a risolvere, i pacchetti sembrano essere forwardati correttamente, ma non arriva nessuna risposta dal server.

allego le regole complete del firewall.
alcune sono solo di test e verranno modificate più avanti, ma quelle riguardanti i pacchetti icmp sono fisse.

allego anche un tcpdump dei pacchetti icmp:
Codice: Seleziona tutto
root@Firewall:/server/script# tcpdump -i any -vvv icmp
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
05:05:38.536814 IP (tos 0x0, ttl 128, id 429, offset 0, flags [none], proto ICMP (1), length 60)
    172.20.255.253 > 192.168.50.10: ICMP echo request, id 1, seq 45, length 40
05:05:38.536869 IP (tos 0x0, ttl 127, id 429, offset 0, flags [none], proto ICMP (1), length 60)
    172.20.255.253 > 192.168.50.10: ICMP echo request, id 1, seq 45, length 40
05:05:43.325041 IP (tos 0x0, ttl 128, id 434, offset 0, flags [none], proto ICMP (1), length 60)
    172.20.255.253 > 192.168.50.10: ICMP echo request, id 1, seq 46, length 40
05:05:43.325079 IP (tos 0x0, ttl 127, id 434, offset 0, flags [none], proto ICMP (1), length 60)
    172.20.255.253 > 192.168.50.10: ICMP echo request, id 1, seq 46, length 40
^C
4 packets captured
4 packets received by filter
0 packets dropped by kernel


I pacchetti non sono droppati, ma non arrivano a destinazione (a quanto pare).
è possibile che sia un problema di routing?

Attendo notizie ed intanto ringrazio
Genymus
Newbie
Newbie
 
Messaggi: 22
Iscritto il: 14/07/2017, 13:58

Re: [IPTABLES] Aiuto nella configurazione di gateway

Messaggioda Genymus » 14/11/2017, 5:08

# Svuota tutte le chains:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Imposta le policy di default su DROP:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Accetta tutte le connessioni RELATED e ESTABILISHED
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Accetta connessioni SSH da LAN1 e DOM1
iptables -A INPUT -i lan1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i dom1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i wan1 -p tcp --dport 22 -j ACCEPT #temporanea per WAN1

# Accetta DNS REQUEST da SE STESSO verso SE STESSO:
iptables -A OUTPUT -d 127.0.0.1 -p udp --dport 53 -j ACCEPT

# Accetta DNS REQUEST dal FIREWALL verso i dns server di Google:
iptables -A OUTPUT -d 8.8.8.8 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -d 8.8.8.8 -p tcp --dport 53 -j ACCEPT

# Accetta DNS REQUEST verso il FIREWALL da:
# LO
iptables -A INPUT -i lo -p udp --dport 53 -j ACCEPT
# LAN1
iptables -A INPUT -i lan1 -p udp --dport 53 -j ACCEPT
# LAN2
iptables -A INPUT -i lan2 -p udp --dport 53 -j ACCEPT
# SRV1
iptables -A INPUT -i srv1 -p udp --dport 53 -j ACCEPT
# DOM1
iptables -A INPUT -i dom1 -p udp --dport 53 -j ACCEPT
# TUN1
iptables -A INPUT -i tun1 -p udp --dport 53 -j ACCEPT

# Accetta DNS REQUEST verso il SERVER da LAN1:
iptables -A FORWARD -i lan1 -d 192.168.50.10 -p udp --dport 53 -j ACCEPT

# Maschera tutte le connessioni in uscita provenienti dalle reti LO, SRV1, SGR1, DOM1 per passare attraverso WAN2
#iptables -t nat -A POSTROUTING -s 127.0.0.1 -o wan1 -j MASQUERADE #da modificare con wan2
#iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o wan1 -j MASQUERADE #da modificare con wan2
#iptables -t nat -A POSTROUTING -s 10.3.100.0/24 -o wan1 -j MASQUERADE #da modificare con wan2
#iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o wan1 -j MASQUERADE #da modificare con wan2
# LAN1 temporaneo

# FORWARDA le connessioni tcp 80 e 443 verso l'esterno (da LAN1) temporaneo
iptables -A FORWARD -i lan1 -o wan1 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i lan1 -o wan1 -p tcp --dport 443 -j ACCEPT

# FORWARDA le connessioni tcp 80 e 443 verso l'esterno (da SRV1):
iptables -A FORWARD -i srv1 -o wan1 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i srv1 -o wan1 -p tcp --dport 443 -j ACCEPT

# Consente la connessione HTTP/HTTPS verso l'esterno da SE STESSO:
iptables -A OUTPUT -o wan1 -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o wan1 -p tcp --dport 443 -j ACCEPT

iptables -t nat -A POSTROUTING -o wan1 -j MASQUERADE #temporaneo, da modificare

# Permette i pacchetti ICMP del FIREWALL da tutte le interfacce:
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type any -j ACCEPT

# Permette i pacchetti ICMP verso il SERVER da:
# LAN1
iptables -A FORWARD -i lan1 -d 192.168.50.10 -p icmp --icmp-type any -j ACCEPT
# LAN2
iptables -A FORWARD -i lan2 -d 192.168.50.10 -p icmp --icmp-type any -j ACCEPT
# DOM1
iptables -A FORWARD -i dom1 -d 192.168.50.10 -p icmp --icmp-type any -j ACCEPT
# TUN1
iptables -A FORWARD -i tun1 -d 192.168.50.10 -p icmp --icmp-type any -j ACCEPT
# WAN1 Temporaneo
iptables -A FORWARD -i wan1 -d 192.168.50.10 -p icmp --icmp-type any -j ACCEPT

# Permette i pacchetti ICMP dal SERVER verso:
# LAN1
iptables -A FORWARD -o lan1 -s 192.168.50.10 -p icmp --icmp-type any -j ACCEPT
# LAN2
iptables -A FORWARD -o lan2 -s 192.168.50.10 -p icmp --icmp-type any -j ACCEPT
# DOM1
iptables -A FORWARD -o dom1 -s 192.168.50.10 -p icmp --icmp-type any -j ACCEPT
# TUN1
iptables -A FORWARD -o tun1 -s 192.168.50.10 -p icmp --icmp-type any -j ACCEPT
# WAN1 temporaneo:
iptables -A FORWARD -o wan1 -s 192.168.50.10 -p icmp --icmp-type any -j ACCEPT

# Accetta i pacchetti provenienti dalla LAN1, LAN2, DOM1, TUN1 dalla porta 80 verso il SERVER:
iptables -A FORWARD -i lan1 -d 192.168.50.10 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i lan2 -d 192.168.50.10 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i dom1 -d 192.168.50.10 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i tun1 -d 192.168.50.10 -p tcp --dport 80 -j ACCEPT

# LOGGIN PACCHETTI DROPPATI
iptables -A FORWARD -j LOG --log-prefix "iptables-forward: "
iptables -A INPUT -j LOG --log-prefix "iptables-input: "
iptables -A OUTPUT -j LOG --log-prefix "iptables-output: "
Genymus
Newbie
Newbie
 
Messaggi: 22
Iscritto il: 14/07/2017, 13:58

Re: [IPTABLES] Aiuto nella configurazione di gateway

Messaggioda Genymus » 14/11/2017, 5:17

Risolto...
in realtà tutto funzionava correttamente, solo chè il maledetto firewall di windows bloccava i pacchetti icmp in entrata.

Grazie a tutti
Genymus
Newbie
Newbie
 
Messaggi: 22
Iscritto il: 14/07/2017, 13:58


Torna a Network

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti