Newsgroup: it.comp.os.linux.sys
Titolo: Three-legged Model

Sto cerando di costruire una rete con questa struttura :
              |----------|
              | Internet |
              |----------|
                    |
              |----------|
              |  Router  |
              |----------|
                    |
              |----------|
              | Firewall |
              -----------|
                  |  |
       |----------|  |----------|
       |                        |
|--------------|     |-------------------------|
|     Hub      |     | Server Web,Ftp,DNS,Mail |
|--------------|     |-------------------------|
       |
|--------------|
| Rete Interna |
|--------------|
Il Firwall e' una linux box con 3 schede di rete. Ho trovato su un
manuale di sicurezza per reti la configurazione per questo tipo di
reti, ma non specifica i parametri da assegnare all'interfaccia eth0 (
quella rivolta verso l'esterno ). Qualcuno puo' darmi una mano ? Sul
Firewall e' presente il kernel 2.6.13 mentre sul server il 2.4.31.
Grazie :)

 |--------------|
Parametri in che senso scusa?? Intendo una volta che hai configurato la
tua scheda per guardare verso il router con l'indirizzo ip corretto e
riesci a raggiungere l'esterno da li' (e viceversa) la configurazione
sulla scheda č finita.Dopo poi si interviene in realtŕ sulle policy del
firewall e sul suo sistema di natting...Un'altra domanda vedo che nella
DMZ hai inserito il server dns ma č un dns primario?Altrimenti dovresti
inserirlo per la tua rete interna a meno che non voglia far accedere la
tua LAN nella DMZ (orresco refens...:) !!)
Ciao Gabriele 
-- 
--=Coltivate Linux...Windows si pianta da solo=--
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Nel manuale ci sono delle regole per il firewall che permette alla LAN
di accedere a DMZ.

 di accedere a DMZ.
Mah personalmente non lo trovo molto sicuro dato che in teoria nella dmz
ci dovrebbero stare solamente i servizi che il mondo internet deve
raggiungere, il suo senso infatti è che se succede qualcosa al tuo server
(crack o "ingresso" non desiderato) si fermi li' e non vada oltre...invece
se permetti l'accesso dalla LAN alla DMZ la direzionalità, non perforza in
effetti, ma quasi deve essere in entrambe le direzioni se vuoi una
risposta dal servizio che stai interrogando, e questo porta a probabili
falle nella sicurezza (exploit vari ne esistono fin troppi purtroppo).
Questo per lo meno è la mia personale esperienza,al di là di questo cmq
hai risolto il tuo problema?? 


Sto impostando il firewall, lunedi' lo collego alla linea adsl ed
inizio i tests nella rete locale. Poi colleghero' il server.

