Barra laterale

rete:tipica_rete_da_ufficio

Una tipica rete da ufficio

Autore: Fabio Di Matteo
Ultima revisione: 01/12/2007
…lavori in corso…

In questo articolo tenterò di illustrare una tipica rete che si potrebbe voler realizzare in un ufficio.

Schema della rete

Script di configurazione del firewall

Come potete vedere la rete è composta in realtà da 3 reti:

  1. rete che va dal Modem/router al Firewall ( 10.0.0.0/24 );
  2. rete che va dal Firewall ai vari client negli uffici ( 10.0.2.0/24 );
  3. rete che va dal Firewall ai nostri server , ovvero una piccola DMZ, ( 10.0.1.0/24 );
#!/bin/sh
# Configurazioni della interfacce di rete e regole di filtraggio


#Azzero la configurazione del netfilter
for table in nat mangle filter
do
   iptables -t $table -F
   iptables -t $table -X
done


#Azzero la configurazione delle interfacce di rete
(
for interface in eth0 eth1 eth2 
do
  ip route flush dev $interface
  ip addr flush dev $interface
  ip link set down dev $interface
done;
) &>/dev/null


# Carico il modulo per far funzionare FTP
modprobe ip_conntrack_ftp

#Regole di filtraggio del netfilter

#Definizione delle Catene
iptables -N lan-dmz       #dalla scheda di rete eth2 alla scheda di rete eth1
iptables -N lan-inet      #dalla scheda di rete eth2 alla scheda di rete eth0
iptables -N dmz-inet      #dalla scheda di rete eth1 alla scheda di rete eth0
iptables -N dmz-lan       #dalla scheda di rete eth1 alla scheda di rete eth2
iptables -N inet-dmz      #dalla scheda di rete eth0 alla scheda di rete eth1
iptables -N inet-lan      #dalla scheda di rete eth0 alla scheda di rete eth2

iptables -A FORWARD -i eth2 -o eth1 -j lan-dmz
iptables -A FORWARD -i eth2 -o eth0 -j lan-inet
iptables -A FORWARD -i eth1 -o eth0 -j dmz-inet
iptables -A FORWARD -i eth1 -o eth2 -j dmz-lan
iptables -A FORWARD -i eth0 -o eth1 -j inet-dmz
iptables -A FORWARD -i eth0 -o eth2 -j inet-lan



# Politica di default da applicare ---------
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A FORWARD -j LOG --log-prefix="FORWARD: "
#-------------------------------------------




# Dalla LAN alla DMZ -----------------------------------------
iptables -A lan-dmz -s ! 10.0.2.0/24 -j DROP
iptables -A lan-dmz -p tcp -d 10.0.1.2 --dport 3128 -j ACCEPT
iptables -A lan-dmz -p tcp -d 10.0.1.2 --dport 8080 -j ACCEPT

iptables -A lan-dmz -p tcp -d 10.0.1.3 --dport www -j ACCEPT
iptables -A lan-dmz -p tcp -d 10.0.1.3 --dport smtp -j ACCEPT
iptables -A lan-dmz -p tcp -d 10.0.1.3 --dport smtp -j ACCEPT
iptables -A lan-dmz -p tcp -d 10.0.1.3 --dport pop3 -j ACCEPT

iptables -A lan-dmz -m state --state  ESTABLISHED,RELATED -j ACCEPT
#-------------------------------------------------------------




# Dalla DMZ alla LAN ---------------------------------------------
iptables -A dmz-lan -s ! 10.0.1.0/24 -j DROP
#iptables -A dmz-lan -p tcp -j REJECT --reject-with tcp-reset
iptables -A dmz-lan -m state --state ESTABLISHED,RELATED -j ACCEPT
#-----------------------------------------------------------------



