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
Il sistema non si spegne con shutdown -h now come su Linux: -h significa halt. Il che vuol dire che il kernel effettuerà le scritture in sul disco, terminerà i processi, e tutto ciò che è necessario, ma non spegnerà la macchina. Il comando per tirarla giù è shutdown -p now, dove -p sta per poweroff.
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.