Entra

View Full Version : Ancora su iptables................


stefanoxjx
14-12-2005, 22:44
Ciao a tutti, sto configurando un Gateway VoIP, il quale richiede una serie di porte aperte sul firewall.
la porta WAN del Gateway VoIP ha il seguente indirizzo: 192.168.0.220
la porta LAN del Gateway VoIP ha il seguente indirizzo: 192.168.0.221
Il router/firewall linux ha 192.168.0.254 e il gateway impostato sull'adattatore VoIP è impostato con lo stesso valore.

Le porte che servono aperte sono: 3478, 5060, 8000, 8001, 8002, 8003.

Io ho aperto le porte sul firewall e attivato il forward verso il 192.168.0.220, però continua a non collegarsi e non riesco a capire cosa ho trascurato.
Questi sono gli script che inizializzano il NAT e il firewall:

#!/bin/bash

EXTERNAL=eth0
INTERNAL=eth1

iptables="/usr/sbin/iptables"

# Blocca il forward fino a quando non vengono stabilite tutte le regole.
echo '0' > /proc/sys/net/ipv4/ip_forward

# Carica i moduli necessari
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_nat
modprobe ipt_MASQUERADE


# Attiva il nat (routing)
iptables -t nat -A POSTROUTING -o $EXTERNAL -j MASQUERADE
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# Forwarda tutti i pacchetti inerenti alla nostra rete locale
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

# Forwarda i pacchetti destinati alla porte 4661-4662 per il pc 192.168.0.253
# iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 4661 -j DNAT --to-destination 192.168.0.1:4661
# iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 4662 -j DNAT --to-destination 192.168.0.1:4662


# Gestione porte per VoIP
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 5060 -j DNAT --to-destination 192.168.0.220:5060
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 3478 -j DNAT --to-destination 192.168.0.220:3478
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8000 -j DNAT --to-destination 192.168.0.220:8000
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8001 -j DNAT --to-destination 192.168.0.220:8001
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8002 -j DNAT --to-destination 192.168.0.220:8002
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8003 -j DNAT --to-destination 192.168.0.220:8003

iptables -A FORWARD -i $EXTERNAL -p tcp --dport 5060 -j ACCEPT
iptables -A FORWARD -i $EXTERNAL -p tcp --dport 3478 -j ACCEPT
iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8000 -j ACCEPT
iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8001 -j ACCEPT
iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8002 -j ACCEPT
iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8003 -j ACCEPT
# -----------------------

# iptables -A FORWARD -i $EXTERNAL -p tcp --dport 4661 -j ACCEPT
# iptables -A FORWARD -i $EXTERNAL -p tcp --dport 4662 -j ACCEPT

# iptables -A FORWARD -j DROP

# Attiva il forward
echo '1' > /proc/sys/net/ipv4/ip_forward

# Policy di default delle catene
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Accetta tutti i pacchetti in input e output dalla rete
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT

# Accetto tutti i pacchetti che derivano da connessioni che io stesso ho iniziato
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Accetto tutti i paccheti in ingresso per le connessioni che vengono generate dall'interno
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Apro la porta
# ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# www
iptables -A INPUT -p tcp --dport www -j ACCEPT
# smtp
iptables -A INPUT -p tcp --dport smtp -j ACCEPT
# pop3
iptables -A INPUT -p tcp --dport pop3 -j ACCEPT
# amavis:10024/10025
iptables -A INPUT -p tcp --dport 10024 -j ACCEPT
iptables -A INPUT -p tcp --dport 10025 -j ACCEPT
# amule
iptables -A INPUT -p tcp --dport 4661 -j ACCEPT
iptables -A INPUT -p tcp --dport 4662 -j ACCEPT
iptables -A INPUT -p tcp --dport 4665 -j ACCEPT
iptables -A INPUT -p udp --dport 4672 -j ACCEPT
iptables -A INPUT -p udp --dport 4665 -j ACCEPT
# amuleweb
iptables -A INPUT -p tcp --dport 4711 -j ACCEPT
iptables -A INPUT -p tcp --dport 4712 -j ACCEPT
# fwlogwatch
iptables -A INPUT -p tcp --dport 8888 -j ACCEPT


# --------- Gestione porte per VoIP ----------
iptables -A INPUT -p tcp --dport 5060 -j ACCEPT
iptables -A INPUT -p tcp --dport 3478 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables -A INPUT -p tcp --dport 8001 -j ACCEPT
iptables -A INPUT -p tcp --dport 8002 -j ACCEPT
iptables -A INPUT -p tcp --dport 8003 -j ACCEPT
# ---------------------------------------------


# Loggo tutto quello che NON deriva da connessioni che io ho instaurato
# a livello 7 (debug) del syslog. Questo significa, per esempio in Debian, che i pacchetti
# bloccati verranno visualizzati in /var/log/syslog.
iptables -A INPUT -j LOG --log-level 7 --log-prefix "Blocked Packet: "

Cosa sto sbagliando secondo voi?
Grazie.

:help:

stefanoxjx
15-12-2005, 14:04
:D

W.S.
15-12-2005, 14:42
Potrebbe essere un problema di routing, route -n che dice?