Ah ho un problema, volevo includere ( come consigliato dal manuale ) un
elenco di domini da bloccare. Nel file delle direttive iptables diceva
di inserire questo ciclo for :
for host in 'cat /usr/local/etc/hosts.deny'; do
$IPT -I INPUT -s $host -j DROP
$IPT -I FORWARD -s $host -j DROP
$IPT -I OUTPUT -d $host -j DROP
$IPT -I FORWARD -d $host -j DROP
done
ma non funziona. Quando carico le regole mi da errore. :(

Ho collegato la LAN al firewall e non ho avuto alcun problema. Ora
pero' devo collegare il server nella DMZ ad Internet. Ho costruito
questo script di avvio del firewall, ma non riesco ad accedere al sito
sul server inserendo l'indirizzo ip statico che mi e' stato assegnato
dal provider.
#!/bin/sh
echo "Inizializzazione regole firewall"
IF_EXT="eth0"
IF_DMZ="eth1"
IF_LAN="eth2"
IP_EXT="192.168.1.100"
IP_LAN="192.168.2.1"
IP_DMZ="192.168.0.1"
NAME_SERVER="212.xx.xx.xx"
LAN_ADDR="
192.168.2.0/24
"
DMZ_ADDR="
192.168.0.0/24
"
EXT_ADDR1="212.xx.xx.xx"
EXT_ADDR2="212.xx.xx.xy"
EXT_ADDR3="212.xx.xx.yy"
DMZ_HTTP="192.168.0.2"
DMZ_DNS="192.168.0.2"
DMZ_EMAIL="192.168.0.2"
IP_CONSOLE="192.168.2.6"
IP_DHCP="0.0.0.0"
LOOPBACK_INTERFACE="lo"
LOOPBACK_IP="127.0.0.1"
PRIVPORTS="0:1023"
UNPRIVPORTS="1024:65535"
IPT="/usr/sbin/iptables"
# Abilitazione IP forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
# Abilitazione IP Dinamico
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
# Caricamento Moduli
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
# Disabilitazione del Source Routing
for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
    echo 0 > $f
done
# Droppa gli Spoofed Packets che arrivano all'interfaccia
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 1 > $f
done
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
    echo 0 > $f
done
for f in /proc/sys/net/ipv4/conf/*/secure_redirects; do
    echo 1 > $f
done
# Non invia messaggi di redirezione
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
    echo 0 > $f
done
# Protezione dai segnali di Broadcast
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Logga i pacchetti con indirizzo impossibile
for f in /proc/sys/net/ipv4/conf/*/log_martians; do
    echo 1 > $f
done
echo 200 > /proc/sys/net/ipv4/icmp_ratelimit
echo   1 > /proc/sys/net/ipv4/tcp_syncookies
echo 256 > /proc/sys/net/ipv4/tcp_max_syn_backlog
# Azzeramento delle regole pre esistenti
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
# Definizione della politica di Firewall ( DROP )
$IPT -P INPUT   DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT  DROP
# Abilitazione connessione di loopback
$IPT -A INPUT  -i $LOOPBACK_INTERFACE -j ACCEPT
$IPT -A OUTPUT -o $LOOPBACK_INTERFACE -j ACCEPT
# Nessuna nuova connessione viene accettata da e dal Firewall
$IPT -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Regole per l'accesso da Internet alla DMZ :
$IPT -t nat -A PREROUTING -i $IF_EXT -p tcp --sport $PRIVPORTS   -d
$EXT_ADDR1 --dport 80 -j DNAT --to-destination $DMZ_HTTP
$IPT -t nat -A PREROUTING -i $IF_EXT -p tcp --sport $UNPRIVPORTS -d
$EXT_ADDR1 --dport 80 -j DNAT --to-destination $DMZ_HTTP
$IPT -A FORWARD -i $IF_EXT -o $IF_DMZ -p tcp --sport $PRIVPORTS   -d
$DMZ_HTTP --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_EXT -o $IF_DMZ -p tcp --sport $UNPRIVPORTS -d
$DMZ_HTTP --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_DMZ -o $IF_LAN -m state --state
ESTABLISHED,RELATED -j ACCEPT
# Servizio di HTTP e HTTPS su server in DMZ
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $LAN_ADDR --sport
$UNPRIVPORTS -d $DMZ_HTTP  --dport 80  -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $LAN_ADDR --sport
$UNPRIVPORTS -d $DMZ_HTTP  --dport 443 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
# Servizio di FTP su server in DMZ
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $LAN_ADDR --sport
$UNPRIVPORTS -d $DMZ_HTTP  --dport 20  -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $LAN_ADDR --sport
$UNPRIVPORTS -d $DMZ_HTTP  --dport 21  -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $LAN_ADDR --sport
$UNPRIVPORTS -d $DMZ_HTTP  --dport 22  -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
# Servizio di DNS su server in DMZ
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p udp -s $LAN_ADDR --sport
$UNPRIVPORTS -d $DMZ_DNS   --dport 53  -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $LAN_ADDR --sport
$UNPRIVPORTS -d $DMZ_DNS   --dport 53  -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
# Servizio di SMTP su server in DMZ
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $LAN_ADDR --sport
$UNPRIVPORTS -d $DMZ_EMAIL --dport 25  -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
# Servizio di POP3 su server in DMZ
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $LAN_ADDR --sport
$UNPRIVPORTS -d $DMZ_EMAIL --dport 110 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
# Abilitazione del traffico di ritorno tra server in DMZ e LAN
$IPT -A FORWARD -i $IF_DMZ -o $IF_LAN -m state --state
ESTABLISHED,RELATED -j ACCEPT
$IPT -t nat -A POSTROUTING -o $IF_EXT -j MASQUERADE
$IPT -A FORWARD -i $IF_LAN -o $IF_EXT -p tcp  -s $LAN_ADDR --sport
$UNPRIVPORTS -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_EXT -p udp  -s $LAN_ADDR --sport
$UNPRIVPORTS -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_EXT -p icmp -s $LAN_ADDR -m state
--state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_EXT -o $IF_LAN -m state --state
ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i $IF_LAN -p tcp --dport 22 -s $IP_CONSOLE -j ACCEPT
# Catena LOGDROP per monitorare i pacchetti mal formati o di dubbia
provenienza
$IPT -N LOGDROP
$IPT -A LOGDROP -s 
10.0.0.0/8
 -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -s 
10.0.0.0/8
 -j DROP
$IPT -A LOGDROP -s 
127.16.0.0/12
 -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -s 
127.16.0.0/12
 -j DROP
# Gli indirizzi 192.168.0.0 - 192.168.0.255 sono validi solo se
originati da DMZ
$IPT -A LOGDROP -i $IF_EXT -s 
192.168.0.0/24
 -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -i $IF_EXT -s 
192.168.0.0/24
 -j DROP
$IPT -A LOGDROP -i $IF_LAN -s 
192.168.0.0/24
 -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -i $IF_LAN -s 
192.168.0.0/24
 -j DROP
# Gli indirizzi 192.168.2.0 - 192.168.2.255 sono validi solo se
originati dalla LAN
$IPT -A LOGDROP -i $IF_EXT -s 
192.168.2.0/24
 -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -i $IF_EXT -s 
192.168.2.0/24
 -j DROP
$IPT -A LOGDROP -i $IF_DMZ -s 
192.168.2.0/24
 -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -i $IF_DMZ -s 
192.168.2.0/24
 -j DROP
# Indirizzi riservati di Broadcast e Loopback
$IPT -A LOGDROP -s 
169.254.0.0/16
 -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -s 
169.254.0.0/16
 -j DROP
$IPT -A LOGDROP -s 
192.0.2.0/16
   -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -s 
192.0.0.0/16
   -j DROP
$IPT -A LOGDROP -s 
0.0.0.0/8
      -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -s 
0.0.0.0/8
      -j DROP
$IPT -A LOGDROP -s 
224.0.0.0/4
     -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -s 
224.0.0.0/4
     -j DROP
$IPT -A LOGDROP -s 
240.0.0.0/5
     -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -s 
240.0.0.0/5
     -j DROP
$IPT -A LOGDROP -s 
127.0.0.0/8
     -j LOG --log-prefix
"Illegal_source_address"
$IPT -A LOGDROP -s 
127.0.0.0/8
     -j DROP
# Blocco dei pacchetti destinati al Broadcast
$IPT -A LOGDROP -d 255.255.255.255 -j LOG --log-prefix
"Illegal_des_source"
$IPT -A LOGDROP -d 255.255.255.255 -j DROP
$IPT -I INPUT   -j LOGDROP
$IPT -I OUTPUT  -j LOGDROP
$IPT -I FORWARD -j LOGDROP
-----------------------------
Il router e' uno zyxel sul quale e' abilitato il natting ( ho provato a
disabilitarlo ma non si riesce piu' a navigare ). Ho abilitato
l'accesso WAN -> LAN sul router e ho disabilitato il firewall del
router. Qualcuno ha idea del perche' non vada ? 
grazie
Andrea

Guarda, per come la vedo io, dovresti fare un tunnel nel nat del router
per ogni
servizio a cui vuoi dare accesso nella DMZ. Non facendo questo, il nat
del router cambierà sempre le porte di provenienza delle connessioni,
ed il firewall non riconoscerà mai una connessione come proveniente
sulla es. 80 per redirigerla alla DMZ, ma la vedrà venire dalla porta
che il nat del router ha deciso di dargli. Fammi sapere :)
Lord


Ho fatto come mi hai consigliato, impostando nel router il NAT verso
l'ip del server in DMZ, ma non sembra funzionare. 
:-(