====== 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 ===== {{rete:rete_codir.png|}} ===== Script di configurazione del firewall ===== Come potete vedere la rete è composta in realtà da 3 reti: - rete che va dal Modem/router al Firewall ( 10.0.0.0/24 ); - rete che va dal Firewall ai vari client negli uffici ( 10.0.2.0/24 ); - 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 % 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)...