W.S.
15-12-2005, 14:47
Altra cosa (che non influisce sul corretto flusso dei dati):
Io non loggherei tutto quello che mi arriva su una porta, anche se non è desiderato.
Rischi di avere un file di log enorme e quindi illeggibile (a seconda della visibilità della macchina), piuttosto loggo i tentativi di connessione potenzialmente dannosi e li limito per numero in un certo intervallo di tempo, giusto per avere un'idea di cosa è arrivato.

stefanoxjx
15-12-2005, 16:05
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.189.120 0.0.0.0 255.255.255.248 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 192.168.189.126 0.0.0.0 UG 0 0 0 eth0

Tieni presente che internet/posta funzionano senza problemi, l'unico problema è solo il Gatway VoIP che non si collega.
Se assegno al Gatway VoIP l'IP pubblico e lo collego alla wan, si collega immediatamente, quindi il problema "secondo me" sta nel forward dei pacchetti, ma non capisco cosa posso aver trascurato.

Grazie dell'attenzione.

stefanoxjx
15-12-2005, 16:06
Altra cosa (che non influisce sul corretto flusso dei dati):
Io non loggherei tutto quello che mi arriva su una porta, anche se non è desiderato.
Rischi di avere un file di log enorme e quindi illeggibile (a seconda della visibilità della macchina), piuttosto loggo i tentativi di connessione potenzialmente dannosi e li limito per numero in un certo intervallo di tempo, giusto per avere un'idea di cosa è arrivato.

Infatti, avevo intenzione di abbassare il valore, solo che tra le mille cose da fare...................

W.S.
15-12-2005, 16:40
ok, se internet e posta vanno e fanno "la stessa strada" non è la rotta.

Guardando lo script vedo che nella sezione dove imposti il PREROUTING, redirigi il traffico in ingresso con destinazione xxx e non provenienti da xxx. Non essendo sicuro di aver ben compreso l'architettura della tua rete non ne ho la certezza, ma penso debbano essere consentite almeno anche quelle (se non solo quelle) cioè vedo bene

iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 5060 -j DNAT --to-destination 192.168.0.220:5060
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 5060 -j DNAT --to-destination 192.168.0.220:5060

per ogni porta voip.
Se nemmeno cosi va prova a sniffare il traffico nei vari segmenti della rete e vedi dove si inceppa il tutto.

stefanoxjx
15-12-2005, 17:19
In base al tuo consiglio, ho modificato la parte VoIP dello script del firewall in questo modo:


# Gestione porte per VoIP
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 5060 -j DNAT --to-destination 192.168.0.220:5060
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 5060 -j DNAT --to-destination 192.168.0.220:5060

iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 3478 -j DNAT --to-destination 192.168.0.220:3478
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 3478 -j DNAT --to-destination 192.168.0.220:3478

iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8000 -j DNAT --to-destination 192.168.0.220:8000
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 8000 -j DNAT --to-destination 192.168.0.220:8000

iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8001 -j DNAT --to-destination 192.168.0.220:8001
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 8001 -j DNAT --to-destination 192.168.0.220:8001

iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8002 -j DNAT --to-destination 192.168.0.220:8002
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 8002 -j DNAT --to-destination 192.168.0.220:8002

iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8003 -j DNAT --to-destination 192.168.0.220:8003
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 8003 -j DNAT --to-destination 192.168.0.220:8003

iptables -A FORWARD -i $EXTERNAL -p tcp --dport 5060 -j ACCEPT
iptables -A FORWARD -i $EXTERNAL -p tcp --sport 5060 -j ACCEPT

iptables -A FORWARD -i $EXTERNAL -p tcp --dport 3478 -j ACCEPT
iptables -A FORWARD -i $EXTERNAL -p tcp --sport 3478 -j ACCEPT

iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8000 -j ACCEPT
iptables -A FORWARD -i $EXTERNAL -p tcp --sport 8000 -j ACCEPT

iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8001 -j ACCEPT
iptables -A FORWARD -i $EXTERNAL -p tcp --sport 8001 -j ACCEPT

iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8002 -j ACCEPT
iptables -A FORWARD -i $EXTERNAL -p tcp --sport 8002 -j ACCEPT

iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8003 -j ACCEPT
iptables -A FORWARD -i $EXTERNAL -p tcp --sport 8003 -j ACCEPT

Però non si collega lo stesso.

Ti do una piccola spiegazione sulla struttura della mia rete, così magari riesci a capire meglio il problema.
La rete è composta da:

Ingresso Internet (ethernet) con indirizzo pubblico aaa.aaa.aaa.xxx
Server linux che funge da router e firewal e........... con eth0 WAN impostata su aaa.aaa.aaa.xxx ed eth1 LAN impostata su 192.168.0.254.

Logicamente sulla lan ci sono una serie di PC e apparati di rete che girano su 192.168.0.xxx GW 192.168.0.254.
Uno di questi è il Gatway VoIP che ho configurato così:

WAN: 192.168.0.220 GW 192.168.0.254
LAN: 192.168.0.221 GW 192.168.0.254

Spero di essere stato abbastanza chiaro :)