# Dalla LAN ad INTERNET  ---------------------------------------------
iptables -A lan-inet -s ! 10.0.2.0/24 -j DROP
iptables -A lan-inet -p tcp --dport 80 -j ACCEPT
iptables -A lan-inet -p tcp --dport 443 -j ACCEPT
iptables -A lan-inet -p tcp --dport 465 -j ACCEPT
iptables -A lan-inet -p tcp --dport 995 -j ACCEPT
iptables -A lan-inet -p tcp --dport ftp -j ACCEPT
iptables -A lan-inet -p tcp --dport 1863 -j ACCEPT
iptables -A lan-inet -p tcp --dport 5190 -j ACCEPT
iptables -A lan-inet -p tcp --dport 5222 -j ACCEPT
iptables -A lan-inet -p tcp --dport 6667 -j ACCEPT
iptables -A lan-inet -p tcp --dport 25 -j ACCEPT
iptables -A lan-inet -p tcp --dport 110 -j ACCEPT
iptables -A lan-inet -p tcp --dport 53 -m state --state NEW  -j ACCEPT
iptables -A lan-inet -p udp --dport 53 -m state --state NEW -j ACCEPT
# [..Inserire qui tutte le altre porte dei servizi verso internet..]


iptables -A lan-inet -m state --state  ESTABLISHED,RELATED -j ACCEPT
#iptables -A lan-inet -p tcp -j REJECT --reject-with tcp-reset
#---------------------------------------------------------------------




# Da Internet alla LAN -----------------------------------------------
iptables -A inet-lan -s 10.0.2.0/24 -j DROP
iptables -A inet-lan -s 10.0.1.0/24 -j DROP
iptables -A inet-lan -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A inet-lan -p tcp -j REJECT --reject-with tcp-reset
#---------------------------------------------------------------------




# Da Internet alla DMZ ------------------------------------------------
iptables -A inet-dmz -s 10.0.1.0/24 -j DROP
iptables -A inet-dmz -s 10.0.2.0/24 -j DROP
iptables -A inet-dmz -p tcp -d 10.0.1.3 --dport www -j ACCEPT
iptables -A inet-dmz -p tcp -d 10.0.1.3 --dport smtp -j ACCEPT
iptables -A inet-dmz -p tcp -d 10.0.1.3 --dport ftp -j ACCEPT 

iptables -A inet-dmz -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A inet-dmz -p tcp -j REJECT --reject-with tcp-reset
#----------------------------------------------------------------------



# Dalla DMZ ad Internet -----------------------------------------------
iptables -A dmz-inet -s ! 10.0.1.0/24 -j DROP
iptables -A dmz-inet -p tcp -s 10.0.1.3 --dport smtp -j ACCEPT
iptables -A dmz-inet -p tcp --dport 80  -j ACCEPT
iptables -A dmz-inet -p tcp -s 10.0.1.2 --dport 443 -j ACCEPT
iptables -A dmz-inet -p tcp -s 10.0.1.2 --dport 21 -j ACCEPT
iptables -A dmz-inet -p tcp -s 10.0.1.2 --dport 3128 -j ACCEPT

iptables -A dmz-inet -p udp  --dport 53 -m state --state NEW -j ACCEPT 
iptables -A dmz-inet -p tcp --dport 53 -m state --state NEW -j ACCEPT


iptables -A dmz-inet  -m state --state ESTABLISHED,RELATED  -j ACCEPT
iptables -A dmz-inet -p tcp -j REJECT --reject-with tcp-reset
#----------------------------------------------------------------------



# Traffico entrata/uscita del il firewall -------------------------------
iptables -A INPUT -m limit --limit 10/min -p tcp --syn --dport ssh -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

iptables -A OUTPUT -p tcp -d 10.0.1.2 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -d 10.0.1.3 --dport 22 -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#-------------------------------------------------------------------------



# Regole per il nat sulla DMZ -----------------------------------------------------------------

# ... per far navigare la DMZ e la LAN ...
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.4

# oppure usando un range di indirizzi:
#iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j SNAT --to-source 192.168.1.4
#iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j SNAT --to-source 192.168.1.4


# ... per dirottare la navigazione sulla porta 80 sul proxy
iptables -t nat -A PREROUTING -i eth2 -p tcp -d ! 10.0.1.3 --dport 80 -j DNAT --to-destination 10.0.1.2:3128

# ... per dirottare la navigazione dall'esterno sul nostro webserver
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.1.3:80
#----------------------------------------------------------------------------------------------




