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

Sei qui: Reteisi > DocTecWoody > 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 DansGuardian per quanto riguarda il filtraggio dei contenuti della navigazione. La configurazione di Squid e DansGuardian è descritta altrove. Qui ci occuperemo di come configurare netfilter/iptables affinchè si abbiano le funzionalità seguenti.

La macchina firewall (FW)

  1. protegge tutte le sottoreti (nel caso d'esempio si tratta di 5 vlan: 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 (DansGuardian) o 3128 (Squid) NOTA: DG 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 DG 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 a internet alle macchine della segreteria.

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

  1. ai server (_FIREWALL, _SERVER, _SRV2, _SRV3) viene garantito l´accesso diretto a 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 DG
  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 DG 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.conf

### ------VARIABILI---------------
# abilitazione log dei pacchetti scartati
LOG="1"

INT="vlan1 vlan2 vlan3 vlan4 vlan5"
EXT="ext0"

LAN="192.168.1.0/24 192.168.2.0/24 192.168.3.0/24 192.168.4.0/24 192.168.5.0/24"

TCP_DPORTS="22 80 20 21 24 5000"
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"
# masquerading
IP_MODE=static
# ip dell'interfaccia connessa al router adsl
IP_EXT= 192.168.200.2

# DMZ_ARP=
# EXT_ARP=

# scommentare la riga seguente per il proxy trasparente
# attenzione: il proxy trasparente è incompatibile con
# l'autenticazione via proxy e quindi non viene utilizzato
# PROXY_REDIR_PORT=3128

ICMP_TYPES=" 0 , 3 , 8 , 11 "
# 0 = echo reply
# 3 = dest unreachable
# 8 = echo request
# 11 = time exceeded for datagram

### ------fine----------

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="192.168.1.1"
_SERVER="192.168.1.2"
_SRV2="192.168.1.3"
_SRV3="192.168.1.4"

SERVER_DNS="$_FIREWALL"

NOPROXY1="$_FIREWALL"
NOPROXY2="$_SERVER"
NOPROXY3="$_SRV2"
NOPROXY4="$_SRV3"

# accesso diretto a squid per macchine particolari
# attenzione non e'la stessa cosa di evitare il filtraggio dell'ip

# pc a cui è permesso l'accesso alla vlan della segreteria
NODG01="x.x.x.x"

# ip di pc amministrativi/
ADMIN01="x.x.x.x"

# ip interfaccia esterna
EXT0="192.168.200.2"

# ip interfacce interne (vlans)
_VLAN1="192.168.1.0/24"
_VLAN2="192.168.2.0/24"
_VLAN3="192.168.3.0/24"
_VLAN4="192.168.4.0/24"
_VLAN5="192.168.5.0/24"

# lista delle vlan che possono comunicare tra loro
OK_LANS="vlan1 vlan2 vlan3 vlan4"

#### target ridirezione porte
SRV_SSH="$_SERVER:22"
FW_HTTP="$_FIREWALL:80"


####----------REGOLE------------------

# nat spostato qui da fw.conf per attivazione 2adsl
#iptb -A fwd -o $EXT0 -j ACCEPT
#iptb -t nat -A POSTROUTING -o ext0 -j SNAT --to $EXT0
#iptb -t nat -A POSTROUTING -o ext1 -j SNAT --to $EXT1

# 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 (adsl1)
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 srv-nec
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
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

#--------------------fine--------------------------------


Reteisi.IsiFirewall r1.8 - 12 Jun 2021 - 06:45 - WebMaster
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