Caronte

Caronte è il router di Unit. Sarà anche il router di Macao? Verificare con Accio.

Nota: attualmente la macchina è accessibile solo tramite rete tor, in attesa del setup definitivo della rete. Chiedere a crudo le credenziali.

Hardware

To be done.

Installazione

Scaricare l'immagine di OpenBSD 6.0 amd64 (mirror GARR) e masterizzarla su un CD.

Una volta avviato si presenterà un prompt che chiederà di avviare l'installazione o ottenere una shell sulla live. Premere S per ottenere la shell.

Selezionare il layout della tastiera con il comando kbd. Per una tastiera italiana kbd it.

Spostarsi in /dev con cd /dev ed eseguire i comandi

sh MAKEDEV sd0
sh MAKEDEV sd1
sh MAKEDEV sd2

Il kernel creerà i device files necessari per il sistema.

sd0 e sd1 rappresentano i primi due devices SCSI che verranno inclusi nel mirror, sd2 è il terzo disco SCSI spare, sd3 rappresenterà il device virtuale del mirror dei primi due dischi.

Inizializzare una nuova tabella delle partizioni MBR su entrambi i dischi con

fdisk -iy sd0
fdisk -iy sd1

Quindi è necessario creare su entrambi i dischi due partizioni (nella corrente installazione da 32GB) da usare per il mirror.

disklabel -E sd0
> a a
> offset: [enter]
> size: 32G
> FS type: RAID
> w
> x

disklabel -E sd1
> a a
> offset: [enter]
> size: 32G
> FS type: RAID
> w
> x

Inizializzare quindi il mirror:

bioctl -c 1 -l sd0a,sd1a softraid0
sh MAKEDEV sd3
dd if=/dev/zero of=/dev/rsd3c bs=1m count=1
fdisk -iy sd3

I dischi sono pronti. Avviare quindi l'installazione guidata:

cd /

install
> keyboard layout: it
> hostname: caronte
> network: done
> domain name: unit
> DNS: none
> root password: ****
> ssh: no
> X: no
> default console to com0: no
> setup user: no
> root disk: sd3
> choose partition: o
> choose layout: c

> a a
> offset: [enter]
> size: 5G
> FS type: [enter]
> mount point: /

> a e
> offset: [enter]
> size: 4G
> FS type: [enter]
> mount point: /var

> a f
> offset: [enter]
> size: 2G
> FS type: [enter]
> mount point: /usr

> a h
> offset: [enter]
> size: 4G
> FS type: [enter]
> mount point: /usr/local

> a j
> offset: [enter]
> size: 2G
> FS type: [enter]
> mount point: /usr/src

> a k
> offset: [enter]
> size: 2G
> FS type: [enter]
> mount point: /usr/obj

> w
> x

> other disks: done
> locations of sets: cd0
> pathname: [enter]
> -game60.tgz
> -x*
> done
> continue without verification: yes

Una volta terminato si presenterà una shell. È necessario ora installare il bootloader su entrambi i dischi:

installboot -v sd0 /mnt/usr/mdec/biosboot /mnt/usr/mdec/boot
installboot -v sd1 /mnt/usr/mdec/biosboot /mnt/usr/mdec/boot

Una buona idea è tenere la cartella /tmp in ram. Il parametro -s consente di definire una dimensione:

echo "swap /tmp mfs rw,nodev,nosuid,-s=256M 0 0" >> /mnt/etc/fstab

Il sistema è installato e pronto a bootare. Riavviare con reboot.

Cosa ti farà impazzire

Update

Controlla che nel file /etc/mk.conf sia presente:

SKIPDIR="games/"

Se non hai mai aggiornato il sistema (/usr/src vuota) allora esegui:

cd /usr
cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_6_0 -P src

Altrimenti esegui:

cd /usr/src
cvs -q up -rOPENBSD_6_0 -Pd

Quindi:

cd /sys/arch/i386/conf
config GENERIC.MP
cd ../compile/GENERIC.MP
make clean
make -j2
make install
reboot

