Skip to topic | Skip to bottom
Home
Web attivi: Reteisi | Pmb
user: TWikiGuest
Registrazione | Mappa | Cambiamenti | Indice | Ricerca | Vai | Calcolatrice

Sei qui: Reteisi > IsiFirewall



Start of topic | Skip to actions
In questo articolo descriveremo una configurazione del firewall di ArgoLinux alla base della sicurezza dall'intrusione e del controllo del traffico verso internet in una intranet scolastica strutturata secondo il modello ISI. In breve

  • una sottorete di staff (tutte le macchine a disposizione dei non-studenti)
  • tante sottoreti quante sono le reti dei laboratori
  • la sottorete delle segreteria
  • le macchine attestate sulle varie sottoreti sono organizzate in due classi: quelle a indirizzo statico, apparati di rete, stampanti e pc amministrativi, quelle a indirizzo dinamico (dhcp). Questa suddivisione consente di implementare molto facilmente acl di Squid o eccezioni di firewalling.

Il software coinvolto nell'implementazione dei servizi di sicurezza e' netfilter/iptables per quanto riguarda il filtraggio dei pacchetti e le fondamentali operazione di redirezione del traffico (MASQUERADING, SNAT/DNAT), Squid per quanto riguarda il servizio proxy e Dans Guardian per quanto riguarda il filtraggio dei contenuti della navigazione. La configurazione di Squid e Dans Guardian e' descritta altrove. Qui ci occuperemo di come configurare netfilter/iptables affinchè si abbiano le funzionalità seguenti.

