Newsgroup: it.comp.os.linux.sys
Titolo: netfilter e MySQL

Ciao ragazzi,
vi posto un problema che non sono riuscito in nessun modo a risolvere..
ho una box Linux che funziona da firewall tra una lan ed internet: quindi ha
due IFs:
eth0 - ip lan interna 10.0.0.205
eht1 - ip pubblico internet 200.1.2.24
La distro utilizzata č una Mandrake 8.1 + netfilter + Bastille
Sulla lan interna ho un DB server con mySQL cui vorrei dare accesso
dall'esterno della rete (ip 10.0.0.50).
A questo punto mi sono detto.. "ok, un bel portforwarding e tutto si
risolve" :))) magari!! :((((
Ho provato i seguenti comandi:
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth1 -d 200.1.2.24 --dport
3306 -j DNAT --to 
10.0.0.50:3306
/sbin/iptables -A FORWARD -p tcp -i eth1 -d 10.0.0.50 --dport 3306 -j ACCEPT
ma il risultato che ottengo č sempre lo stesso:
ERROR 2003: Can't connect to MySQL server on '200.1.2.24' (10060).
Qualche suggerimento?
Ciao e grazie in anticipo
Bruno Salzano

Qualche suggerimento?
1) Prova ad abilitare la porta anche sulla chain di input
/sbin/iptables -A INPUT -p tcp -i eth1 -d 10.0.0.50 --dport 3306 -j ACCEPT
2) assicurati che il modulo conn_track sia attivato
3) prova ad inserire le regole in testa alla chain anziche' in fondo.
Ciao
Alessandro.

 /sbin/iptables -A FORWARD -p tcp -i eth1 -d 10.0.0.50 --dport 3306 -j ACCEPT
- Hai caricato l'ipconntrack?
- Hai abilitato le risposte in senso inverso ? ( -m state --state 
ESTABLISHED -j ACCEPT )
Se la risposta č sě a entrambi:
- Prova a inserire una rule di log un forward, per vedere se il DNAT 
viene matchato correttamente.
- Prova a sniffare la sessione di connessione con tcpdump dalla macchina 
dove gira mysql.
byez
-- 
Emanuele "SKULL" Balla
----------------------------------------------------------------------
"How should I know if it works?  That's what beta testers are for. I
only coded it." (Attributed to Linus Torvalds, somewhere in a posting)

>/sbin/iptables -A FORWARD -p tcp -i eth1 -d 10.0.0.50 --dport 3306 -j ACCEPT
Uhm dovro' decidermi, prima o poi, a studiarmi per bene la sintassi di
'sto iptables..
-- 
- Le scaglie della mia corazza sono come scudi dieci volte piu' potenti
  i miei denti sono spade, i miei artigli lance, lo sferzare della 
  mia coda una saetta, le mie ali un uragano ed il mio alito MORTE !


Ok proverò


3306 -j DNAT --to 
10.0.0.50:3306
oltre agli altri suggerimenti che ti hanno dato:
come e' impostato il gateway di default sulla macchina 10.0.0.50?
     Paolo

 magari con un semplice esempio?
Era tra parentesi: se la tua regola è
iptables -A FORWARD -p tcp -i eth1 -d 10.0.0.50 --dport 3306 -j ACCEPT
Questa regola permette il passaggio dei pacchetti che vanno _verso_ la 
10.0.0.50:3306
 , ma nulla dice riguardo ai pacchetti che da questa 
macchinia tornano indietro verso chi ha fatto la richiesta.
Se l'ipconntrack è caricato, puoi abilitare i ritorni a tutte le 
connessioni "lecite" con la regola
iptables -A FORWARD -p tcp -m state --state ESTABLISHED -J ACCEPT
Per info cerca l'ip_conntrack document postato qualche giorno fa (e che 
io non ricordo, troppo pigro per cercare nel bookmark, sorry...)
In ogni caso tieni presente che:
- Se mysql apre altre porte dal lato server quando necessario (ma non mi 
risulta), non ti basta un ESTABLISHED ma c'è bisogno di un helper per il 
conntrack specifico delle sessioni mysql (ma non mi risulta che esista, 
per cui immagino che mysql abbia un comportamento "liscio"). Per 
chiarire che intendo pensa al comportamento del servizio ftp...
- la regola che ho passato sarebbe meglio diventasse (ma è questione di 
gusti...) una
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -J ACCEPT
così i pacchetti di risposta _non_ appartenenti alla connessione in atto 
(pensa agli icmp port unreachable) sono abilitati ad uscire.
- Se la macchina mysql dovesse uscire in qualche maniera _diversa_ dalla 
sessione instaurata sulla porta 3306 (vedi caso 1 in assenza di un 
helper specifico...), avresti bisogno di uno SNAT in postrouting. Per le 
risposte della sessione stabilita, invece, si arrangia il conntrack.
byez e in bocca al lof...


/sbin/iptables -A INPUT -p tcp -i eth1 -d 10.0.0.50 --dport 3306 -j ACCEPT
non serve: i pacchetti in entrata sono destinati ad un'altra macchina, per
cui vengono passati direttamente alla chain di forward
     Paolo

 ma il risultato che ottengo è sempre lo stesso:


 tranquillamente. Tuttavia, la connessione in ingresso viene RESETtata....
Premetto che non capisco esattamente se Bastille stia sulla macchina FW 
o sulla macchina SQL...
Peraltro neanche lo conosco (mai usato) e quindi non so esattamente 
quali features vanti...
Dovendo fare una analisi del problema, comunque, secondo me questo non 
sta nelle impostazioni di iptables ( a meno che tu non abbia regole di 
deny che non specifichi..) ma pare piů impotabile a qualcosa "nel mezzo"
Dovendone sparare una: per caso hai installato portsentry? O Bastille ha 
qualcosa di simile al comportamento di portsentry?
byez


 ha scritto nel messaggio
news:3D05E6DA...@skull.net...


Niente portsentry... come vorrei che fosse stato quello...
comunque io sto ancora testando una possibile causa, ma non so realmente
dove altro cercare.
Bastille non fa altro che impostare una serie di rules tra cui un SNAT per
effettuare la connessione ad internet (il firewall funziona anche da router)
e droppare tutte le connessioni (tranne quelle su porte/intervalli di porte
specificati).
Il database server non è installato sulla stessa macchina del firewall
(altrimenti che motivo avrei di fare un port-forwarding???)
Raga' sono disperato..
veramente...
Grazie ancora per i vostri post.

 specificati).
ecco perche' io questi tools non li posso vedere...
almeno su linux preferisco utilizzare i files di configurazione 
testuali, dove posso controllare ogni riga...
-- 
    Paolo