1
0
forked from BgLUG/bglug.it
bglug.it/content/posts/2008/2008-03-11-transparent-firewall-parte-2-configurazione-del-bridge/index.it.md

145 lines
4.4 KiB
Markdown
Raw Normal View History

2024-04-09 20:10:09 +00:00
---
title: Transparent Firewall parte 2 Configurazione del bridge
author: goblin
type: post
2024-04-16 20:05:46 +00:00
draft: true
2024-04-09 20:10:09 +00:00
date: 2008-03-11T08:49:45+00:00
url: /2008/03/11/transparent-firewall-parte-2-configurazione-del-bridge/
categories:
- Documentazione
- Software
tags:
- bridge
- firewall
- OpenBSD
---
2024-04-16 19:40:19 +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 20:10:09 +00:00
<!--more-->
situazione:
xl0 interfaccia collegata al mondo esterno (al router)
rl0 interfaccia collegata alla nostra rete lan (ad uno switch)
fxp0 interfaccia di gestione (può essere attaccata con un cross ad un pc oppure alla rete interna con un indirizzo ip appropriato)
impostiamo il bridge:
2024-04-16 19:40:19 +00:00
ifconfig xl0 delete
echo 'up' > /etc/hostname.xl0
ifconfig rl0 delete
2024-04-09 20:10:09 +00:00
echo 'up' > /etc/hostname.rl0
2024-04-16 19:40:19 +00:00
le schede sono impostate come "up" ma senza alcun indirizzo associato
2024-04-09 20:10:09 +00:00
creiamo il file di configurazione della nuova interfaccia bridge
echo 'add xl0 add rl0 up' > /etc/bridgename.bridge0
2024-04-16 19:40:19 +00:00
riavviamo e verifichiamo che sia attiva l'interfaccia con:
2024-04-09 20:10:09 +00:00
ifconfig -a
che deve restituire qualcosa del tipo
bridge0: flags=41 <UP,RUNNING> mtu 1500
2024-04-16 19:40:19 +00:00
abilitare il firewall PF - modificare il file /etc/rc.conf perchè la riga
2024-04-09 20:10:09 +00:00
pf=YES
2024-04-16 19:40:19 +00:00
sia decommentata (togliere eventuale "#" all'inizio della riga)
2024-04-09 20:10:09 +00:00
modifichiamo il file /etc/pf.conf perchè sia così:
2024-04-16 19:40:19 +00:00
ext_if = "xl0" # verso il router
int_if = "rl0" # alla LAN interna
pass in log all keep state
2024-04-09 20:10:09 +00:00
pass out log all keep state
così passerà tutto ma almeno potremo vedere il traffico effettuato
facciamo leggere il file con le regole
pfctl -f /etc/pf.conf
e verifichiamo che le regole siano state caricate correttamente
pfctl -sr
deve dare
2024-04-16 19:40:19 +00:00
pass in log all flags S/SA keep state
2024-04-09 20:10:09 +00:00
pass out log all flags S/SA keep state
2024-04-16 19:40:19 +00:00
ora controlliamo che l'interfaccia di log sia attiva
2024-04-09 20:10:09 +00:00
/sbin/ifconfig pflog0
deve rispondere
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33224
2024-04-16 19:40:19 +00:00
ora lanciamo l'utility tcpdump per monitorare il traffico di rete
2024-04-09 20:10:09 +00: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-04-16 19:40:19 +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 20:10:09 +00:00
tcpdump -n -e -ttt -i pflog0 ip host 192.168.1.90
<a href="http://www.tcpdump.org/tcpdump_man.html" title="Maggiori info qui" target="_blank">maggiori info qui </a>
supponiamo ora di voler bloccare il traffico http verso il server che ha indirizzo 193.204.255.20
modifichiamo il file /etc/pc.conf
in tale maniera
2024-04-16 19:40:19 +00: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 20:10:09 +00: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
vedremo che il log ottenuto dal comando
tcpdump -p -e -ttt -i pflog0 ip host 192.168.1.90
sarà
rule 0/(match) block in on xl0: 193.204.255.20.80 > 192.168.1.90
che significa che abbiamo bloccato il traffico verso questo sito (che ha indirizzo ip 193.204.255.20)
2024-04-16 19:40:19 +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 20:10:09 +00:00
block in log on $ext_if proto tcp from any to 192.168.1.90
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-16 19:40:19 +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 20:10:09 +00:00
contenuto di /etc/pf.conf
2024-04-16 19:40:19 +00:00
ext_if="xl0"
int_if="rl0"
block in log on $ext_if all
2024-04-09 20:10:09 +00:00
block out log on $int_if all
2024-04-16 19:40:19 +00:00
questo blocca tutto ma veramente tutto... un po' troppo imho.
2024-04-09 20:10:09 +00:00
apriamo ora tutte le connessioni da e verso il nostro pc client che abbiamo usato per fare le prove
2024-04-16 19:40:19 +00: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 20:10:09 +00:00
block out log on $int_if all
compito a casa: trovare la giusta via di mezzo (aiutati anche dalla visualizzazione dei log dei pacchetti permessi / bloccati)
2024-04-16 19:40:19 +00:00
Marco - Goblin - Morosini