Newsgroup: it.comp.os.linux.sys
Titolo: ip forwarding, firewall, routing...

Ciao,
sto configurando un pc linux come firewall. Ho montato 3 schede di rete,
abilitato il routing e tutte le opzioni varie sul kernel (ricompilato e
sostituito a quello vecchio), ho fatto lo script con ipchains, tutto fatto,
ma non ne vuole sapere di funzionare. La versione di linux che ho usato è la
Mandrake 7.1
Uso 3 schede perché una è connessa ad internet, una ad una rete di pc client
del tipo 192.168.1.x ed una alla rete dei server del tipo 217.59.0.x
Praticamente ho creato una piccola subnet per i server con un po' degli
indirizzi che mi hanno assegnato per internet.
Il tutto è collegato poi al router e poi alla linea dedicata
ipchains funziona, perché le porte le ha chiuse, ma se da un server o un pc
client tento di uscire non ce la faccio.
Ho seguito il tutorial su ipchains (ipchains HowTo di 
pluto.linux.it
) e
secondo me è pure logico, ma nulla.
Ho tentato anche di usare iproute2 per sistemare le tabelle di routing, ma
sembra non funzionare.
Avete qualche suggerimento?
Sono disperatissimo
--
Ettore Iacomussi
Java/C++ Developer & Webdesigner
Wap & Web Applications
http://www.bytecode.it
http://wap.bytecode.it
http://bcommerce.bytecode.it
ICQ: 62626910 - E-Mail: 
webm...@bytecode.it

 wrote in message
8vbv6b$caq$1...@fe2.cs.interbusiness.it...


 client tento di uscire non ce la faccio.
hai provato a dire di accettare i tcp non syn e gli udp > 1024? :)
un mayhem posta lo script che lo si guarda e commenta assieme
--
cosa bisogna scrivere in questo riquadro?

#!/bin/sh
IPCHAINS="/sbin/ipchains"
DMZNET="
151.4.237.253/255.255.255.252
"
LOCALNET="
192.168.1.0/24
"
MAINSERVER="151.4.237.142"
IPDMZ="151.4.237.141"
IPGOOD="192.168.1.1"
IPBAD="151.4.237.140"
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $i
done
# Flush delle regole sulle tre catene
$IPCHAINS -F input
$IPCHAINS -F output
$IPCHAINS -F forward
#Proibisco tutto
#$IPCHAINS -A input -i ! lo -j DENY
#$IPCHAINS -A output -i ! lo -j DENY
#$IPCHAINS -A forward -j DENY
#Suddivido tutto in più catene
# - dmz sono i server
# - good i pc client
# - bad gli altri (internet)
$IPCHAINS -N good-dmz
$IPCHAINS -N bad-dmz
$IPCHAINS -N good-bad
$IPCHAINS -N dmz-good
$IPCHAINS -N dmz-bad
$IPCHAINS -N bad-good
#Creo la catena degli errori icmp standard
$IPCHAINS -N icmp-acc
#Setto i salti di forwarding e faccio il log degli errori
$IPCHAINS -A forward -s $LOCALNET -i eth1 -j good-dmz
$IPCHAINS -A forward -s $LOCALNET -i eth0 -j good-bad
$IPCHAINS -A forward -s $DMZNET -i eth0 -j dmz-bad
$IPCHAINS -A forward -s $DMZNET -i eth2 -j dmz-good
$IPCHAINS -A forward -i eth1 -j bad-dmz
$IPCHAINS -A forward -i eth2 -j bad-good
#$IPCHAINS -A forward -j DENY -l
#Setto la catena degli icmp
$IPCHAINS -A icmp-acc -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPCHAINS -A icmp-acc -p icmp --icmp-type source-quench -j ACCEPT
$IPCHAINS -A icmp-acc -p icmp --icmp-type time-exceeded -j ACCEPT
$IPCHAINS -A icmp-acc -p icmp --icmp-type parameter-problem -j ACCEPT
#Abilito i client a poter usare i servizi principali del server MAINSERVER
$IPCHAINS -A good-dmz -p tcp -d $MAINSERVER smtp -j ACCEPT
$IPCHAINS -A good-dmz -p tcp -d $MAINSERVER pop3 -j ACCEPT
$IPCHAINS -A good-dmz -p udp -d $MAINSERVER domain -j ACCEPT
$IPCHAINS -A good-dmz -p tcp -d $MAINSERVER domain -j ACCEPT
$IPCHAINS -A good-dmz -p tcp -d $MAINSERVER www -j ACCEPT
$IPCHAINS -A good-dmz -p tcp -d $MAINSERVER rsync -j ACCEPT
#$IPCHAINS -A good-dmz -j DENY -l
#Abilito da bad a dmz
$IPCHAINS -A bad-dmz -p tcp -d $MAINSERVER smtp -j ACCEPT
$IPCHAINS -A bad-dmz -p udp -d $MAINSERVER domain -j ACCEPT
$IPCHAINS -A bad-dmz -p tcp -d $MAINSERVER domain -j ACCEPT
$IPCHAINS -A bad-dmz -p tcp -d $MAINSERVER www -j ACCEPT
$IPCHAINS -A bad-dmz -p icmp -j icmp-acc
#$IPCHAINS -A bad-dmz -j DENY -l
#Abilito i client ad uscire su bad
$IPCHAINS -A good-bad -p tcp --dport www -j MASQ
$IPCHAINS -A good-bad -p tcp --dport 23 -j MASQ
$IPCHAINS -A good-bad -p tcp --dport ssh -j MASQ
$IPCHAINS -A good-bad -p udp --dport 33434:33500 -j MASQ
$IPCHAINS -A good-bad -p tcp --dport ftp -j MASQ
$IPCHAINS -A good-bad -p icmp --icmp-type ping -j MASQ
#$IPCHAINS -A good-bad -j REJECT -l
#Da dmz ai client
$IPCHAINS -A dmz-good -p tcp ! -y -s $MAINSERVER smtp -j ACCEPT
$IPCHAINS -A dmz-good -p udp -s $MAINSERVER domain -j ACCEPT
$IPCHAINS -A dmz-good -p tcp ! -y -s $MAINSERVER domain -j ACCEPT
$IPCHAINS -A dmz-good -p tcp ! -y -s $MAINSERVER www -j ACCEPT
$IPCHAINS -A dmz-good -p tcp ! -y -s $MAINSERVER rsync -j ACCEPT
$IPCHAINS -A dmz-good -p icmp -j icmp-acc
#$IPCHAINS -A dmz-good -j DENY -l
#Da dmz a bad
$IPCHAINS -A dmz-bad -p tcp -s $MAINSERVER smtp -j ACCEPT
$IPCHAINS -A dmz-bad -p udp -s $MAINSERVER domain -j ACCEPT
$IPCHAINS -A dmz-bad -p tcp -s $MAINSERVER domain -j ACCEPT
$IPCHAINS -A dmz-bad -p tcp ! -y -s $MAINSERVER www -j ACCEPT
$IPCHAINS -A dmz-bad -p icmp -j icmp-acc
#$IPCHAINS -A dmz-bad -j DENY -l
#Non permetto a nussuno di entrare sui client da bad
#$IPCHAINS -A bad-good -j REJECT
# 
doubleclick.net
 - Nessuna macchina ci si connetta !