La macchina firewall (FW)

  1. protegge 5 sottoreti (vlans 1=staff 2,3,4=laboratori 5=segreteria)
  2. ridirige il traffico in ingresso sulla porta 80 al server web principale e quello sulla porta 81 a un server web secondario
  3. ridirige il traffico ssh in ingresso sulla porta 22 a se stesso e quello sulla porta 24 al servizio ssh in ascolto sul server
  4. consente connessioni VPN attraverso la porta 5000
  5. vieta in generale l'uscita diretta su internet attraverso la porta 80,i browser dovranno essere obbligatoriamente configurati per utilizzare un servizio proxy sulla porta 8128 (Dans Guardian) o 3128 (Squid) NOTA: Dans Guardian ascolta di default sulla porta 8080, la ridefinizione è resa necessaria per evitare possibili conflitti con le fonti apt bee.side).
  6. ridirige in generale tutte le richieste internet sulla porta 8128 a cui è attestato Dans Guardian anche se il browser è configurato per sfruttare il servizio proxy di squid alla porta 3128. In questo modo resta garantito il meccanismo di autenticazione dell´utente svolto da squid e il controllo sui contenuti del traffico web.
  7. impedisce/consente il traffico tra le vlan (ad esempio isola la vlan5, segreteria, dal resto della rete per quanto riguarda il traffico in ingresso ma consente l´accesso internet alle macchine della segreteria.

a quanto appena detto si aggiunge la gestione di alcune importanti eccezioni.

  1. ai server viene garantito l´accesso diretto internet sulla porta 80 bypassando tutti i servizi proxy, questo facilita tutte le operazione di aggiornamento automatico via apt-get e argoupdater (la procedura sistematica di aggiornamento di Argo)
  2. ad alcune macchine qualificate viene garantito il bypass di Dans Guardian
  3. ad alcune macchine qualificate viene consentito l´accesso alla vlan5 (segreteria), ad es. si vuole che il dirigente scolastico possa scambiare dati direttamente con gli uffici.

Naturalmente il modo in cui avviene l´autenticazione dell´utente e il controllo della navigazione dipende dalle configurazione di Squid e Dans Guardian che aggiungono due ulteriori strati di controllo.

In ArgoLinux la configurazione del firewall è tutta contenuta nei due file /etc/argo/fw.conf e /etc/argo/fw.add . Eccone il contenuto necessario per realizzare lo scenario sopra descritto.

/etc/argo/fw.add

### DEFINIZIONE DELLE VARIABILI
LOG="1"                                   #viene attivato il logging
INT="vlan1 vlan2 vlan3 vlan4 vlan5"       #interfacce interne definite in /etc/network/interfaces
EXT="ext0"                                #interfaccia verso il router ADSL 
# ip di tyutte le VLANs
LAN="x.x.x.0/24 y.y.y.0/24 z.z.z.0/24 w.w.w.0/24 u.u.u.0/24"
TCP_DPORTS="22 80 20 21 24 5000"          # porte con servizi in ascolto
UDP_DPORTS=""
# Input chains w/ 'tnl' in the name (expr match $name tnl -eq 3) will not
#   be considered by 'firewall' script
INPUT_CHAINS="int ext log"
FWD_CHAINS="fwd flog"
FORWARD="1"
IP_MODE=static                             # masquerading
IP_EXT=x.x.x.x                             # ip della scheda connessa col router ADSL
# uncomment this for transparent proxy     # il proxy trasparente è incompatibile con
# PROXY_REDIR_PORT=3128                    # l´autenticazione dell´utente, quindi non
                                           # viene utilizzata

Quanto contenuto in fw.conf consente la protezione delle sottoreti e la condivisione dell´accesso internet. Il resto delle regole di firewalling è contenuto nel file /etc/argo/fw.add. Eccone il contenuto (si noti l´organizzazione della configurazione: la definizione di tutte le variabili necessarie, l´implementazione delle regole. In questo modo risulta semplice estendere le funzionalità desiderate):

/etc/argo/fw.add

#### ---------VARIABILI---------
# protocolli
PROTO="tcp udp"
# porte
PORTS="20 21 25 80 110"
P_HTTP="80"
P_HTTP_APT="80 8080"
P_SSH="22"
P_SSH_EXTRA="24"
P_DNS="53"
P_SARG=" 81"
P_CUPS="631"
P_SWAT="901"
# porte squid e dansguardian
P_SQUID = "3128"
P_DG    = "8128"
P_PROXY = "3128 8128" 
#### server e bypass proxy
LH="127.0.0.1"
_FIREWALL = "x.x.x.x"      # ip di FW sulla vlan1
_SERVER1  = "x.x.x.x"      # ip del server principale (ldap/samba con funzioni di PDC)
_SERVER2  = "x.x.x.x"      # ip di un server secondario
_SERVER3  = "x.x.x.x"
SERVER_DNS="$_FIREWALL"    # si dichiara quale macchina ospita il server dns
NOPROXY1="$_FIREWALL"      # lista delle macchine che bypasseranno (per se stesse) i 
NOPROXY2="$_SERVER1"       # servizi proxy
NOPROXY3="$_SERVER2"
NOPROXY4="$_SERVER3"
# BYPASS DANS GUARDIAN
# accesso diretto a squid per macchine particolari
# attenzione non e'la stessa cosa di evitare il 
# filtraggio dell'ip da parte di DansGuardian
NODG01 ="x.x.x.x"          
# PC _amministrativi_ a cui viene consentito l'accesso alla vlan5 (segreteria)
ADMIN01="x.x.x.x"          # potrebbe essere l'ip statico del pc del Dirigente Scolastico
# ip interfaccia esterna (quella connessa al router ADSL)
EXT0="x.x.x.x"
# ip interfacce interne (vlans)
_VLAN1="x.x.x.0/24"
_VLAN2="y.y.y.0/24"
_VLAN3="z.z.z.0/24"
_VLAN4="w.w.w.0/24"
_VLAN5="u.u.u.0/24"
# lista delle vlan che possono comunicare tra loro
OK_LANS="vlan1 vlan2 vlan3 vlan4"
# target ridirezione porte
SRV_SSH="$_SERVER:22"      # ssh sulla porta 24 rediretto su $_SERVER
FW_HTTP="$_FIREWALL:80"    # http sulla porta 81 rediretto su $_FIREWALL
####----------REGOLE------------------
# 1 Blocco uscita diretta internet (navigazione solo via proxy)
iptb -I fwd 1 -o $EXT -p tcp --dport $P_HTTP -j bad
# 2 Passaggio libero attraverso la porta 80 per il traffico proveniente dai
#   server - necessario per semplificare le operazioni apt
iptb -I fwd 1 -s $NOPROXY1 -o $EXT -p tcp --dport $P_HTTP_APT -j ACCEPT
iptb -I fwd 1 -s $NOPROXY2 -o $EXT -p tcp --dport $P_HTTP_APT -j ACCEPT
iptb -I fwd 1 -s $NOPROXY3 -o $EXT -p tcp --dport $P_HTTP_APT -j ACCEPT
iptb -I fwd 1 -s $NOPROXY4 -o $EXT -p tcp --dport $P_HTTP_APT -j ACCEPT
# 3 nessuna redirezione trasparente su DansGuardian per la segreteria e per
# pc speciali
iptb -t nat -A PREROUTING -s $_VLAN5  -p tcp --dport $P_PROXY -j REDIRECT --to-port $P_SQUID
iptb -t nat -A PREROUTING -s $NODG01  -p tcp --dport $P_PROXY -j REDIRECT --to-port $P_SQUID
# 4 redirezione trasparente su DansGuardian di tutto il resto del traffico
iptb -t nat -A PREROUTING -s !$NOPROXY1  -p tcp --dport $P_PROXY  -j REDIRECT --to-port $P_DG
iptb -t nat -A PREROUTING -s !$NOPROXY2  -p tcp --dport $P_PROXY  -j REDIRECT --to-port $P_DG
iptb -t nat -A PREROUTING -s !$NOPROXY3  -p tcp --dport $P_PROXY  -j REDIRECT --to-port $P_DG
iptb -t nat -A PREROUTING -s !$NOPROXY4  -p tcp --dport $P_PROXY  -j REDIRECT --to-port $P_DG
# 5 Configurazione per ridirigere su firewall richiesta SARG
iptb -t nat -A PREROUTING -d $EXT0 -p tcp --dport $P_SARG -j DNAT --to  $FW_HTTP
#iptb -A fwd -d $_SERVER -p tcp --dport $PORTS -j ACCEPT
# 6 Configurazione per ridirigere pop3,smtp e http 
iptb -t nat -A PREROUTING -d $EXT0 -p tcp --dport $PORTS  -j DNAT --to  $_SERVER
iptb -A fwd -d $_SERVER -p tcp --dport $PORTS -j ACCEPT
# 7 Configurazione per redirigere bind
iptb -t nat -A PREROUTING -s ! $SERVER_DNS -p $PROTO --dport $P_DNS -j DNAT --to  $SERVER_DNS
iptb -A fwd -p $PROTO --dport $P_DNS -j ACCEPT
# 8 Configurazione per ssh diretto su $_SERVER via porta 24 del firewall
iptb -t nat -A PREROUTING -d $EXT0 -p tcp --dport $P_SSH_EXTRA -j DNAT --to $SRV_SSH
iptb -A fwd -d $_SERVER -p tcp --dport $P_SSH -j ACCEPT
# 9 Configurazione per accesso a PDC di tutti i client windows sulla intranet
iptb -A fwd -d $_SERVER -j ACCEPT
# 10 Configurazione per traffico tra vlan
iptb -A fwd -i $OK_LANS -o $OK_LANS -j ACCEPT
# 11 autorizzazione traffico macchine qualificate-segreteria
iptb -A fwd -s $ADMIN01 -o vlan5 -j ACCEPT


Reteisi.IsiFirewall r1.1 - 12 Jun 2021 - 06:45 - TWikiGuest
Copyright © 1999-2006 degli autori degli articoli. Tutto il materiale presente su questa piattaforma collaborativa è di proprietà di chi l'ha prodotto. Idee, richieste, problemi relativi a TWiki? Invia feedback