Lo scopo di questo articolo è di installare un firewall OpenBSD, che ha 3 schede di rete: una per la gestione e le altre due configurate in bridge. Quali sono i vantaggi di questa soluzione? Che il firewall non sarà in nessun modo rilevabile nè dall'esterno nè dall'interno (non ha indirizzo ip se non per la configurazione). Un altro vantaggio è che potrete posizionarlo in qualunque segmento della rete, senza dover modificare le impostazioni di rete del router nè dei client. Può essere usato anche per studiare il tipo di traffico effettuato dai nostri client per individuare ad esempio il motivo di lamentele sulla lentezza della rete o verificare quali a quali scansioni provenienti da internet sono sottoposti i vostri server pubblici.
<!--more-->
Ma iniziamo a sporcarci le mani: la lista degli ingredienti comprende un pc anche non eccessivamente carrozzato (un pentium II con almeno 128Mb di ram andrà bene l'importante è che abbia un hard disk da almeno 40Gb da dedicare interamente ad openbsd e 3 schede di rete) e un pc da cui configurare via ssh il suddetto firewall.
Ottenere openbsd è semplice, cercatelo nel vostro motore di ricerca preferito e lo troverete nella forma di un file iso da circa 200 Mb dal nome install42.iso masterizzatelo e avviate il pc che farà da firewall con il cd inserito.
La procedura di installazione di questo sistema operativo risulta particolarmente macchinosa rispetto a quella del nostro pinguino, ma vi darò i comandi da inserire passo passo (come io li ho trovati in rete).
Terminal type: [vt220] ----> premere invio
kbd(8) mapping? ('L' for list) [none] ----> digitare it e poi invio
Chiede se avete fatto il backup perchè la procedura di installazione cancellerà TUTTO il contenuto dell' hard disk.
Proceed with install [no] ----> digitare yes e poi invio
Available disks are wd0.
Which one is the root disk? (or done) [wd0] ----> premere invio (nel nostro caso è stato trovato un solo hard disk nel pc)
Do you want to use *all* of wd0 for OpenBSD [no] ---> digitare yes e invio
Qui viene il bello! creare le partizioni a manina...
La richiesta sarà:
Initial label editor (enter '?' for help at any prompt)
Digitare "p g" seguito da invio per mostrare la lista delle partizioni presenti attualmente sul disco - per cancellarle (avendo cura di usare un hard disk senza DATI IMPORTANTI) digitare in sequenza
"d a" invio
"d b" invio
"d d" invio
Non preoccupatevi se avere errori in quanto io avevo 3 partioni sul disco e le ho cancellate tutte e 3
"p g" invio
Mostra il contenuto del disco dopo la cancellazione delle partizioni inutili:
device: / dev/rwd0c
c: 38.3G
Questo significa che l'hard disk è vuoto (e che è da 40Gb).
"a a" invio
offset: [63] ----> invio
size: [80292807] ------> 10g invio
Rounding to nearest cylinder: 20971377
FS type: [4.2BSD] ----> invio
mount point: [none] ----> "/" invio
"a b" invio
offset: [20971440] ----> invio
size: [59321430] ------> 1.1g invio
Rounding to nearest cylinder: 2307312
FS type: [swap] ----> invio
"a d" invio
offset: [23278652] ----> invio
size: [57014118] ------> 2g invio
Rounding to nearest cylinder: 4194288
FS type: [4.2BSD] ----> invio
mount point: [none] ----> "/tmp" invio
"a e" invio
offset: [27473040] ----> invio
size: [52819830] ------> 6g invio
Rounding to nearest cylinder: 12582864
FS type: [4.2BSD] ----> invio
mount point: [none] ----> "/var" invio
"a g" invio
offset: [40055904] ----> invio
size: [40236966] ------> 10g invio
Rounding to nearest cylinder: 20971440
FS type: [4.2BSD] ----> invio
mount point: [none] ----> "/usr" invio
"a h" invio
offset: [61027344] ----> invio
size: [19265526] ------> 9g invio
Rounding to nearest cylinder: 18874800
FS type: [4.2BSD] ----> invio
mount point: [none] ----> "/home" invio
"w" invio
"q" invio
Mount point for wd0d (size=2097144k)? (or 'none od 'done) [/tmp] ----> invio
Mount point for wd0e (size=6291432k)? (or 'none od 'done) [/var] ----> invio
Mount point for wd0g (size=10485720k)? (or 'none od 'done) [/usr] ----> invio
Mount point for wd0h (size=9437400k)? (or 'none od 'done) [/home] ----> invio
Mount point for wd0d (size=2097144k)? (or 'none od 'done) [/tmp] ----> "done" invio
No more disks to initialize.
Are you really sure that you're ready to proceed? [no] -----> "yes" invio
System hostname (short form, e.g. 'foo'): ----> "openbsd" invio
Configure the network? [yes] ----> invio
Availabel interfaces are: fxp0 fxp1 fxp2
Ha trovato 3 interfacce di rete della stessa marca - qui faccio una precisazione e cioè che i vari sistemi BSD chiamano la scheda di rete in modo diverso in base alla marca e cioè se utilizzerà un driver sis si chiamerà sis0 (la prima) oppure se avete una realtek si chiamerà rl0 (la prima)
la situazione più incasinata è avere 3 schede che usano 3 drivers diversi e quindi si chiameranno ad esempio dc0 fxp0 e rl0 - dovete innanzitutto individuare quali sono e metterci una etichetta, ci sarà utile in seguito quando andremo a configurare il bridge (il metodo semplice prevede di avere 3 schede dello stesso produttore e quindi come in questo caso fxp0 fxp1 e fxp2)
Ora configuriamo solo l'interfaccia di gestione, le altre due (modalità bridge) verranno impostate successivamente.
Which one do you wish to initialize? (or 'done') [fxp0] ----->invio
Do you want to change the media options? [no] ---->invio
Se avete un dhcp potete sfruttarlo ma consiglio di mettere un ip statico, visto che vogliamo sia sempre quello e che venga impostato anche se la rete non è connessa all'avvio della macchina.
IPv4 address for fxp0? (or 'none' or 'dhcp') ----> digitare "192.168.1.7" e invio
Netmask [255.255.255.0] -----> invio
IPv6 address fox fxp0 (or 'rtsol' of 'none') [none] ----> invio
Se viene richiesto di inizializzare altre schede di rete dire no e proseguire ('none')
DNS domain name? (e.g. 'bar.com') [my.domain] ----> digitare "dominio.it" e invio
DNS nameserver? (IP address or 'none') [none] ----> digitare ip del dns e invio
Use the nameserver now? [yes] <enter> ----> invio
Default IPv4 route? (IP address, 'dhcp' or 'none') ----> digitare ip del gatewaye invio
add net default: gateway
Edit hosts with ed? [no] ----> invio
Do you want to do any manual network configuration? [no] ----> invio
Password for root account? (will not echo) ----> digitare la password che avrà l'utente root
Password for root account? (again) ----> ripetere la stessa password
A questo punto si effettua l'installazione dei pacchetti, raggruppati per gruppi (SET) - lo faremo scaricandoli da internet e scegliendo una installazione completa
Let's install the sets!
Location of sets? (cd disk ftp http or 'done') [cd] ----> digitare "ftp" e invio
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none] ----> digitare invio se non è necessario impostare un proxy
Display the list of known ftp servers? [no] ----> "yes" e invio
Getting the list from 129.128.5.191 (ftp.openbsd.org)...
Qui potete scegliere un server in italia per rendere più veloce lo scaricamento e contribuire alla diminuzione del riscaldamento globale del pianeta
Server? (IP address, hostname, list# or 'done') [q] 5
Using ftp5.usa.openbsd.org/pub/OpenBSD Redwood City, CA, USA