# Configurazione delle interfacce di rete ------------------------------------------------------

ip addr add 192.168.1.4/24 dev eth0
ip addr add 10.0.1.1/24 dev eth1
ip addr add 10.0.2.1/24 dev eth2

ip link set eth0 up
ip link set eth1 up
ip link set eth2 up


#Imposto il default gateway 
ip route add default via 192.168.1.1 dev eth0

#Imposto i server dei nomi (quelli di libero in questo caso)
echo "nameserver 193.70.152.15" > /etc/resolv.conf
echo "nameserver 193.70.152.25" >> /etc/resolv.conf

#Abilito la condivisione del collegamento 
echo 1 > /proc/sys/net/ipv4/ip_forward

#Aumento il numero delle connessioni tracciabili
echo 16384 > /proc/sys/net/ipv4/ip_conntrack_max

# ---------------------------------------------------------------------------------------------------

Configurazione del Proxy

Il proxy in questione è Squid in ascolto sulla porta 3128, che fa da genitore ad un altro proxy , HavP, specializzato nella scansione dei virus grazie a ClamAV.
Abbiamo usato questa configurazione in quanto siamo più orientati alla scansione dei virus che al filtro dei contenuti.

Per quanto riguarda la configurazione delle interfacce di rete ci affidiamo al solito nostro script:

#!/bin/sh
# Configurazioni della interfacce di rete

(
        for interface in eth0 
        do
            ip route flush dev $interface
            ip addr flush dev $interface
            ip link set down dev $interface
        done;
  ) &>/dev/null



ip addr add 10.0.1.2/24 dev eth0
ip link set eth0 up
ip route add default via 10.0.1.1 dev eth0

echo "nameserver 193.70.152.15" > /etc/resolv.conf      
echo "nameserver 193.70.152.25" >> /etc/resolv.conf


echo 1 > /proc/sys/net/ipv4/ip_forward

ecco le righe da aggiungere ad /etc/squid/squid.conf

#Regola per far navigare la nostra rete 
acl ipconsentiti src 10.0.2.0/24

#Abilito la regola precedentemente scritta
http_access allow ipconsentiti

#Abilito il trasparent proxing sul mio sever
http_port 127.0.0.1:3128  transparent
http_port 10.0.1.2:3128  transparent

Si può intervenire direttamente specificando il formato del log direttamente in /etc/squid/squid.conf aggiungendo per esempio:

logformat squid  %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st %Ss:%Sh

Per la leggenda dei tag vi rimando al file /etc/squid/squid.conf basta cercare “Log” per trovarla.

Aggiungiamo le regole per HavP nel file /etc/squid/squid.conf

# Per Havp

# Si crea una acl riguardante solo il protocollo HTTP
# perchè havp non supporta altri protocolli
acl Scan_HTTP proto HTTP
never_direct allow Scan_HTTP

# Redirect verso havp
cache_peer 127.0.0.1 parent 8080 0 no-query no-digest no-netdb-exchange default
cache_peer_access 127.0.0.1 allow Scan_HTTP

Configuriamo HavP

Assicuriamoci che il file di configurazione di Havp /etc/havp/havp.conf contenga le seguenti righe:

# Quando impostata a "true" logga l'ip del client da cui è arrivata la richiesta a squid,
# al posto di loggare direttamente l'ip di squid che in questo caso sarebbe 127.0.0.1
FORWARDED_IP true

# Questa opzione permette di mettere il demone in ascolto solo su un determinato indirizzo
BIND_ADDRESS 127.0.0.1

# Con questa opzione si puo' impostare la directory contenente i template delle pagine
# che havp mostra in caso di errori vari o quando rileva la presenza di virus
TEMPLATEPATH /etc/havp/templates/it

Aggiorniamo ClamAV giornalmente

Mettiamo dentro la directory /etc/cron.daily uno script che permetta di aggiornare l'antivirus tipo questo:

#!/bin/sh
freshclam &
exit 0

Configurazione del web server

…(da ultimare)…


rete/tipica_rete_da_ufficio.txt · Ultima modifica: 18/04/2018 - 15:49 (modifica esterna)