2024-04-09 22:10:09 +02:00
---
2024-07-15 12:26:08 +00:00
title: Transparent Firewall - parte 2 - Configurazione del bridge
2024-04-09 22:10:09 +02:00
author: goblin
type: post
date: 2008-03-11T08:49:45+00:00
2024-06-26 21:47:28 +00:00
slug: transparent-firewall-part2
aliases:
- /2008/03/11/transparent-firewall-parte-2-configurazione-del-bridge/
2024-04-09 22:10:09 +02:00
categories:
- Documentazione
- Software
tags:
- bridge
- firewall
- OpenBSD
---
2024-07-15 12:26:08 +00:00
Parte seconda - dopo aver installato OpenBSD andremo ad impostare le schede di rete in modalità bridge e ad attivare un firewall sul traffico "passante".
2024-04-09 22:10:09 +02:00
<!-- more -->
2024-07-15 12:26:08 +00:00
situazione:
xl0 interfaccia collegata al mondo esterno (al router)
rl0 interfaccia collegata alla nostra rete lan (ad uno switch)
2024-04-09 22:10:09 +02:00
fxp0 interfaccia di gestione (può essere attaccata con un cross ad un pc oppure alla rete interna con un indirizzo ip appropriato)
2024-06-20 15:40:17 +00:00
Impostiamo il bridge:
2024-04-09 22:10:09 +02:00
2024-04-16 21:40:19 +02:00
ifconfig xl0 delete
2024-07-15 12:26:08 +00:00
2024-04-16 21:40:19 +02:00
echo 'up' > /etc/hostname.xl0
2024-07-15 12:26:08 +00:00
2024-04-16 21:40:19 +02:00
ifconfig rl0 delete
2024-07-15 12:26:08 +00:00
2024-04-09 22:10:09 +02:00
echo 'up' > /etc/hostname.rl0
2024-06-20 15:40:17 +00:00
Le schede sono impostate come "up" ma senza alcun indirizzo associato.
2024-04-09 22:10:09 +02:00
2024-06-20 15:40:17 +00:00
Creiamo il file di configurazione della nuova interfaccia bridge
2024-04-09 22:10:09 +02:00
echo 'add xl0 add rl0 up' > /etc/bridgename.bridge0
2024-06-20 15:40:17 +00:00
Riavviamo e verifichiamo che sia attiva l'interfaccia con:
2024-04-09 22:10:09 +02:00
ifconfig -a
che deve restituire qualcosa del tipo
bridge0: flags=41 < UP , RUNNING > mtu 1500
2024-06-20 15:40:17 +00:00
Abilitare il firewall PF - modificare il file /etc/rc.conf perchè la riga
2024-04-09 22:10:09 +02:00
pf=YES
2024-06-20 15:40:17 +00:00
sia decommentata (togliere eventuale "#" all'inizio della riga).
2024-04-09 22:10:09 +02:00
2024-06-20 15:40:17 +00:00
Modifichiamo il file /etc/pf.conf perchè sia così:
2024-04-09 22:10:09 +02:00
2024-04-16 21:40:19 +02:00
ext_if = "xl0" # verso il router
int_if = "rl0" # alla LAN interna
pass in log all keep state
2024-04-09 22:10:09 +02:00
pass out log all keep state
2024-06-20 15:40:17 +00:00
così passerà tutto ma almeno potremo vedere il traffico effettuato.
2024-04-09 22:10:09 +02:00
2024-06-20 15:40:17 +00:00
Facciamo leggere il file con le regole:
2024-04-09 22:10:09 +02:00
pfctl -f /etc/pf.conf
2024-06-20 15:40:17 +00:00
e verifichiamo che le regole siano state caricate correttamente.
2024-04-09 22:10:09 +02:00
pfctl -sr
2024-06-20 15:40:17 +00:00
Deve dare:
2024-04-09 22:10:09 +02:00
2024-04-16 21:40:19 +02:00
pass in log all flags S/SA keep state
2024-04-09 22:10:09 +02:00
pass out log all flags S/SA keep state
2024-06-20 15:40:17 +00:00
Ora controlliamo che l'interfaccia di log sia attiva:
2024-04-09 22:10:09 +02:00
/sbin/ifconfig pflog0
2024-06-20 15:40:17 +00:00
Deve rispondere:
2024-04-09 22:10:09 +02:00
pflog0: flags=141< UP , RUNNING , PROMISC > mtu 33224
2024-06-20 15:40:17 +00:00
Ora lanciamo l'utility tcpdump per monitorare il traffico di rete:
2024-04-09 22:10:09 +02:00
tcpdump -n -e -ttt -i pflog0
e vedremo il dettaglio dei pacchetti che entrano dalla interfaccia esterna verso la rete interna e viceversa escono dalla interna per internet
2024-06-20 15:40:17 +00:00
Se l'output è troppo lungo possiamo visualizzare solo parte del traffico ad esempio quello da e per l'host 192.168.1.90
2024-04-09 22:10:09 +02:00
tcpdump -n -e -ttt -i pflog0 ip host 192.168.1.90
2024-06-20 15:40:17 +00:00
[maggiori info qui ](https://www.tcpdump.org/manpages/tcpdump.1.html )
2024-04-09 22:10:09 +02:00
2024-07-15 12:26:08 +00:00
Supponiamo ora di voler bloccare il traffico http verso il server che ha indirizzo 193.204.255.20
2024-06-20 15:40:17 +00:00
Modifichiamo il file /etc/pc.conf in tale maniera
2024-04-09 22:10:09 +02:00
2024-04-16 21:40:19 +02:00
ext_if = "xl0" # interfaccia esterna (verso il router)
int_if = "rl0" # interfaccia verso la LAN interna
block in log on $ext_if proto tcp from 193.204.255.20 to any
2024-04-09 22:10:09 +02:00
pass out log on $int_if all keep state
e navighiamo sul sito www.unibg.it dal pc che ha ip 192.168.1.90
2024-06-20 15:40:17 +00:00
Vedremo che il log ottenuto dal comando:
2024-04-09 22:10:09 +02:00
tcpdump -p -e -ttt -i pflog0 ip host 192.168.1.90
2024-06-20 15:40:17 +00:00
Sarà:
2024-04-09 22:10:09 +02:00
rule 0/(match) block in on xl0: 193.204.255.20.80 > 192.168.1.90
2024-06-20 15:40:17 +00:00
che significa che abbiamo bloccato il traffico verso questo sito (che ha indirizzo ip 193.204.255.20).
2024-04-09 22:10:09 +02:00
2024-06-20 15:40:17 +00:00
Se invece volete bloccare tutto il traffico del protocollo tcp da questa macchina verso l'esterno potete usare questa regola:
2024-04-09 22:10:09 +02:00
block in log on $ext_if proto tcp from any to 192.168.1.90
2024-06-20 15:40:17 +00:00
provate a navigare in internet dal suddetto pc e vedrete nei log i tentativi di connessione bloccati verso la porta 80 dei server web richiesti.
2024-04-09 22:10:09 +02:00
2024-07-15 12:26:08 +00:00
A dire il vero la prassi per costruire un firewall sicuro e esattamente l'opposto e cioè di default bloccare tutto e poi aprire solo il necessario - come nel seguente script
2024-04-09 22:10:09 +02:00
contenuto di /etc/pf.conf
2024-04-16 21:40:19 +02:00
ext_if="xl0"
int_if="rl0"
block in log on $ext_if all
2024-04-09 22:10:09 +02:00
block out log on $int_if all
2024-07-15 12:26:08 +00:00
Questo blocca tutto ma veramente tutto... un po' troppo imho.
2024-06-20 15:40:17 +00:00
Apriamo ora tutte le connessioni da e verso il nostro pc client che abbiamo usato per fare le prove:
2024-04-09 22:10:09 +02:00
2024-04-16 21:40:19 +02:00
ext_if="xl0"
int_if="rl0"
pass in log from 10.255.10.187 to any
pass out log from 10.255.10.187 to any
block in log on $ext_if all
2024-04-09 22:10:09 +02:00
block out log on $int_if all
2024-06-20 15:40:17 +00:00
Compito a casa: trovare la giusta via di mezzo (aiutati anche dalla visualizzazione dei log dei pacchetti permessi / bloccati)
2024-04-09 22:10:09 +02:00
2024-07-15 12:26:08 +00:00
Marco - Goblin - Morosini