umount /usr/obj
mewfs sd3k
mount /usr/obj
cd /usr/src
make -j2 obj
cd /usr/src/etc
env DESTDIR=/ make distrib-dirs
cd /usr/src
make -j2 build

Partizione cifrata

Il sistema non è totalmente cifrato. Questo permette che in caso di sospensione della corrente elettrica o arresti (del sistema) inaspettati può tornare su da solo senza intervento dell'utente.

Nella partizione cifrata andranno i dati che necessitano un certo livello di privacy ma che non impediscono il funzionamento base della rete.

Setup

Aggiungere una partizione al mirror sd0:

disklabel -E sd3
> a n
> offset: [return]
> size: 4G
> FS type: RAID
> w
> x

Inizializzare la partizione cifrata:

bioctl -c C -l sd3n softraid0
> passphrase: ****

dd if=/dev/zero of=/dev/rsd4c bs=1m count=1
fdisk -iy sd4

disklabel -E sd4
> a a
> offset: [enter]
> size: [enter]
> FS type: [enter]
> w
> x

newfs sd4a

mkdir /crypto
mount /dev/sd4a /crypto

Montare la partizione quasi automaticamente

Lo script /usr/local/bin/crypto_enable.sh (presente nel PATH) fa tutto il necessario per avere la partizione /crypto accessibile.

Se sono installati servizi che hanno bisogno dei dati cifrati essi non partiranno all'avvio, ma saranno avviati dallo script menzionato poc'anzi.

Smontare la partizione

Il sistema in fase di arresto smonterà tutti i dischi quindi non è davvero necessaqrio smontare la partizione e rilasciarla.

Tuttavia, al fine documentativo i comandi sono:

umount /crypto
bioctl -d sd4

Software

Configurazione interfacce di rete

Le interfacce di rete sono nominate in base al driver in grado di usarle (E.g.: le schede Realtek hanno come nome re0, re1, etc; le schede Broadcom Gigabit hanno come nome: bge0, bge1, etc.).

La loro configurazione va impostata in un file chiamato /etc/hostname.if, dove al posto di if va messo il nome dell'interfaccia. Su ogni riga va inserito un comando per ifconfig. È possibile eseguire un comando da shell inserendo un punto esclamativo all'inizio della riga.

Esempio per /etc/hostname.bge0:

up
inet 192.168.1.2 255.255.255.0 192.168.1.255
description "MACAO network"
!route add default 192.168.1.1

E l'output di ifconfig bge0 sarà:

bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:00:00:00:00:00
        description: MACAO network
        index 1 priority 0 llprio 3
        groups: egress
        media: Ethernet autoselect (100baseTX full-duplex,rxpause,txpause)
        status: active
        inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255

Per applicare le modifiche è sufficiente eseguire il comando sh /etc/netstart.

Firewall (pf)

To be done.

DNS (unbound)

Come quasiquasi tutti i demoni di OpenBSD, unbound è eseguito con privilegi minimi all'interno di un chroot (/var/unbound). La configurazione è reperibile quindi in /var/unbound/etc/unbound.conf.

Il server dns è configurato come server dns recursive, caching, validating. Ciò significa che è in grado di effettuare richieste per conto dei client che le richiedono (attualmente limitato a 127.0.0.1 in attesa della configurazione di rete), le tiene in cache per un periodo di 60 minuti e soprattutto verifica l'autenticità delle risposte che riceve da altri server DNS usando DNSSEC. Il software è configurato per fare prefetch delle query in cache in scadenza.

Altre misure di sicurezza implementate sono: non fornire nome e versione del software DNS, randomizzare l'alternanza di maiuscole e minuscole nella query per evitare DNS spoofing e l'uso esclusivo di DNSSEC per richieste verso l'esterno.

Attualmente l'unico server DNS a cui fa riferimento è DNS.watch.

Una volta autenticati sulla macchina è possibile usare il comando unbound-control per ottenere informazioni sul funzionamento del server DNS.

DHCP

To be done.

Caronte (last edited 2017-06-19 15:59:10 by crudo)