Differenze tra le versioni di "OpenBSD"
(Creata pagina con 'Guida all'uso domestico di OpenBSD Configurazione di alcuni demoni dhcpd Condivisione della connessione Configurazione del pppoe Pure-ftpd ==Storia== Nel Giugno del 199...') |
|||
(12 versioni intermedie di un altro utente non mostrate) | |||
Riga 1: | Riga 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Storia== | ==Storia== | ||
− | |||
Nel Giugno del 1996 Theo de Raadt, uno dei primi sviluppatori del NetBSD, si allontana dal progetto a causa di attriti con il resto della comunità. | Nel Giugno del 1996 Theo de Raadt, uno dei primi sviluppatori del NetBSD, si allontana dal progetto a causa di attriti con il resto della comunità. | ||
Il suo fork prenderà il nome di OpenBSD e i suoi obiettivi saranno: sicurezza, rispetto degli standard e portabilità. | Il suo fork prenderà il nome di OpenBSD e i suoi obiettivi saranno: sicurezza, rispetto degli standard e portabilità. | ||
Riga 14: | Riga 5: | ||
==Creazione di un supporto d'avvio per l'installazione== | ==Creazione di un supporto d'avvio per l'installazione== | ||
+ | In questo articolo mi occuperò solamente dell'installazione e configurazione di base del port di OpenBSD per piattaforma i386 nella sua ultima versione: la 5.5. | ||
+ | Per non sovraccaricare il server primario è consigliabile utilizzare un mirror, il mirror italiano si trova a questo indirizzo: ftp://openbsd.mirror.garr.it/pub/OpenBSD/5.5/i386/ | ||
− | |||
− | |||
− | |||
Possiamo scegliere tra diversi file d'immagine per installare il sistema: | Possiamo scegliere tra diversi file d'immagine per installare il sistema: | ||
− | + | *floppy55.fs (Desktop PC) supporta la maggior parte delle periferiche PCI, ISA, dei controller IDE e SCSI e alcune schede PCMCIA. | |
− | |||
− | |||
− | + | *floppyB55.fs (Servers) supporta diversi controller RAID e SCSI non presenti nel floppy39.fs. | |
− | + | *floppyC55.fs (Laptops) contiene i driver CardBus and PCMCIA della maggior parte dei normali laptop. | |
− | + | *cd55.iso è una immagine ISO9660 che può essere usata per creare CD d'avvio. Contiene la più numerosa selezione di driver, se la macchina in cui vogliamo installare OpenBSD ha il supporto per il CDROM questa è probabilmente la scelta migliore. | |
+ | * install55.iso immagine standard per l'installazione da CD-ROM, nella maggior parte dei casi è questo il file che conviene masterizzare | ||
+ | * install55.fs immagine standard per l'installazione da USB | ||
==Creazione di un floppy di boot== | ==Creazione di un floppy di boot== | ||
− | ===Da sistemi | + | ===Da sistemi BSD=== |
− | + | Scaricare il file immagine desiderato (es. floppy55.fs) | |
− | Scaricare il file immagine desiderato (es. | ||
− | |||
Formattare un floppy | Formattare un floppy | ||
− | |||
# fdformat /dev/rfd0c | # fdformat /dev/rfd0c | ||
− | |||
Format 1440K floppy `/dev/rfd0c'? (y/n): y | Format 1440K floppy `/dev/rfd0c'? (y/n): y | ||
Processing VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV done. | Processing VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV done. | ||
Riga 49: | Riga 35: | ||
Adesso scriviamo l'immagine sul floppy | Adesso scriviamo l'immagine sul floppy | ||
+ | # dd if=floppy55.fs of=/dev/rfd0c bs=32k | ||
− | # dd if= | + | === Da Linux === |
+ | # fdformat /dev/fd0 | ||
+ | # dd if=floppy55.fs of=/dev/fd0 | ||
=== Da MS DOS o Windows=== | === Da MS DOS o Windows=== | ||
Formattazione del floppy | Formattazione del floppy | ||
− | |||
C:\> format a: | C:\> format a: | ||
Scrittura dell'immagine con rawrite | Scrittura dell'immagine con rawrite | ||
− | |||
C:\> rawrite | C:\> rawrite | ||
RaWrite 1.2 - Write disk file to raw floppy diskette | RaWrite 1.2 - Write disk file to raw floppy diskette | ||
− | Enter source file name: | + | Enter source file name: floppy55.fs |
Enter destination drive: a | Enter destination drive: a | ||
Please insert a formatted diskette into drive A: and press -ENTER- : Enter | Please insert a formatted diskette into drive A: and press -ENTER- : Enter | ||
− | + | ||
==Creazione di una ISO personalizzata== | ==Creazione di una ISO personalizzata== | ||
− | Molti potrebbero avere bisogno di un'iso per cdrom contenente non solo il sistema | + | Molti potrebbero avere bisogno di un'iso per cdrom contenente non solo il sistema base, ma anche i sorgenti o dei pacchetti precompilati. |
− | |||
− | |||
− | |||
− | |||
− | + | Scaricate tutto il contenuto di ftp://openbsd.mirror.garr.it/pub/OpenBSD/5.5/i386/ in OpenBSD/5.5/ | |
− | |||
− | Scaricate tutto il contenuto di ftp:// | ||
Io per eseguire queste operazioni uso wget con l'opzione mirror, ma è possibile utilizzare qualsiasi client ftp. | Io per eseguire queste operazioni uso wget con l'opzione mirror, ma è possibile utilizzare qualsiasi client ftp. | ||
− | # wget -m ftp:// | + | # wget -m ftp://openbsd.mirror.garr.it/pub/OpenBSD/5.5/i386/ |
− | # mv | + | # mv openbsd.mirror.garr.it/pub/OpenBSD . |
− | # rm -rf | + | # rm -rf openbsd.mirror.garr.it |
# cd OpenBSD/ | # cd OpenBSD/ | ||
Se ci interessa possiamo scaricare | Se ci interessa possiamo scaricare | ||
− | + | * [http://openbsd.mirror.garr.it/pub/OpenBSD/5.5/ports.tar.gz ports.tar.gz] - l'albero dei ports. | |
− | + | * [http://openbsd.mirror.garr.it/pub/OpenBSD/5.5/src.tar.gz src.tar.gz] - i sorgenti del sistema operativo di base. | |
− | + | * [http://openbsd.mirror.garr.it/pub/OpenBSD/5.5/sys.tar.gz sys.tar.gz] - i sorgenti del kernel. | |
− | + | * [http://openbsd.mirror.garr.it/pub/OpenBSD/5.5/xenocara.tar.gz xenocara.tar.gz] - i sorgenti del server grafico. | |
− | |||
− | |||
Possiamo anche creare la directory packages/ e aggiungervi qualsiasi pacchetto precompilato si desideri installare dopo l'installazione del sistema di base. Naturalmente si dovrà fare attenzione alle dipendenze di ciascun pacchetto scaricato e a non superare lo spazio del supporto sul quale vogliamo andare a scrivere la nostra iso. | Possiamo anche creare la directory packages/ e aggiungervi qualsiasi pacchetto precompilato si desideri installare dopo l'installazione del sistema di base. Naturalmente si dovrà fare attenzione alle dipendenze di ciascun pacchetto scaricato e a non superare lo spazio del supporto sul quale vogliamo andare a scrivere la nostra iso. | ||
Riga 98: | Riga 77: | ||
# mkdir packages | # mkdir packages | ||
# cd packages | # cd packages | ||
− | # | + | # wget -m ftp://openbsd.mirror.garr.it/pub/OpenBSD/5.5/packages/i386/ |
− | |||
Se non ci siete tornate nella cartella OpenBSD/ e date un comando di questo genere per creare la vostra iso | Se non ci siete tornate nella cartella OpenBSD/ e date un comando di questo genere per creare la vostra iso | ||
− | # mkisofs -r -l -V "OpenBSD- | + | # mkisofs -r -l -V "OpenBSD-5.5" -A "OpenBSD v5.5-Release, \ |
− | Custom ISO, 06-05- | + | Custom ISO, 06-05-2014." -b 5.5/i386/install55.fs -c boot.catalog \ |
− | -o openbsd-i386- | + | -o openbsd-i386-5.5.iso ../OpenBSD/ |
− | |||
− | |||
− | |||
− | |||
− | |||
Per masterizzare l'iso va bene qualsiasi programma: K3B, Nero o da linea di comando: | Per masterizzare l'iso va bene qualsiasi programma: K3B, Nero o da linea di comando: | ||
− | # cdrecord -v -tao dev=/dev/il_vostro_masterizzatore -data driveropts=burnfree openbsd-i386- | + | # cdrecord -v -tao dev=/dev/il_vostro_masterizzatore -data driveropts=burnfree openbsd-i386-5.5.iso |
− | |||
− | |||
==Installazione== | ==Installazione== | ||
− | |||
− | |||
Le parole o le lettere in neretto corrispondono a quello che dovreste digitare per proseguire con l'installazione. | Le parole o le lettere in neretto corrispondono a quello che dovreste digitare per proseguire con l'installazione. | ||
Fate fare il boot da CDROM al vostro computer e se tutto va bene dovrebbe apparirvi questo: | Fate fare il boot da CDROM al vostro computer e se tutto va bene dovrebbe apparirvi questo: | ||
+ | Welcome to the OpenBSD/i386 5.5 install program. | ||
+ | (I)nstall, (U)pgrade, (A)utoinstall or (S)hell? '''i''' | ||
+ | |||
+ | Selezionare it per la tastiera italiana e dare un nome al computer. | ||
+ | Choose your keyboard layout ('?' or 'L' for list) [default] '''it''' | ||
+ | System hostname? (short form, e.g. 'foo') puffy | ||
− | ( | + | Premere invio per configurare l'interfaccia di rete principale. |
− | + | Available network interfaces are: em0 vlan0. | |
− | + | Which one do you wish to configure? (or 'done') [em0] '''Enter''' | |
− | + | Utilizzare dhcp o configurare un IP manualmente. | |
− | + | IPv4 address for em0? (or 'dhcp' or 'none') [dhcp] '''Enter''' | |
− | ' | ||
− | |||
− | |||
− | |||
+ | Salvo esigenze particolari è possibile saltare i prossimi due passaggi premendo Invio. | ||
+ | IPv6 address for em0? (or 'rtsol' or 'none') [none] '''Enter''' | ||
+ | Which one do you wish to configure? (or 'done') [done] '''Enter''' | ||
− | + | Inserire la password di root. ''"Will not echo" significa che comparirà niente sullo schermo mentre si digita la password, per conferma dopo occorrerà ridigitarla)'' | |
− | + | Password for root account? (will not echo) '''PaSsWoRd''' | |
+ | Password for root account? (again) '''PaSsWoRd''' | ||
− | + | Configurazione dei demoni del sistema di base | |
+ | Start sshd(8) by default? [yes] '''Enter''' | ||
− | + | Il network time protocol daemon è un demone che sincronizza automaticamente l'orologio della vostra macchina con alcuni server su Internet. Se avete una connessione ADSL flat può essere una buona idea rispondere '''yes''', se non vi interessa premete Invio. | |
− | + | Start ntpd(8) by default? [no] '''y''' | |
+ | NTP server? (hostname or 'default') [default] '''Enter''' | ||
− | + | Installazione del sistema grafico | |
− | + | Do you expect to run the X Window System? [yes] '''Enter''' | |
− | + | Inserire '''y''' per avviare X automaticamente all'avvio | |
+ | Do you want the X Window System to be started by xdm(1)? [no] '''y''' | ||
− | + | È possibile aggiungere un utente amministratore | |
− | + | Setup a user? (enter a lower-case loginname, or 'no') [no] '''Nome utente''' | |
− | + | Password for ''nome utente'' account? (will not echo) '''PaSsWoRd''' | |
− | + | Password for ''nome utente'' account? (again) '''PaSsWoRd'' | |
− | |||
− | |||
+ | Selezionare la zona per il fusorario | ||
+ | What timezone are you in? ('?' for list) [Canada/Mountain] '''Europe/Rome''' | ||
+ | Configurazione del disco | ||
Available disks are: wd0. | Available disks are: wd0. | ||
− | Which one is the root disk? (or done) [wd0] Enter | + | Which one is the root disk? (or done) [wd0] '''Enter''' |
+ | Use DUIDs rather than device names in fstab? [yes] Enter | ||
Se il sistema riconosce più di un disco (es. wd1) potete specificare un supporto diverso da wd0, probabilmente però dovrete installare un boot loader (es. GRUB) per poter avviare la partizione dove avete installato OpenBSD. | Se il sistema riconosce più di un disco (es. wd1) potete specificare un supporto diverso da wd0, probabilmente però dovrete installare un boot loader (es. GRUB) per poter avviare la partizione dove avete installato OpenBSD. | ||
− | + | Premere Invio per utilizzare tutto il disco, altrimenti è possibile specificare manualmente le partizioni. | |
+ | Use (W)hole disk or (E)dit the MBR? [whole] '''Enter''' | ||
+ | |||
+ | Se non si ha intenzione di usare l'intero hard disk si consiglia di partizionarlo da Linux con cfdisk o gparted ''(l'fdisk dell'OpenBSD sembra studiato ad arte per portare i neuroni dell'utente al suicidio di massa)'''. | ||
− | + | Premere '''E''' per non lasciare al sistema il compito di creare automaticamente le varie partizioni. | |
+ | Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] '''E''' | ||
Ora ci troveremo ad usare disklabel per creare le slice nella partizione dell'OpenBSD. | Ora ci troveremo ad usare disklabel per creare le slice nella partizione dell'OpenBSD. | ||
Aggiungiamo una label per la / | Aggiungiamo una label per la / | ||
− | > a a | + | > a '''a''' |
− | offset: [63] Enter | + | offset: [63] '''Enter''' |
Il punto di inizio della partizione, va bene il valore che ci dà lui. | Il punto di inizio della partizione, va bene il valore che ci dà lui. | ||
− | size: [xxxxxxxxx] 2000m | + | size: [xxxxxxxxx] '''2000m''' |
A size possiamo indicare la grandezza della slice, nel caso dell'esempio 2000 Mb, specificando k per Kb, m per Mb o g per Gb dopo il valore numerico che abbiamo inserito. | A size possiamo indicare la grandezza della slice, nel caso dell'esempio 2000 Mb, specificando k per Kb, m per Mb o g per Gb dopo il valore numerico che abbiamo inserito. | ||
Rounding to nearest cylinder: xxxxxx | Rounding to nearest cylinder: xxxxxx | ||
− | FS type: [4.2BSD] Enter | + | FS type: [4.2BSD] '''Enter''' |
− | mount point: [none] / | + | mount point: [none] '''/''' |
Aggiungiamo una label di swap | Aggiungiamo una label di swap | ||
− | + | > a '''b''' | |
− | > a b | + | offset: [xxxxxx] '''Enter''' |
− | + | size: [xxxxxxxx] '''300m''' | |
− | offset: [xxxxxx] Enter | ||
− | size: [xxxxxxxx] 300m | ||
− | |||
Rounding to nearest cylinder: xxxxxx | Rounding to nearest cylinder: xxxxxx | ||
− | FS type: [swap] Enter | + | FS type: [swap] '''Enter''' |
Per uso server o multiutente sarebbe indicato aggiungere anche delle slice per: /tmp, /var e /home | Per uso server o multiutente sarebbe indicato aggiungere anche delle slice per: /tmp, /var e /home | ||
− | + | > a '''d''' | |
− | > a d | + | offset: [xxxxxxx] '''Enter''' |
− | offset: [xxxxxxx] Enter | + | size: [xxxxxxx] '''200m''' |
− | size: [xxxxxxx] 200m | ||
− | |||
Rounding to nearest cylinder: xxxxx | Rounding to nearest cylinder: xxxxx | ||
− | FS type: [4.2BSD] Enter | + | FS type: [4.2BSD] '''Enter''' |
− | mount point: [none] /tmp | + | mount point: [none] '''/tmp''' |
E così via... | E così via... | ||
− | + | > p '''m''' | |
− | > p m | ||
Per visualizzare la situazione definitiva con i parametri in Megabyte. | Per visualizzare la situazione definitiva con i parametri in Megabyte. | ||
− | + | > '''q ''' | |
− | > q | + | Write new label?: [y] '''Enter''' |
− | Write new label?: [y] Enter | ||
− | |||
OpenBSD filesystems: | OpenBSD filesystems: | ||
wd0a / | wd0a / | ||
− | |||
The next step *DESTROYS* all existing data on these partitions! | The next step *DESTROYS* all existing data on these partitions! | ||
− | Are you really sure that you're ready to proceed? [no] | + | Are you really sure that you're ready to proceed? [no] '''y''' |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Riga 267: | Riga 200: | ||
Let's install the sets! | Let's install the sets! | ||
− | Location of sets? (cd disk ftp http or 'done') [cd] Enter | + | Location of sets? (cd disk ftp http or 'done') [cd] '''Enter''' |
Available CD-ROMs are: cd0. | Available CD-ROMs are: cd0. | ||
− | Se abbiamo usato un floppy di boot, se ci siamo scordati qualcosa nella directory / | + | Se abbiamo usato un floppy di boot, se ci siamo scordati qualcosa nella directory /5.5/i386/ della nostra iso o per qualsiasi altro motivo è possibile installare il sistema di base anche via ftp, http o da un altro disco. |
− | |||
− | |||
− | |||
− | |||
+ | Which one contains the install media? (or 'done') [cd0] '''Enter''' | ||
+ | Pathname to the sets? (or 'done') [5.5/i386] '''Enter''' | ||
Select sets by entering a set name, a file name pattern or 'all'. De-select | Select sets by entering a set name, a file name pattern or 'all'. De-select | ||
sets by prepending a '-' to the set name, file name pattern or 'all'. Selected | sets by prepending a '-' to the set name, file name pattern or 'all'. Selected | ||
sets are labeled '[x]'. | sets are labeled '[x]'. | ||
+ | [X] bsd [X] etc55.tgz [X] xbase55.tgz [X] xserv55.tgz | ||
+ | [X] bsd.rd [X] comp55.tgz [X] xetc55.tgz | ||
+ | [ ] bsd.mp [X] man55.tgz [X] xshare55.tgz | ||
+ | [X] base55.tgz [X] game55.tgz [X] xfont55.tgz | ||
− | + | Premere invio per installare tutto Vi consiglio di selezionarli tutti ed installarli, ulteriori dettagli sono disponibili qui. | |
− | + | Set name(s)? (or 'abort' or 'done') [done] Enter | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Vi consiglio di selezionarli tutti ed installarli, ulteriori dettagli sono disponibili qui. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Ignorare l'avvertimento e proseguire con l'installazione | ||
+ | Directory does not contain SHA256.sig. Continue without verification? [no] '''y''' | ||
Location of sets? (cd disk ftp http or 'done') [done] Enter | Location of sets? (cd disk ftp http or 'done') [done] Enter | ||
− | + | ||
− | + | L'installazione è terminata, quando compare la shell scrivere ''reboot'' per avviare il sistema OpenBSD. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Rendere il sistema più user friendly== | ==Rendere il sistema più user friendly== | ||
Riga 350: | Riga 230: | ||
Inserite queste righe nel file: /etc/profile | Inserite queste righe nel file: /etc/profile | ||
− | export PS1="[\u@\h \W]\\$ " | + | export PS1="[\u@\h \W]\\$ " |
− | alias ls='ls -a' | + | alias ls='ls -a' |
− | alias ll='ls -l' | + | alias ll='ls -l' |
− | alias free='top -n | head -5' | + | alias free='top -n | head -5' |
− | + | PKG_PATH="http://openbsd.mirror.garr.it/pub/OpenBSD/5.5/packages/i386/" | |
− | + | export PKG_PATH | |
− | |||
− | export PKG_PATH | ||
Vi troverete una shell con un impatto visivo molto simile alla Bash di Linux, che volendo possiamo anche installare dato che è presente nei packages e nei ports. | Vi troverete una shell con un impatto visivo molto simile alla Bash di Linux, che volendo possiamo anche installare dato che è presente nei packages e nei ports. | ||
Riga 374: | Riga 252: | ||
# mkdir /mnt/floppy | # mkdir /mnt/floppy | ||
− | Successivamente | + | Successivamente aggiungete le seguenti righe al file /etc/fstab |
+ | |||
+ | /dev/fd0a /mnt/floppy msdos rw,noauto,nosuid 0 0 | ||
+ | /dev/cd0a /mnt/cdrom cd9660 ro,noauto 0 0 | ||
+ | |||
+ | OpenBSD non possiede un filesystem che supporti il journaling, ma si consiglia di aggiungere l'opzione '''[http://www.openbsd.org/faq/faq14.html#SoftUpdates softdep]''' alle partizioni ffs | ||
+ | /dev/sd0a / ffs rw,'''softdep''' 1 1 | ||
− | |||
− | |||
Adesso per montare cdrom e floppy basteranno i comandi: | Adesso per montare cdrom e floppy basteranno i comandi: | ||
Riga 385: | Riga 267: | ||
− | Se come me avete un'immagine ISO di OpenBSD con una cartella | + | Se come me avete un'immagine ISO di OpenBSD con una cartella 5.5/packages piena di pacchetti precompilati, per installarvi dovrete entrare in quella cartella e dare il comando: |
# pkg_add pacchetto-versione.tgz | # pkg_add pacchetto-versione.tgz | ||
Riga 392: | Riga 274: | ||
# pkg_delete pacchetto-versione.tgz | # pkg_delete pacchetto-versione.tgz | ||
− | |||
− | |||
==L'albero dei port== | ==L'albero dei port== | ||
Per compilare i pacchetti in maniera automatica possiamo decomprimere l'archivio ports.tar.gz nella directory /usr. | Per compilare i pacchetti in maniera automatica possiamo decomprimere l'archivio ports.tar.gz nella directory /usr. | ||
− | # cp /mnt/cdrom/ | + | # cp /mnt/cdrom/5.5/ports.tar.gz /usr |
# cd /usr | # cd /usr | ||
# tar -xzvf ports.tar.gz | # tar -xzvf ports.tar.gz | ||
Riga 421: | Riga 301: | ||
# echo httpd_flags= >> /etc/rc.conf.local | # echo httpd_flags= >> /etc/rc.conf.local | ||
− | + | ===Bind=== | |
# echo named_flags= >> /etc/rc.conf.local | # echo named_flags= >> /etc/rc.conf.local | ||
Riga 434: | Riga 314: | ||
− | + | === Server dhcp === | |
Editare il file /etc/dhcpd.interfaces selezionando la scheda di rete dove vogliamo rendere attivo il server dhcp. Dovremmo scegliere una delle schede di rete della rete interna. | Editare il file /etc/dhcpd.interfaces selezionando la scheda di rete dove vogliamo rendere attivo il server dhcp. Dovremmo scegliere una delle schede di rete della rete interna. | ||
− | # $OpenBSD: dhcpd.interfaces,v 1.1 1998/08/19 04:25:45 form Exp $ | + | # $OpenBSD: dhcpd.interfaces,v 1.1 1998/08/19 04:25:45 form Exp $ |
− | # | + | # |
− | # List of network interfaces served by dhcpd(8). | + | # List of network interfaces served by dhcpd(8). |
− | # | + | # |
− | ne0 | + | ne0 |
− | #ep0 | + | #ep0 |
− | #de1 | + | #de1 |
− | |||
Adesso modifichiamo in questo modo il file /etc/dhcpd.conf | Adesso modifichiamo in questo modo il file /etc/dhcpd.conf | ||
− | # $OpenBSD: dhcpd.conf,v 1.1 1998/08/19 04:25:45 form Exp $ | + | # $OpenBSD: dhcpd.conf,v 1.1 1998/08/19 04:25:45 form Exp $ |
− | # | + | # |
− | # DHCP server options. | + | # DHCP server options. |
− | # See dhcpd.conf(5) and dhcpd(8) for more information. | + | # See dhcpd.conf(5) and dhcpd(8) for more information. |
− | # | + | # |
− | + | # Network: 192.168.1.0/255.255.255.0 | |
− | + | # Domain name: my.domain | |
− | # Network: 192.168.1.0/255.255.255.0 | + | # Name servers: 192.168.1.3 and 192.168.1.5 |
− | # Domain name: my.domain | + | # Default router: 192.168.1.1 |
− | # Name servers: 192.168.1.3 and 192.168.1.5 | + | # Addresses: 192.168.1.32 - 192.168.1.127 |
− | # Default router: 192.168.1.1 | + | # |
− | # Addresses: 192.168.1.32 - 192.168.1.127 | + | shared-network LOCAL-NET { |
− | # | + | option domain-name "openbsd.router"; |
− | shared-network LOCAL-NET { | + | option domain-name-servers 127.0.0.1; |
− | + | subnet 192.168.0.0 netmask 255.255.255.0 { | |
− | + | option routers 192.168.0.1; | |
− | + | range 192.168.0.100 192.168.0.150; | |
− | + | } | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | } | ||
− | |||
option domain-name-servers 127.0.0.1 - indica il server DNS che nel nostro caso coincide con la macchina stessaper cui lo imposteremo con l'indirizzo 127.0.0.1 | option domain-name-servers 127.0.0.1 - indica il server DNS che nel nostro caso coincide con la macchina stessaper cui lo imposteremo con l'indirizzo 127.0.0.1 | ||
Riga 484: | Riga 357: | ||
Per attivare il servizio dhcpd dovremo editare nuovamente il file /etc/rc.conf sostituendo la riga | Per attivare il servizio dhcpd dovremo editare nuovamente il file /etc/rc.conf sostituendo la riga | ||
− | dhcpd_flags=NO # for normal use: "" | + | dhcpd_flags=NO # for normal use: "" |
− | |||
con | con | ||
+ | dhcpd_flags="" # for normal use: "" | ||
− | |||
− | + | ==Condivisione della connessione== | |
− | |||
− | Condivisione della connessione | ||
Per condividere la connessione dobbiamo attivare l'IP forwarding in modo che i pacchetti possano passare dal router al client che li ha richiesti. | Per condividere la connessione dobbiamo attivare l'IP forwarding in modo che i pacchetti possano passare dal router al client che li ha richiesti. | ||
− | + | # sysctl net.inet.ip.forwarding=1 | |
− | |||
− | |||
Per rendere questa modifica permanente dovremo modificare il file /etc/sysctl.conf modificando la riga | Per rendere questa modifica permanente dovremo modificare il file /etc/sysctl.conf modificando la riga | ||
− | net.inet.ip.forwarding=0 | + | net.inet.ip.forwarding=0 |
− | |||
in | in | ||
− | + | net.inet.ip.forwarding=1 | |
− | net.inet.ip.forwarding=1 | ||
Ed abilitare il routing da /etc/rc.conf sostituendo | Ed abilitare il routing da /etc/rc.conf sostituendo | ||
− | + | routed_flags=NO # for normal use: "-q" | |
− | routed_flags=NO # for normal use: "-q" | ||
− | |||
con | con | ||
− | + | routed_flags="-q" # for normal use: "-q" | |
− | routed_flags="-q" # for normal use: "-q" | ||
− | |||
− | |||
Adesso è la volta di vedere la configurazione del firewall /etc/pf.conf | Adesso è la volta di vedere la configurazione del firewall /etc/pf.conf | ||
− | + | Selezioniamo l'interfaccia di rete verso l'esterno | |
− | ext_if="pppoe0" | + | ext_if="pppoe0" |
+ | Adesso quella verso la LAN interna attraverso la quale condivideremo la connessione | ||
+ | int_if="ne0" | ||
− | |||
− | |||
− | + | Impostiamo il nat dall'interfaccia esterna a tutte le altre | |
− | |||
nat on $ext_if from !($ext_if) -> ($ext_if:0) | nat on $ext_if from !($ext_if) -> ($ext_if:0) | ||
− | + | Blocchiamo in ingresso dall'esterno la porta 53, quella del DNS, per quando riguarda | |
− | + | il protocollo UDP così che nessuno da fuori possa sfruttare il nostro dns | |
− | block in on $ext_if proto udp to port = 53 | + | block in on $ext_if proto udp to port = 53 |
− | + | Potremmo bloccare la porta UDP 53 anche solamente per un certo range di IP, ad esempio | |
− | + | gli IP che non fanno parte della sottorete 150.xxx.xxx.0/24 | |
− | + | block in on $ext_if proto { tcp, udp } from !150.xxx.xxx.0/24 to port = 53 keep state | |
− | + | Blocchiamo i pacchetti ICMP così non ci rompono le scatole con i ping | |
− | block in proto icmp from any to any | + | block in proto icmp from any to any |
− | # scrub for NAT in PPPoE for using max mtu value | + | # scrub for NAT in PPPoE for using max mtu value |
− | # questo parametro seve per far funzionare il nat con il pppoe | + | # questo parametro seve per far funzionare il nat con il pppoe |
− | scrub out on pppoe0 max-mss 1440 | + | scrub out on pppoe0 max-mss 1440 |
Riga 584: | Riga 444: | ||
− | Pure-ftpd | + | ==Pure-ftpd== |
Pure-ftpd è un server ftp molto semplice, ma al tempo stesso altamente configurabile. | Pure-ftpd è un server ftp molto semplice, ma al tempo stesso altamente configurabile. | ||
Per installarlo lanciamo il comando: | Per installarlo lanciamo il comando: | ||
− | |||
# pkg_add pure-ftpd-1.0.20.tar.gz | # pkg_add pure-ftpd-1.0.20.tar.gz | ||
Per eseguirlo automaticamente all'avvio è necessario aggiungere al file /etc/rc.local queste righe: | Per eseguirlo automaticamente all'avvio è necessario aggiungere al file /etc/rc.local queste righe: | ||
− | + | if [ -x ${PREFIX}/sbin/pure-ftpd ]; then | |
− | if [ -x ${PREFIX}/sbin/pure-ftpd ]; then | ||
echo Starting Pure-FTPd | echo Starting Pure-FTPd | ||
${PREFIX}/sbin/pure-ftpd -A -B -H -u1000 | ${PREFIX}/sbin/pure-ftpd -A -B -H -u1000 | ||
− | fi | + | fi |
+ | |||
Questa sopra è la configurazione di default, ecco invece la mia: | Questa sopra è la configurazione di default, ecco invece la mia: | ||
− | |||
if [ -x ${PREFIX}/sbin/pure-ftpd ]; then | if [ -x ${PREFIX}/sbin/pure-ftpd ]; then | ||
echo Starting Pure-FTPd | echo Starting Pure-FTPd | ||
Riga 609: | Riga 467: | ||
Vi spiego brevemente a cosa servono tutti gli argomenti che ho impostato: | Vi spiego brevemente a cosa servono tutti gli argomenti che ho impostato: | ||
-B demonizza il processo | -B demonizza il processo | ||
+ | |||
-A fa il chroot del server | -A fa il chroot del server | ||
+ | |||
-H non risolve via dns gli IP delle connessioni, risparmiando banda e cpu | -H non risolve via dns gli IP delle connessioni, risparmiando banda e cpu | ||
+ | |||
-u <valore> nessun utente con un gid inferiore a "valore" può loggarsi, utile per non far loggare root | -u <valore> nessun utente con un gid inferiore a "valore" può loggarsi, utile per non far loggare root | ||
+ | |||
-c limite di connessioni dallo stesso IP | -c limite di connessioni dallo stesso IP | ||
+ | |||
-C limite totale di connessioni supportate | -C limite totale di connessioni supportate | ||
+ | |||
-y limite di connessioni per uno stesso utente:utente_anonimo | -y limite di connessioni per uno stesso utente:utente_anonimo | ||
+ | |||
-n limite numero_files:Mb_occupati, permette di creare delle quote che l'utente non può superare | -n limite numero_files:Mb_occupati, permette di creare delle quote che l'utente non può superare | ||
+ | |||
-k se il disco è pieno più del 95% non permette upload | -k se il disco è pieno più del 95% non permette upload | ||
+ | |||
-O stats:/var/log/pureftpd.log esegue il log del server nel formato stats sul file indicato | -O stats:/var/log/pureftpd.log esegue il log del server nel formato stats sul file indicato | ||
+ | |||
-I Timeout in minuti, nel mio caso se un utente rimane inattivo per più di 5 min viene disconnesso | -I Timeout in minuti, nel mio caso se un utente rimane inattivo per più di 5 min viene disconnesso | ||
+ | |||
-F permette di indicare un file col messaggio di benvenuto | -F permette di indicare un file col messaggio di benvenuto | ||
+ | |||
-t limita la banda degli utenti anonimi upload:download | -t limita la banda degli utenti anonimi upload:download | ||
+ | |||
-T limita la banda utenti normali upload:download | -T limita la banda utenti normali upload:download | ||
-a permette di indicare un gid corrispondente ad un gruppo di utenti considerati trusted che di conseguenza non vengono chrootati. Non va usato insieme all'opzione -A. | -a permette di indicare un gid corrispondente ad un gruppo di utenti considerati trusted che di conseguenza non vengono chrootati. Non va usato insieme all'opzione -A. | ||
+ | |||
+ | [[Category:Howto]] |
Versione attuale delle 16:42, 21 set 2015
Storia
Nel Giugno del 1996 Theo de Raadt, uno dei primi sviluppatori del NetBSD, si allontana dal progetto a causa di attriti con il resto della comunità. Il suo fork prenderà il nome di OpenBSD e i suoi obiettivi saranno: sicurezza, rispetto degli standard e portabilità.
Creazione di un supporto d'avvio per l'installazione
In questo articolo mi occuperò solamente dell'installazione e configurazione di base del port di OpenBSD per piattaforma i386 nella sua ultima versione: la 5.5. Per non sovraccaricare il server primario è consigliabile utilizzare un mirror, il mirror italiano si trova a questo indirizzo: ftp://openbsd.mirror.garr.it/pub/OpenBSD/5.5/i386/
Possiamo scegliere tra diversi file d'immagine per installare il sistema:
- floppy55.fs (Desktop PC) supporta la maggior parte delle periferiche PCI, ISA, dei controller IDE e SCSI e alcune schede PCMCIA.
- floppyB55.fs (Servers) supporta diversi controller RAID e SCSI non presenti nel floppy39.fs.
- floppyC55.fs (Laptops) contiene i driver CardBus and PCMCIA della maggior parte dei normali laptop.
- cd55.iso è una immagine ISO9660 che può essere usata per creare CD d'avvio. Contiene la più numerosa selezione di driver, se la macchina in cui vogliamo installare OpenBSD ha il supporto per il CDROM questa è probabilmente la scelta migliore.
- install55.iso immagine standard per l'installazione da CD-ROM, nella maggior parte dei casi è questo il file che conviene masterizzare
- install55.fs immagine standard per l'installazione da USB
Creazione di un floppy di boot
Da sistemi BSD
Scaricare il file immagine desiderato (es. floppy55.fs)
Formattare un floppy
# fdformat /dev/rfd0c Format 1440K floppy `/dev/rfd0c'? (y/n): y Processing VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV done.
Se il floppy dovesse avere dei settori danneggiati sostituitelo.
Adesso scriviamo l'immagine sul floppy
# dd if=floppy55.fs of=/dev/rfd0c bs=32k
Da Linux
# fdformat /dev/fd0 # dd if=floppy55.fs of=/dev/fd0
Da MS DOS o Windows
Formattazione del floppy
C:\> format a:
Scrittura dell'immagine con rawrite
C:\> rawrite RaWrite 1.2 - Write disk file to raw floppy diskette Enter source file name: floppy55.fs Enter destination drive: a Please insert a formatted diskette into drive A: and press -ENTER- : Enter
Creazione di una ISO personalizzata
Molti potrebbero avere bisogno di un'iso per cdrom contenente non solo il sistema base, ma anche i sorgenti o dei pacchetti precompilati.
Scaricate tutto il contenuto di ftp://openbsd.mirror.garr.it/pub/OpenBSD/5.5/i386/ in OpenBSD/5.5/ Io per eseguire queste operazioni uso wget con l'opzione mirror, ma è possibile utilizzare qualsiasi client ftp.
# wget -m ftp://openbsd.mirror.garr.it/pub/OpenBSD/5.5/i386/ # mv openbsd.mirror.garr.it/pub/OpenBSD . # rm -rf openbsd.mirror.garr.it # cd OpenBSD/
Se ci interessa possiamo scaricare
- ports.tar.gz - l'albero dei ports.
- src.tar.gz - i sorgenti del sistema operativo di base.
- sys.tar.gz - i sorgenti del kernel.
- xenocara.tar.gz - i sorgenti del server grafico.
Possiamo anche creare la directory packages/ e aggiungervi qualsiasi pacchetto precompilato si desideri installare dopo l'installazione del sistema di base. Naturalmente si dovrà fare attenzione alle dipendenze di ciascun pacchetto scaricato e a non superare lo spazio del supporto sul quale vogliamo andare a scrivere la nostra iso.
# mkdir packages # cd packages # wget -m ftp://openbsd.mirror.garr.it/pub/OpenBSD/5.5/packages/i386/
Se non ci siete tornate nella cartella OpenBSD/ e date un comando di questo genere per creare la vostra iso
# mkisofs -r -l -V "OpenBSD-5.5" -A "OpenBSD v5.5-Release, \ Custom ISO, 06-05-2014." -b 5.5/i386/install55.fs -c boot.catalog \ -o openbsd-i386-5.5.iso ../OpenBSD/
Per masterizzare l'iso va bene qualsiasi programma: K3B, Nero o da linea di comando:
# cdrecord -v -tao dev=/dev/il_vostro_masterizzatore -data driveropts=burnfree openbsd-i386-5.5.iso
Installazione
Le parole o le lettere in neretto corrispondono a quello che dovreste digitare per proseguire con l'installazione. Fate fare il boot da CDROM al vostro computer e se tutto va bene dovrebbe apparirvi questo:
Welcome to the OpenBSD/i386 5.5 install program. (I)nstall, (U)pgrade, (A)utoinstall or (S)hell? i
Selezionare it per la tastiera italiana e dare un nome al computer.
Choose your keyboard layout ('?' or 'L' for list) [default] it System hostname? (short form, e.g. 'foo') puffy
Premere invio per configurare l'interfaccia di rete principale.
Available network interfaces are: em0 vlan0. Which one do you wish to configure? (or 'done') [em0] Enter
Utilizzare dhcp o configurare un IP manualmente.
IPv4 address for em0? (or 'dhcp' or 'none') [dhcp] Enter
Salvo esigenze particolari è possibile saltare i prossimi due passaggi premendo Invio.
IPv6 address for em0? (or 'rtsol' or 'none') [none] Enter Which one do you wish to configure? (or 'done') [done] Enter
Inserire la password di root. "Will not echo" significa che comparirà niente sullo schermo mentre si digita la password, per conferma dopo occorrerà ridigitarla)
Password for root account? (will not echo) PaSsWoRd Password for root account? (again) PaSsWoRd
Configurazione dei demoni del sistema di base
Start sshd(8) by default? [yes] Enter
Il network time protocol daemon è un demone che sincronizza automaticamente l'orologio della vostra macchina con alcuni server su Internet. Se avete una connessione ADSL flat può essere una buona idea rispondere yes, se non vi interessa premete Invio.
Start ntpd(8) by default? [no] y NTP server? (hostname or 'default') [default] Enter
Installazione del sistema grafico
Do you expect to run the X Window System? [yes] Enter
Inserire y per avviare X automaticamente all'avvio
Do you want the X Window System to be started by xdm(1)? [no] y
È possibile aggiungere un utente amministratore
Setup a user? (enter a lower-case loginname, or 'no') [no] Nome utente Password for nome utente account? (will not echo) PaSsWoRd Password for nome utente account? (again) 'PaSsWoRd
Selezionare la zona per il fusorario What timezone are you in? ('?' for list) [Canada/Mountain] Europe/Rome
Configurazione del disco
Available disks are: wd0. Which one is the root disk? (or done) [wd0] Enter Use DUIDs rather than device names in fstab? [yes] Enter
Se il sistema riconosce più di un disco (es. wd1) potete specificare un supporto diverso da wd0, probabilmente però dovrete installare un boot loader (es. GRUB) per poter avviare la partizione dove avete installato OpenBSD.
Premere Invio per utilizzare tutto il disco, altrimenti è possibile specificare manualmente le partizioni.
Use (W)hole disk or (E)dit the MBR? [whole] Enter
Se non si ha intenzione di usare l'intero hard disk si consiglia di partizionarlo da Linux con cfdisk o gparted (l'fdisk dell'OpenBSD sembra studiato ad arte per portare i neuroni dell'utente al suicidio di massa)'.
Premere E per non lasciare al sistema il compito di creare automaticamente le varie partizioni.
Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] E
Ora ci troveremo ad usare disklabel per creare le slice nella partizione dell'OpenBSD. Aggiungiamo una label per la /
> a a offset: [63] Enter
Il punto di inizio della partizione, va bene il valore che ci dà lui.
size: [xxxxxxxxx] 2000m
A size possiamo indicare la grandezza della slice, nel caso dell'esempio 2000 Mb, specificando k per Kb, m per Mb o g per Gb dopo il valore numerico che abbiamo inserito.
Rounding to nearest cylinder: xxxxxx FS type: [4.2BSD] Enter mount point: [none] /
Aggiungiamo una label di swap
> a b offset: [xxxxxx] Enter size: [xxxxxxxx] 300m Rounding to nearest cylinder: xxxxxx FS type: [swap] Enter
Per uso server o multiutente sarebbe indicato aggiungere anche delle slice per: /tmp, /var e /home
> a d offset: [xxxxxxx] Enter size: [xxxxxxx] 200m Rounding to nearest cylinder: xxxxx FS type: [4.2BSD] Enter mount point: [none] /tmp
E così via...
> p m
Per visualizzare la situazione definitiva con i parametri in Megabyte.
> q Write new label?: [y] Enter OpenBSD filesystems: wd0a / The next step *DESTROYS* all existing data on these partitions! Are you really sure that you're ready to proceed? [no] y
Installazione del sistema di base
Let's install the sets! Location of sets? (cd disk ftp http or 'done') [cd] Enter
Available CD-ROMs are: cd0.
Se abbiamo usato un floppy di boot, se ci siamo scordati qualcosa nella directory /5.5/i386/ della nostra iso o per qualsiasi altro motivo è possibile installare il sistema di base anche via ftp, http o da un altro disco.
Which one contains the install media? (or 'done') [cd0] Enter Pathname to the sets? (or 'done') [5.5/i386] Enter Select sets by entering a set name, a file name pattern or 'all'. De-select sets by prepending a '-' to the set name, file name pattern or 'all'. Selected sets are labeled '[x]'.
[X] bsd [X] etc55.tgz [X] xbase55.tgz [X] xserv55.tgz [X] bsd.rd [X] comp55.tgz [X] xetc55.tgz [ ] bsd.mp [X] man55.tgz [X] xshare55.tgz [X] base55.tgz [X] game55.tgz [X] xfont55.tgz
Premere invio per installare tutto Vi consiglio di selezionarli tutti ed installarli, ulteriori dettagli sono disponibili qui.
Set name(s)? (or 'abort' or 'done') [done] Enter
Ignorare l'avvertimento e proseguire con l'installazione
Directory does not contain SHA256.sig. Continue without verification? [no] y Location of sets? (cd disk ftp http or 'done') [done] Enter
L'installazione è terminata, quando compare la shell scrivere reboot per avviare il sistema OpenBSD.
Rendere il sistema più user friendly
Inserite queste righe nel file: /etc/profile
export PS1="[\u@\h \W]\\$ " alias ls='ls -a' alias ll='ls -l' alias free='top -n | head -5' PKG_PATH="http://openbsd.mirror.garr.it/pub/OpenBSD/5.5/packages/i386/" export PKG_PATH
Vi troverete una shell con un impatto visivo molto simile alla Bash di Linux, che volendo possiamo anche installare dato che è presente nei packages e nei ports.
[nomeutente@nomecomputer directory]$
Avendo esportato automaticamente il PKG_PATH, al prossimo login (non importa riavviare), per installare un pacchetto da Internet vi sarà sufficiente usare
# pkg_add nomepacchetto-versione.tgz
Create le directory /mnt/cdrom e /mnt/floppy dove montare i rispettivi device, su OpenBSD di default non vengono create.
# mkdir /mnt/cdrom # mkdir /mnt/floppy
Successivamente aggiungete le seguenti righe al file /etc/fstab
/dev/fd0a /mnt/floppy msdos rw,noauto,nosuid 0 0 /dev/cd0a /mnt/cdrom cd9660 ro,noauto 0 0
OpenBSD non possiede un filesystem che supporti il journaling, ma si consiglia di aggiungere l'opzione softdep alle partizioni ffs
/dev/sd0a / ffs rw,softdep 1 1
Adesso per montare cdrom e floppy basteranno i comandi:
# mount /mnt/cdrom # mount /mnt/floppy
Se come me avete un'immagine ISO di OpenBSD con una cartella 5.5/packages piena di pacchetti precompilati, per installarvi dovrete entrare in quella cartella e dare il comando:
# pkg_add pacchetto-versione.tgz
Per togliere un pacchetto invece:
# pkg_delete pacchetto-versione.tgz
L'albero dei port
Per compilare i pacchetti in maniera automatica possiamo decomprimere l'archivio ports.tar.gz nella directory /usr.
# cp /mnt/cdrom/5.5/ports.tar.gz /usr # cd /usr # tar -xzvf ports.tar.gz # rm ports.tar.gz # cd ports
Nella directory /usr/ports troveremo tutti i sorgenti dei pacchetti del software aggiuntivo disponibili per OpenBSD. Es.: per compilare ed installare nmap dovremo fare così:
# cd /usr/ports/net/nmap # make install
Configurazione di alcuni demoni utili
Editando il file di configurazione /etc/rc.conf è possibile gestire l'avvio automatico dei server del sistema di base. Però come sostengono anche nel manuale ufficiale dell'OpenBSD sarebbe buona norma non toccare mai il file /etc/rc.conf. Per facilitare successivi upgrade è meglio creare al suo posto il file /etc/rc.conf.local che al boot ne sovrascrive le impostazioni e copiarvi solamente le linee che vogliamo modificare. In questo modo otteniamo un unico file contenente tutte le modifiche.
Per avviare automaticamente Apache (già sotto chroot)
# echo httpd_flags= >> /etc/rc.conf.local
Bind
# echo named_flags= >> /etc/rc.conf.local
Personalmente cerco sempre di avere un server dns di cache nella mia rete locale in modo da non essere dipendente da quello del mio ISP. Una volta avviato Bind per sfruttarlo dal computer dove è installato dovrete anche modificare il file /etc/resolv.conf ed aggiungere come prima riga:
nameserver 127.0.0.1
Per gli altri computer della rete sarà sufficiente indicare come server DNS l'indirizzo IP locale del vostro server Bind, oppure effettuare tutto tramite dhcp se lo avete installato sul server.
Server dhcp
Editare il file /etc/dhcpd.interfaces selezionando la scheda di rete dove vogliamo rendere attivo il server dhcp. Dovremmo scegliere una delle schede di rete della rete interna.
# $OpenBSD: dhcpd.interfaces,v 1.1 1998/08/19 04:25:45 form Exp $ # # List of network interfaces served by dhcpd(8). # ne0 #ep0 #de1
Adesso modifichiamo in questo modo il file /etc/dhcpd.conf
# $OpenBSD: dhcpd.conf,v 1.1 1998/08/19 04:25:45 form Exp $ # # DHCP server options. # See dhcpd.conf(5) and dhcpd(8) for more information. # # Network: 192.168.1.0/255.255.255.0 # Domain name: my.domain # Name servers: 192.168.1.3 and 192.168.1.5 # Default router: 192.168.1.1 # Addresses: 192.168.1.32 - 192.168.1.127 # shared-network LOCAL-NET { option domain-name "openbsd.router"; option domain-name-servers 127.0.0.1; subnet 192.168.0.0 netmask 255.255.255.0 { option routers 192.168.0.1; range 192.168.0.100 192.168.0.150; } }
option domain-name-servers 127.0.0.1 - indica il server DNS che nel nostro caso coincide con la macchina stessaper cui lo imposteremo con l'indirizzo 127.0.0.1
option routers 192.168.0.1; - indica l'indirizzo IP del gateway, corrisponde all'IP della scheda di rete sul quale vogliamo attivare il dhcpd.
range 192.168.0.100 192.168.0.150; - ci permette di selezionare un range di indirizzi IP per il dhcp. Secondo le mie impostazioni nella LAN posso utilizzare gli indirizzi da 192.168.0.1 a 192.168.0.99 staticamente come IP fissi, mentre quelli da 192.168.0.100 a 192.168.0.150 verranno assegnati dinamicamente dal demone dhcp. (Anche gli indirizzi sopra al 192.168.0.150 sono liberi).
Per attivare il servizio dhcpd dovremo editare nuovamente il file /etc/rc.conf sostituendo la riga
dhcpd_flags=NO # for normal use: ""
con
dhcpd_flags="" # for normal use: ""
Condivisione della connessione
Per condividere la connessione dobbiamo attivare l'IP forwarding in modo che i pacchetti possano passare dal router al client che li ha richiesti.
# sysctl net.inet.ip.forwarding=1
Per rendere questa modifica permanente dovremo modificare il file /etc/sysctl.conf modificando la riga
net.inet.ip.forwarding=0
in
net.inet.ip.forwarding=1
Ed abilitare il routing da /etc/rc.conf sostituendo
routed_flags=NO # for normal use: "-q"
con
routed_flags="-q" # for normal use: "-q"
Adesso è la volta di vedere la configurazione del firewall /etc/pf.conf
Selezioniamo l'interfaccia di rete verso l'esterno
ext_if="pppoe0"
Adesso quella verso la LAN interna attraverso la quale condivideremo la connessione
int_if="ne0"
Impostiamo il nat dall'interfaccia esterna a tutte le altre
nat on $ext_if from !($ext_if) -> ($ext_if:0)
Blocchiamo in ingresso dall'esterno la porta 53, quella del DNS, per quando riguarda
il protocollo UDP così che nessuno da fuori possa sfruttare il nostro dns
block in on $ext_if proto udp to port = 53
Potremmo bloccare la porta UDP 53 anche solamente per un certo range di IP, ad esempio
gli IP che non fanno parte della sottorete 150.xxx.xxx.0/24
block in on $ext_if proto { tcp, udp } from !150.xxx.xxx.0/24 to port = 53 keep state
Blocchiamo i pacchetti ICMP così non ci rompono le scatole con i ping
block in proto icmp from any to any
# scrub for NAT in PPPoE for using max mtu value # questo parametro seve per far funzionare il nat con il pppoe scrub out on pppoe0 max-mss 1440
Configurazione dell'interfaccia hostname.pppoe
OpenBSD permette una semplice configurazione di tutte le interfacce di rete. Dobbiamo creare dei file del tipo hostname.nome_device nella directory /etc
es. il file /etc/hostname.ep0 potrebbe contenere quanto segue:
inet 192.168.0.1 255.255.255.0 NONE
Oppure, se viene configurata tramite dhcp semplicemente avere questa riga:
dhcp
Significherebbe che la nostra scheda di rete /dev/ep0 ha l'indirizzo 192.168.0.1 e la netmask 255.255.255.0
I sistemi BSD identificano le schede di rete col nome del driver ed un numero, quindi possono coesistere più schede con il medesimo numeo.
Non avremo come su Linux /dev/eth0, eth1, eth2... ma ne0, ne1 se abbiamo due schede NE2000 compatibile; ep0, ep1, ep2 per le 3Com e così via.
Un'impostazione tipica del file /etc/hostname.ppoe0
pppoedev ne0 !/sbin/ifconfig ne0 up !/usr/sbin/spppcontrol \$if myauthproto=pap myauthname=testcaller \ myauthkey=donttell !/sbin/ifconfig \$if inet 0.0.0.0 0.0.0.1 netmask 0xffffffff !/sbin/route add default 0.0.0.1 up
ne0 è l'interfaccia di rete alla quale è attaccato il modem ethernet. myauthname e mayautkey sono rispettivamente l'username e la password.
Pure-ftpd
Pure-ftpd è un server ftp molto semplice, ma al tempo stesso altamente configurabile. Per installarlo lanciamo il comando:
# pkg_add pure-ftpd-1.0.20.tar.gz
Per eseguirlo automaticamente all'avvio è necessario aggiungere al file /etc/rc.local queste righe:
if [ -x ${PREFIX}/sbin/pure-ftpd ]; then echo Starting Pure-FTPd ${PREFIX}/sbin/pure-ftpd -A -B -H -u1000 fi
Questa sopra è la configurazione di default, ecco invece la mia:
if [ -x ${PREFIX}/sbin/pure-ftpd ]; then echo Starting Pure-FTPd ${PREFIX}/sbin/pure-ftpd -B -A -H -u 1000 -c 3 -C 5 -y 4:3 -n 40000:100 -k 95 \ -O stats:/var/log/pureftpd.log -I 5 -F /etc/welcome.msg -t 1:15 fi
Vi spiego brevemente a cosa servono tutti gli argomenti che ho impostato: -B demonizza il processo
-A fa il chroot del server
-H non risolve via dns gli IP delle connessioni, risparmiando banda e cpu
-u <valore> nessun utente con un gid inferiore a "valore" può loggarsi, utile per non far loggare root
-c limite di connessioni dallo stesso IP
-C limite totale di connessioni supportate
-y limite di connessioni per uno stesso utente:utente_anonimo
-n limite numero_files:Mb_occupati, permette di creare delle quote che l'utente non può superare
-k se il disco è pieno più del 95% non permette upload
-O stats:/var/log/pureftpd.log esegue il log del server nel formato stats sul file indicato
-I Timeout in minuti, nel mio caso se un utente rimane inattivo per più di 5 min viene disconnesso
-F permette di indicare un file col messaggio di benvenuto
-t limita la banda degli utenti anonimi upload:download
-T limita la banda utenti normali upload:download
-a permette di indicare un gid corrispondente ad un gruppo di utenti considerati trusted che di conseguenza non vengono chrootati. Non va usato insieme all'opzione -A.