Grazie.
Ciao.

W.S.
15-12-2005, 17:43
Chiarissimo!
Ok, ho un gran dubbio sulla tabella di routing, ma magari l'hai modificata per nn mostrare l'ip visto che hai detto che tutto funziona, il dubbio è:
come può essere che il default gw è un indirizzo interno (192.168.0.126)? Se è cosi e funziona è perchè viene buttato sull'interfaccia esterna (eth0), cmq io lo aggiusterei.

Tornando al problema (visto che tutto il resto funziona deve andar anche il voip):
A guardare lo script mi sembra a posto, tranne che non ho visto la pulitura iniziale delle tabelle (se è cosi assicurati di non avere entrate non volute).

Siamo sicuri che sono solo quelle porte e solo in tcp da redirigere?

stefanoxjx
16-12-2005, 10:25
Chiarissimo!
Ok, ho un gran dubbio sulla tabella di routing, ma magari l'hai modificata per nn mostrare l'ip visto che hai detto che tutto funziona, il dubbio è:
come può essere che il default gw è un indirizzo interno (192.168.0.126)? Se è cosi e funziona è perchè viene buttato sull'interfaccia esterna (eth0), cmq io lo aggiusterei.

Tornando al problema (visto che tutto il resto funziona deve andar anche il voip):
A guardare lo script mi sembra a posto, tranne che non ho visto la pulitura iniziale delle tabelle (se è cosi assicurati di non avere entrate non volute).

Siamo sicuri che sono solo quelle porte e solo in tcp da redirigere?

Eccomi ancora quì :)
Allora, il default gw è 192.168.189.126 e non 192.168.0.126, ma, a parte questo, mi hai fatto venire un dubbio sulle porte.
Infatti sul manuale è scritto di aprire le porte 3478, 5060, 8000-8003, però io ho dato per scontato che fossero TCP, mentre facendo delle rierche ho scoperto che le porte sono UDP, solo che ho ulteriormente modificato le impotazioni del firewall, ma non si collega ancora.
Appena trovo un attimo di tempo faccio ulteriori prove con più calma e se non riesco, dovrò purtroppo rompere ancora le p@..e a voi :)
I'm sorry!!!!
Per il momento grazie dell'aiuto.
Ciao.

HexDEF6
16-12-2005, 11:16
domandina... ma il tuo gateway voip (non sono per nulla esperto in queste tecnologie) e' praticamente un qualcosa che fa da "NAT" per cose collegate alla LAN del gateway? (come al solito non mi sono spiegato bene!)

Comunque credo che il problema siano i due ip che ha il gateway... se non hai messo un netmask adeguata i pacchetti che sono nella LAN del gateway non sapranno come uscire.

se il gateway VOIP e' configurato cosi' (ripeto.. non conosco i gateway voip.. faccio finta che sia come un computer normale!):
wan ip: 192.168.0.220 netmask 255.255.255.0
lan ip: 192.168.0.221 netmask 255.255.255.0
ed ha impostato come default gw 192.168.0.254
In questa maniera hai su due interfacce fisiche diverse la stessa sottorete, e credo che il tutto crei diversi probelmi!

La soluzione e' o quella di mettere una rete diversa sulla lan del gateway voip (quindi un ip del tipo 192.168.1.221.. e ovviamente devi cambiare anche tutti gli ip degli apparecchi voip di conseguenza) o impostare le maschere in maniera corretta (magari usa gip per farlo senza dover fare a mano!)

Ciao

stefanoxjx
16-12-2005, 12:36
domandina... ma il tuo gateway voip (non sono per nulla esperto in queste tecnologie) e' praticamente un qualcosa che fa da "NAT" per cose collegate alla LAN del gateway? (come al solito non mi sono spiegato bene!)

Comunque credo che il problema siano i due ip che ha il gateway... se non hai messo un netmask adeguata i pacchetti che sono nella LAN del gateway non sapranno come uscire.

se il gateway VOIP e' configurato cosi' (ripeto.. non conosco i gateway voip.. faccio finta che sia come un computer normale!):
wan ip: 192.168.0.220 netmask 255.255.255.0
lan ip: 192.168.0.221 netmask 255.255.255.0
ed ha impostato come default gw 192.168.0.254
In questa maniera hai su due interfacce fisiche diverse la stessa sottorete, e credo che il tutto crei diversi probelmi!

La soluzione e' o quella di mettere una rete diversa sulla lan del gateway voip (quindi un ip del tipo 192.168.1.221.. e ovviamente devi cambiare anche tutti gli ip degli apparecchi voip di conseguenza) o impostare le maschere in maniera corretta (magari usa gip per farlo senza dover fare a mano!)

Ciao

Premetto che anche per me è il primo Gatway VoIP che vedo, comunque ho già fatto anche questa prova, però non ho avuto risultati positivi.
Però, visti gli impegni di lavoro che non mi lasciano più di tanto tempo per fare prove serie e con serenità, prima di chiedere ulteriore aiuto, devo trovare il tempo di fare un po' di prove serie con serenità e concentrazione................... (ma quando mai sarà???) :D :sofico:

Ciao.