$IPCHAINS -A output -s $LOCALNET -d 
199.95.207.0/24
 -j REJECT
$IPCHAINS -A output -s $LOCALNET -d 
199.95.208.0/24
 -j REJECT
#Filtraggio dei pacchetti per il firewall
$IPCHAINS -N bad-ipf
$IPCHAINS -N dmz-ipf
$IPCHAINS -N good-ipf
$IPCHAINS -A input -d $IPBAD -j bad-ipf
$IPCHAINS -A input -d $IPDMZ -j dmz-ipf
$IPCHAINS -A input -d $IPGOOD -j good-ipf
$IPCHAINS -A bad-ipf -i ! eth2 -j DENY -l
$IPCHAINS -A bad-ipf -p TCP --dport 61000:65095 -j ACCEPT
$IPCHAINS -A bad-ipf -p UDP --dport 61000:65095 -j ACCEPT
$IPCHAINS -A bad-ipf -p ICMP --icmp-type pong -j ACCEPT
$IPCHAINS -A bad-ipf -j icmp-acc
#$IPCHAINS -A bad-ipf -j DENY
$IPCHAINS -A dmz-ipf -i ! eth1 -j DENY -l
$IPCHAINS -A dmz-ipf -p TCP ! -y -s $MAINSERVER 53 -j ACCEPT
$IPCHAINS -A dmz-ipf -p UDP -s $MAINSERVER 53 -j ACCEPT
$IPCHAINS -A dmz-ipf -p ICMP --icmp-type pong -j ACCEPT
$IPCHAINS -A dmz-ipf -j icmp-acc
#$IPCHAINS -A dmz-ipf -j DENY -l
$IPCHAINS -A good-ipf -i ! eth0 -j DENY
$IPCHAINS -A good-ipf -p ICMP --icmp-type ping -j ACCEPT
$IPCHAINS -A good-ipf -p ICMP --icmp-type pong -j ACCEPT
$IPCHAINS -A good-ipf -j icmp-acc
#$IPCHAINS -A good-ipf -j DENY
# Rifiuta pacchetti con indirizzi definiti riservati dall'IANA
....
....
#cancello le regole di bloccaggio
#$IPCHAINS -D input 1
#$IPCHAINS -D forward 1
#$IPCHAINS -D output 1

 client tento di uscire non ce la faccio.
Hai abilitato il forwarding? 
prova a fare cat /proc/sys/net/ipv4/ip_forward.
Se ti da' 1, allora e' ok (sempre che tu abbia abilitato il forwarding 
anche in ipchains).
-- 
* Jotaro Kujo *
 Can't you see the end
 Twentieth Century Man ? 

 wrote in message
news:MPG.14832dc0b...@news.libero.it...


 
Ciao,
probabilmente sia i server che i client sono macchine 9x/NT, giusto?
In questo caso hai un problema con lo stack tcp/ip del dos che č 
"broken". Ho avuto un problema simile al tuo, la macchina firewall usciva 
tranquillamente su internet, ma non la subnet dietro di lei.
Il problema nel mio caso (e forse anche nel tuo) era che le macchine 
9x/nt non riuscivano a risolvere correttamente l'arp della scheda 
collegata al router. Cosě ho duvuto aggiustare le tabelle del kernel con 
il comando arp (vedi man per la sintassi) e tutto funziona a meraviglia.
Ti consiglio di dare un'occhiata alla Network Administrator's Guide, 
cerca "arp" o "broken tcp" e lě ti dice come fare.
Inoltre potresti usare tcpdump per vedere cosa succede sulle tre schede 
di rete e fare un debug (es. tcpdump -i eth0).
Spero di esserti stato utile.
Sancho

Tutto linux