r1 - 17 Jul 2021 - 12:43:50 - SandroDentellaYou are here: TWiki >  Reteisi Web > UnaPagina
ANNUNCIO: L'aggiornamento dei pacchetti ISI produce importanti cambiamenti, leggete questa nota

Problematica

Quando abbiamo promosso il progetto ISI, le nostre scuole si trovavano, chi piu', chi meno, essenzialmente nella seguente situazione:
  • esistenza di uno o piu' cablaggi indipendenti per segreteria e aule d'informatica
  • situazione impiantistica completamente disomogenea tra i vari edifici della stessa istituzione scolastica (Istituti composti da piu' edifici o addirittura da sedi poste a distanza geografica)
  • tipologie di rete differenti (sia peer che client-server)
  • nessun cablaggio strutturalmente concepito per il lavoro organizzativo necessario all'attivita' didattica, o per il lavoro di staff o per compiti di supporto alle decisioni
  • qualche macchina a disposizione di preside, docenti e altro personale solitamente non facenti parte di alcuna rete
  • accesso internet limitato
  • indisponibilita` di strumentazione informatica nelle aule
  • gestione degli utenti e della sicurezza limitata se non del tutto assente

A fronte di questa situazione di fatto e stante le indicazioni e le riflessioni "organizzative" delineate nel Rapporto del Gruppo di Lavoro per le infrastrutture informatiche delle scuole lombarde, abbiamo pensato che valesse la pena lavorare, per quanto riguarda il piano infrastrutturale, al fine di:

  • estendere i cablaggi esistenti a tutti i locali significativi per la vita della scuola, sia, quindi, i laboratori o le aule appositamente dedicati, sia tutti i locali di solito a disposizione dei docenti per le attivita` di organizzazione della didattica, sia gli Uffici (segreteria, presidenza) o altri locali adibiti all'erogazione di servizi (biblioteca, bidellerie)
  • estendere il cablaggio a tutti gli edifici in cui si articolano le nostre scuole (posa di tratte in fibra ottica laddove possibile, o collegamenti di tipo VPN, per le sedi staccate o per i plessi troppo lontani)
  • omogeneizzare le tipologie di rete con eliminazione di tutti i segmenti peer e l'adozione di un unico modello client-server
  • estendere l'accesso internet a tutte le postazioni disponibili
  • adottare un solido modello di sicurezza sia per la protezione della rete da attacchi esterni (firewall) sia per il controllo del traffico interno e dell'accesso alle risorse disponibili (autenticazione di tutti gli utenti)
  • sperimentare l'informatica in aula mediante l'adozione di estensioni wireless e di laboratori mobili
  • migliorare efficenza e sicurezza attraverso l'adozione di dispositivi (switch managed) che consentono la creazione e la gestione di reti virtuali (VLAN) dedicate (alla didattica, all'organizzazione, agli Uffici), per cui la rete interna viene ad essere non una semplice LAN ma una vera e propria intranet (reti distinte interconnesse)
  • adottare in generale tutti i protocolli e le soluzioni architetturali proprie di internet
  • sviluppare quanto necessario all'amministrazione remota di tutti gli apparati attivi (in effetti in questo momento, le scuole di ReteIsi collaborano all'amministrazione degli apparati funzionanti in ogni sede, fornendosi mutua assistenza).
  • realizzare il programma sopra delineato utilizzando esclusivamente tecnologie open source col doppio scopo sia di eliminare i problemi connessi con licenze d'uso proprietarie (costi e reati penali), sia di semplificare i meccanismi amministrativi connessi con la scelta, il reperimento, il testing e l'adozione di questa o quella soluzione software.
  • elaborare infine le soluzioni adottate in una forma tale da permetterne la replicazione presso altre Scuole interessate ad attivare servizi analoghi a quelli disponibile sulle nostre infrastrutture.

Architettura

Di seguito viene descritto il modello fondamentale adottato in ognuna delle scuole che partecipano a ReteIsi, variazioni allo schema base, necessarie, per risolvere situazioni locali, sono descritte nelle pagine relative a ciascuna Scuola. Fare click sugli elementi sensibili della mappa per le spiegazioni relative.
Lo schema mostra gli elementi essenziali del modello di intranet scolastica che il progetto ISI propone. I punti che ci preme segnalare sono essenzialmente i seguenti:

isimodello.gif
  • e' prevista la completa integrazione di tutti i segmenti lan presenti nella sede principale (o la posa dei relativi cablaggi)
  • e' prevista la replicazione della struttura (eventualmente in modo piu' semplice) presso le sedi staccate o i plessi periferici, la connessione degli stessi alla intranet d'Istituto e' assicurata tramite connessioni VPN
  • e' prevista l'articolazione della rete in una molteplicita` di sottoreti virtuali (VLAN) al fine di assicurare, oltre alla protezione da traffico indesiderato, un migliore utilizzo della banda disponibile
  • e' evitato in ogni caso l'accesso diretto a Internet che avviene attraverso la mediazione di un firewall su cui sono attivati i servizi necessari alla protezione da attacchi esterni ma anche tutto cio' che e' necessario per monitoreare e filtrare il traffico da e verso Internet consentendo il pieno controllo degli accessi
  • e' prevista la piena interoperabilita' Linux-Windows nel modo seguente:
    • a Linux sono affidate le sottoreti di staff e dei laboratori, l'autenticazione degli utenti (sia linux che windows) tutte le funzionalita' di file server, i servizi di firewalling e di gestione delle VLAN, il networking, il routing e tutti i servizi Internet (web server, mail server), nonche' la gestione di tutti i router adsl anche con funzionalita' di bilanciamento del carico
    • a Windows 2000 server e' affidata la completa gestione della Segreteria, cio' e' reso necessario dall'adozione di SISSI in rete quale gestionale principale (purtroppo! perche' avremmo preferito e auspichiamo un SISSI open source)
    • tutti i client hanno al momento Windows (9x/2k/XP) come sistema operativo standard; necessita' didattiche, funzionali e/o di semplice curiosita' e autoformazione spingono verso l'implementazione di sistemi dual-boot linux/win o comunque verso l'adozione anche di desktop Linux remoti

ArgoLinux è un progetto basato su Debian con caratteristiche che abbiamo trovato adatte alle nostre esigenze, in particolare:

  • installazione e replica semplificata
  • funzionamento da cdrom con salvataggio della configurazione su floppy: in questo modo è facile implementare un servizio di firewall sicuro e di immediato ripristino
  • semplicità della gestione dei runlevel e della configurazione di startup dei servizi (Argo adotta il sistema di boot del progetto Gibralthar)
  • facilità di configurazione del firewall
  • facilità di creazione di moduli Webmin ad hoc (Argo adotta una versione di Webmin che supporta la scrittura di moduli in PHP)

Queste caratteristiche non alterano la compatibilità con la distribuzione ufficiale che è, al momento, la Debian Woody (kernel 2.4.24), di cui possono perciò essere adottati tutti i pacchetti esistenti. Sono garantite pertanto tutte quelle le caratteristiche che fanno di Debian una delle distribuzione più stabili, sicure e meglio supportate in circolazione.

Requisiti hardware

L'installazione di Argolinux non richiede un computer particolarmente potente di per sè, dipende da cosa intendete farci. Facciamo alcuni esempi:

Un firewall:

Per realizzare un potente firewall da interporre tra il router ADSL e la rete locale in modo da evitare attacchi indesiderati da internet, e nel contempo consentire l'accesso da remoto ai server e agli apparati di rete, è sufficiente una macchina con le seguenti caratteristiche:
  • CPU pentium 2 (in teoria dovrebbe essere possibile anche con macchine pentium ma il kernel è ottimizzato per pentium2 e superiori)
  • RAM 32 mb sono stati sufficienti a gestire un firewall con 3 schede di rete 10/100 mbps (una per la lan e le altre per due router collegati a differenti linee adsl)
  • HD 1 Gb dovrebbe essere più che sufficiente (I servizi offerti da una configurazione normale comprendono anche Dhcp e DNS server, VPN per il collegamento con i plessi non raggiungibili altrimenti)
Questa è ovviamente una configurazione minima. Sarebbe meglio avere un po' più di Ram a disposizione, per esempio 256 mb possono essere più che suficenti. Anche un disco fisso più capiente sarebbe opportuno. In una delle nostre scuole il disco di un firewall su cui girava anche Squid e Sarg (generatore di report di Squid) si è riempito proprio a causa dei log in pochi mesi. Un disco da 10 gb si rivela in questi casi più indicato.

Un file server:

Per realizzare un file server è opportuno utilizzare una macchina più potente, sia come processore, che soprattutto come Ram e capacità di memorizzazione.
Le macchine originariamente acquistate (2003) per il progetto ISI avevano le seguenti caratteristiche:
  • CPU Pentium 4 2,4 gHz
  • RAM 1 gB ddr
  • HD n.2 dischi da 80 gB in mirroring software
  • device di backup: masterizzatore DVD-ram
  • scheda di rete gigabit
Tutto questo è largamente sufficiente per gestire una rete di 100-200 client con vari servizi, oltre al file server, e in particolare:
  • PDC per autenticazione utenti tramite Ldap e Samba
  • Web, Ftp e mail server
  • proxy

Sorgenti apt per i pacchetti del progetto ISI

Il seguente e' il contenuto del file /etc/apt/sources.list

# DIST
deb-src http://ftp.de.debian.org/debian testing main contrib non-free
deb http://ftp.de.debian.org/debian stable main contrib non-free
deb http://ftp.de.debian.org/debian-non-US testing/non-US main contrib non-free
# SECURITY
deb http://security.debian.org/ stable/updates main contrib non-free
# BEE SIDE REPOSITORY
deb http://debian.bee-side.org:8080 sarge main extra isi
# SARACENO REPOSITORY
deb http://lan.saraceno.org/isirep/debian sarge main isi contrib

DOCUMENTAZIONE DA RIVEDERE!!!!

AVVISO: quanto segue si riferisce alla versione di CLONE denominata ISICLONE scaricabile dai nostri repository con il comando apt-get install isi-clone

CLONE

Il trasferimento di ArgoLinux da cdrom (o dall'hd attivo) a hd è basato su uno script apposito (clone o isiclone, la versione a cui fa riferimento questo articolo) e su un file di configurazione che descrive il partizionamento del disco di destinazione e le operazioni desiderate (nel seguito chiameremo questo file DISCO_DESCR). Nel caso più semplice, la sequenza di operazioni è la seguente:
  1. avviare ArgoLinux da cdrom
  2. # cd /etc/clone
  3. # cp example/DISCO_DESCR . (dove DISCO_DESCR è uno dei file di esempio disponibili nella dir example e che andrà adattato alle proprie esigenze)
  4. # emacs DISCO_DESCR si effettueranno le modifiche volute
  5. # clone DISCO_DESCR il sistema verrà trasferito su hd
Pertanto, nel caso in cui, uno dei file DISCO_DESCR di esempio facesse al proprio caso, tutta l´operazione si riduce ad un unico comando. In realtà le cose non saranno così immediate, ma occorrera`, specie nel caso di installazione in presenza di altri sistemi operativi, ispezionare il disco rigido bersaglio, eventualmente liberare spazio, modificare il DISCO_DESCR più somigliante alle nostre necessità, tutte operazioni comunque che possono essere eseguite con semplicità.

SI FACCIA COMUNQUE MOLTA ATTENZIONE: TUTTE LE OPERAZIONI DI PARTIZIONAMENTO DI UN DISCO SONO DISTRUTTIVE

Tipologie di installazione

Le tipologie di installazione permesse da clone sono le seguenti
  1. SCRATCH: ArgoLinux è l´unico sistema operativo presente, il bootstrap è eseguito da GRUB installato sull´MBR. Nel caso di installazione RAID questa è l´unica tipologia prevista.

  1. COMBINATA: Argolinux coesiste con altri sistemi operativi (anche precedentemente installati). Si può decidere se affidare a GRUB sia il boot che il multiboot, GRUB può anche essere omesso del tutto.

  1. MULTIBOOT: Argolinux coesiste con altri sistemi operativi (anche precedentemente installati). GRUB è installato in una partizione apposita come bootmanager e nella partizione corrispondente al mount point /boot come bootloader di ArgoLinux. Le funzionalità di bootmanager di GRUB dovranno/potranno poi essere ulteriormente configurate dipendentemente dai sistemi operativi che devono essere avviati; clone tenta comunque di rilevare i sistemi operativi presenti e di preparare un menu di multiboot adatto che potrà poi essere facilmente modificato.

Il file di configurazione di CLONE e l'installazione base (non RAID)

Qesto file, a cui abbiamo fatto riferimento come DISCO_DESCR, ma che può avere nome qualunque, è un normale file di testo contenente i valori delle variabili che specificano il comportamento di clone. Nella dir /etc/clone/example troverete vari esempi. Di seguito è spiegato in dettaglio un tipico DISCO_DESCR.

Attenzione: il sistema distingue tra MAIUSCOLE e minuscole


ZAP_ALLPART=0
PARTITIONING=1
FORMATTING=1
GRUB_MODE="MULTIBOOT"
LIVE=1
Disk=/dev/ide/host0/bus0/target0/lun0
extra_disk=/disc
extra_part="/part"
DESCR="
mnt_p     fmt   fs              dim     part_n  overwrite opt
/mboot    1     ext2            8       3       1
/boot     1     ext2            50      5       1
swap      1     swap            256     6       1
/         1     reiserfs        2000    7       1
/usr      1     reiserfs        2000    8       1
/var      1     reiserfs        1000    9       1
/home     1     reiserfs        fill    10      1
"

Il file qui sopra pilota una installazione multiboot (ecco perchè è stato incluso il punto di mount /mboot, che per una installazione normale NON deve esserci) su un disco che ospita già due sistemi operativi nelle prime due partizioni (o comunque risulta possedere due partizioni che devono essere preservate). Ma vediamo il senso delle righe per noi significative.

ZAP_ALLPART assume i valori 0 (no) oppure 1 (si), se posta a 0 le partizioni esistenti sono preservate, ArgoLinux verrà trasferito solo se sul disco è disponibile abbastanza spazio non partizionato consecutivo, se posta a 1, tutte le partizioni esistenti saranno distrutte (prestare quindi molta attenzione).

PARTITIONING assume i valori 0 (no) oppure 1 (si), se posta a 0 nessuna partizione descritta verrà creata, il che significa che esse devono essere già presenti sul disco; se posta a 1, saranno create le partizioni richieste.

FORMATTING assume i valori 0 (no) oppure 1 (si), ha senso solo in caso di PARTIZIONING=0, e serve ad ordinare a clone di formattare (1) o non formattare (0) le partizioni indicate utilizzando il file system desiderato.

GRUB_MODE assume i valori MBR (default), MULTIBOOT, DISK, NOGRUB.
MBR produce l´installazione di grub sull´MBR con funzionalità di bootmanager/bootloader.
MULTIBOOT produce una installazione multiboot autonoma di grub.
DISK installa grub solo con funzionalità di bootloader per il sistema linux che si va ad installare, non scrive nulla nell´MBR e quindi bisognerà disporre di un altro bootmanager per avviare il sistema (o i sistemi).
NOGRUB impedisce del tutto l´installazione di grub, in questo caso ci auguriamo sappiate come installare i necessari bootmanager e bootloader.

LIVE, normalmente posta a 1, dice che ArgoLinux verrà trasferito da cdrom o dal disco rigido attivo (duplicazione del sistema attivo su un secondo hard disk)

EXTRA_DIRS, normalmente non definita, ma utile nel caso di duplicazione dell'hd attivo nel caso in cui questo contenga sotto / anche dirs create dall'utente (quindi fuori standard) che si vuole duplicare (es. EXTRA_DIRS="/qui /quo /qua")

Disk, il nome del disco (secondo il formato /dev) così come rilevato da ArgoLinux, è chiaro che questa informazione deve essere corretta pena il fallimento dell´installazione. Il nome /dev dei dischi presenti nella macchina può essere determinato con il seguente comando: # ls -l /dev/hd* | grep disc

che, ad esempio, potrebbe dare il risultato seguente

lr-xr-xr-x  1  root  root  32 mar 17 04:36 /dev/hda -> ide/host0/bus0/target0/lun0/disc
lr-xr-xr-x  1  root  root  32 mar 17 04:36 /dev/hdc -> ide/host0/bus1/target0/lun0/disc
lr-xr-xr-x  1  root  root  32 mar 17 04:36 /dev/hdd -> ide/host0/bus1/target1/lun0/disc
da cui si vede che sono presenti 3 dischi rigidi /dev/hda, /dev/hdc, /dev/hdd il cui nome lungo è /dev/ide/host0.....

extra_disk / extra_part sono variabili ad uso interno, da lasciare quindi così come sono.

DESCR descrive la struttura effettiva dei filesystem che si vogliono creare sul disco. Si tratta di una tabella di 7 colonne il cui significato è evidentemente il seguente:

mnt_p nome del mount point: sono indispensabili perlomeno /boot, /, swap ; nel caso di una installazione multiboot è richiesto anche /mboot.

fmt se =1 la partizione verrà formattata con il file system del tipo dichiarato

fs fyle system con cui formattare la partizione

dim dimensione, in MByte, dello spazio assegnato alla partizione; per l´ultima partizione potrà essere indicato fill che allocherà tutto lo spazio rimanente.

part_n il numero della partizione. Le partizioni primarie sono numerate da 1 a 4, le successive saranno partizioni logiche contenute in una partizione estesa creata automaticamente (si ricordi che una partizione estesa altro non è che una partizione primaria e quindi contribuisce al numero massimo (4) di partizioni primarie ammesse per disco. Prestare molta attenzione: la numerazione delle partizioni deve essere giusta, specie in presenza di partizioni da preservare. Per conoscere il partizionamento esistente di un disco si può usare il seguente comando:

# parted -s /dev/hd print dove /dev/hd potrebbe essere /dev/hda o, come nell'esempio, /dev/hdd.

Si ottiene qualcosa di simile a questo:

Disk geometry for /dev/ide/host0/bus1/target1/lun0/disc: 0.000-19541.320 megabytes
Disk label type: msdos
Minor    Start       End     Type      Filesystem  Flags
1          0.031  13201.853  extended
5          0.062     31.376  logical   ext2
6         31.408    415.744  logical   reiserfs
7        415.775    800.112  logical   linux-swap
8        800.143   3663.259  logical   reiserfs
9       3663.290   6526.406  logical   reiserfs
10      6526.437  12244.855  logical   reiserfs
11     12244.887  13201.853  logical   reiserfs
2      14535.374  19539.997  primary   FAT         lba
da cui si vede che sul disco sono presenti 3 partizioni primarie: la 1 all´inizio del disco, la 2 in fondo, la 3 invisibile in quanto trattasi della partizione estesa che contiele 5,6,7,8,9,10,11 logiche). Nel caso mostrato, l´unico buco libero rimasto è quello tra la logica 11 e la primaria 2 (di dimensione 14535.374-13201.853=1333.521 Mb)

overwrite se =0 la partizione non viene toccata

opt le opzioni da attribuire al punto di mount, quelle, per intenderci, che ritroveremo in /etc/fstab.

Installazione di un sistema base RAID1 (mirroring)

Ecco un tipico esempio di DISCO_DESCR per un sistema raid1 (due dischi identici)
ZAP_ALLPART=1
RAID=1
PARTITIONING=1
FORMATTING=1
LIVE=1
GRUB_FLOPPY=1
Disk=/dev/ide/host2/bus0/target0/lun0
extra_disk=/disc
extra_part="/part"
RAID1=/dev/ide/host2/bus1/target0/lun0/disc
DESCR="
mnt_p     fmt   fs              dim     part_n  overwrite opt
/boot     1     ext2            24      1       0         raid
swap      1     swap            512     5       1         raid
/         1     reiserfs        4000    6       1         raid
/free     1     reiserfs        4000    7       1         raid
/home     1     reiserfs        fill    8       0         raid
"

il significato delle variabili è quello precedentemente descritto con la differenza seguente:

RAID posto a 1 dice a clone che deve prepararsi a preparare un sistema RAID

Disk è il disco principale nella solita notazione (notare l´assenza di /disc alla fine)

RAID1 è il disco su cui si effettua il mirroring (notare la presenza di /disc alla fine)

la configurazione raid verrà ottenuta automaticamente specificando in corrispondenza delle partizioni sottoposte a mirroring l´opzione *raid * nell´ultima colonna della variabile DESCR. Si possono avere contemporaneamente sia partizioni raid che partizioni non raid. Si consiglia di impostare il raid anche per la partizione di swap.

Grub

ArgoLinux utilizza GRUB sia come bootloader che come bootmanager. Chiariamo intanto il significato dei termini: il bootloader è il programma che avvia il sistema operativo, il bootmanager è il programma che consente all´utente di scegliere il sistema operativo da avviare. GRUB è in grado, in modo molto flessibile, di svolgere entrambe le funzioni. Su ogni disco esistono posizioni specifiche destinate ad accogliere tali programmi: si tratta del primo settore del disco, il cosiddetto Master Boot Record o MBR e il primo settore di ogni partizione, il Partition Boot Sector o PBS. Se GRUB viene installato sul MBR sarà in grado di avviare un s.o. linux direttamente o per tramite di un altro bootloader installato nella partizione associata al mount point /boot di quella partizione. Se GRUB è installato solo sul PBR dovrà essere a sua volta attivato da un boot manager sul MBR. Una descrizione dettagliata del processo di boot e dell´utilizzo di GRUB, può essere trovata qui. GRUB è anche in grado di avviare tutti i sistemi windows lanciando (chainloader) i rispettivi bootloader che Windows stesso installa sui PBS delle rispettive partizioni.

Installazione di un sistema multiboot

Prenderemo in considerazione due tipi di scenario:
  • avete a disposizione un disco non partizionato (o comunque cancellabile) e volete installare WinXP, Win98 e ArgoLinux
  • avete a disposizione una macchina sul cui unico disco è installato WinXP in unica partizione che occupa tutto lo spazio disponibile.

Il primo scenario è quello semplice, potete procedere così (si suppone un disco da 20Gb):

  • lanciate ArgoLinux da cdrom
  • con cfdisk create 2 partizioni di tipo FAT32 della dimensione voluta, diciamo 6GB.
  • Installate WinXP nella prima partizione scegliendo la formattazione con NTFS
  • Installate Win98 nella seconda partizione. Attenzione, il programma di installazione di Win98 non vi permetterà di scegliere la partizione; procedendo, confermando le scelte proposte, verrà distrutta l´installazione di XP . Seguite invece la procedura seguente:
    • eseguite il boot da CD scegliendo boot con supporto cdrom e poi date i seguenti comandi
    • D:
    • cd \WIN98
    • format c: /s (il MBR verra` sovrascritto, WinXP non sarà più avviabile (poco male, tornerà ad esserlo alla fine)
    • md c:\win98
    • copy . c:\win98
    • togliete il cdrom e riavviate il sistema, vi ritroverete al prompt di DOS C:\>
    • digitate win98\setup
  • rilanciate Argolinux da cdrom e, utilizzando il file DISCO_DESCR illustrato sopra, installate linux in modalità multiboot
  • perfezionate il menu di grub-bootmanager in /mboot/grub/menu.lst

Il secondo scenario, invece, è più complicato perchè vi costringe ad effettuare un resize del filesystem NTFS (sempre che abbiate spazio disponibile), seguito dalla cancellazione e ricreazione della partizione NTFS (ATTENZIONE: si tratta di due operazioni distinte). Per fare questa operazione vi servirà prima ntfresize, un programma open source che serve a questo scopo e che funziona con qualunque versione di Linux (la versione che avrete scaricato è infatti linkata in modo statico). poi fdisk (quello di linux). Comunque ecco le operazioni da fare:

  • scaricare ntfsresize e trasferirlo su un floppy
  • lanciare ArgoLinux da cdrom e spostarsi in una dir scrivibile (ad esempio # cd /etc/clone)
  • copiare dal floppy il tgz di ntfsresize e scompattarlo (naturalmente, se avete già configurato Argolinux per l´accesso internet e salvato la configurazione su floppy, potrete scaricare direttamente ntfsresize con wget http://www.reteisi.org/downloads/ntfsresize-static-1.9.0.tgz)

  • salvare MBR e tavola delle partizioni attuale
    • # sfdisk -d /dev/hda > ./$hda.pt per salvare la tavola delle partizioni
    • # dd if=/dev/hda of=hda.mbr bs=512 count=1 per salvare il MBR

  • effettuare il resize del file system NTFS
    • # ./ntfsresize -i /dev/hda1 (per sapere fino a che punto si può restringere la partizione NTFS posta in /dev/hda1)
    • # ./ntfsresize -n -s 6G /dev/hda1 (per eseguire un test (-n) di resizing (-s) a 6 GByte)
    • # ./ntfsresize -s 6G /dev/hda1 (per eseguire il resizing effettivo a 6 GByte)
  1. effettuare il resize della partizione (ATTENZIONE PERICOLO) utilizzando fdisk, di seguito il dialogo commentato

#fdisk /dev/hda lancio fdisk

Command (m for help): p visualizzo il partizionamento

Disk /dev/hda: 255 heads, 63 sectors, 2481 cylinders
Units = cylinders of 16065 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1      2480  19920568+   7  HPFS/NTFS
Command (m for help): d cancello la partizione NTFS

Partition number (1-4): 1

Command (m for help): n creo una nuova partizione

Command action e extended p primary partition (1-4) p

Partition number (1-4): 1 creo la partizione primaria n.1

First cylinder (1-2481, default 1): 1 stabilisco il cilindro di partenza UGUALE al valore precedente

Last cylinder or +size or +sizeM or +sizeK (1-2481, default 2481): +6000M fisso la nuova dimensione

Command (m for help): t stabilisco il tipo della partizione = 7

Partition number (1-4): 1

Hex code (type L to list codes): 7

Changed system type of partition 1 to 7 (HPFS/NTFS)

Command (m for help): a rendo la partizione avviabile

Partition number (1-4): 1

Command (m for help): p controllo di aver fatto la cosa giusta

Disk /dev/hda: 255 heads, 63 sectors, 2481 cylinders
Units = cylinders of 16065 * 512 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1       765   6144831    7  HPFS/NTFS
Command (m for help): w scrivo il nuovo partizionamento

The partition table has been altered!


  • riavviare WinXP, che, se tutto è andato a buon fine, controllerà il disco, registrerà la nuova situazione e dopo un ulteriore riavvio continuerà a funzionare (se questo non succede, qualcosa è andato storto).
  • riavviare Argo da cd, e usare GRUB per nascondere la partizione ntfs:
    • # grub
    • # hide (hd0,0) (la partizione /dev/hda1 per GRUB è (hd0,0) )
    • # quit
  • creare una partizione FAT32 per win98 della dimensione voluta usando, ad esempio, cfdisk
  • procedere come allo scenario precedente (da punto 4 in avanti).

Operazioni post-installazione

Eseguita l´installazione, sarà necessario rivedere i menù di GRUB e controllare che tutti i sistemi operativi presenti vengano correttamente avviati. Li trovate in
  • /boot/grub/menu.lst per tutte le modalità di installazione (GRUB_MODE)
  • /mboot/grub/menu.lst questo file è presente, in aggiunta all´altro solo se è stata richiesta una installazione MULTIBOOT

L´aspetto tipico di questi file è il seguente (nell´esempio /boot è in /dev/hda5 e / in /dev/hda7)

/boot/grub/menu.lst

timeout 0 il boot viene eseguito immediatamente
default 1

title Kernel 2.4.24-std on /dev/ide/host0/bus0/target0/lun0/part7
root (hd0,4)
kernel /bzImage-2.4.24-std root=/dev/ram0 boot=*/dev/ide/host0/bus0/target0/lun0/part7* rw init=/linuxrc
initrd /initrd-2.4.24-std.gz

NOTA: il dispositivo esteso /dev/ide/... può essere sostituito con quello breve, ad esempio

timeout 0
default 1

title Kernel 2.4.24-std on /dev/hda7
root (hd0,4)
kernel /bzImage-2.4.24-std root=/dev/ram0 boot=*/dev/hda7* rw init=/linuxrc
initrd /initrd-2.4.24-std.gz

Ecco invece l´aspetto del menù multiboot che si ottiene in

*/mboot/grub/menu.lst

timeout 10 10 sec di pausa per poter scegliere
default 1 a pausa scaduta viene avviato il primo della lista

title LINUX
rootnoverify (hd0,4)
chainloader +1 tutti i sist.op. sono lanciati da un altro GRUB

title Windows 9x-0
rootnoverify=(hd0,1)
chainloader +1

title WinNT-0
rootnoverify=(hd0,0)
chainloader +1

Questo menù deve essere modificato, nella parte relativa ai sistemi windows, nel modo seguente (ecco perchè in /etc/fstab viene incluso il mount point non standard /mboot)

........... ...........

title WINDOWS-98se il title può essere reso più significativo
hide (hd0,0)
unhide (hd0,1)
rootnoverify=(hd0,1)
chainloader +1
makeactive

title WINDOWS-XP
hide (hd0,1)
unhide (hd0,0)
rootnoverify=(hd0,0)
chainloader +1
makeactive

MKGRUB

Si tratta di una script per produrre un disco di boot. L'uso è banale:
  • inserire un dischetto
  • # mkgrub

il dischetto verrà formattato e vi sarà installato grub in modalità multiboot, in modo che tutti i sistemi operativi presenti su tutti gli hd possano essere avviati. Vengono create anche voci di menù per l´installazione rapida di grub sugli MBR dei dischi rigidi presenti. In un sistema Debian, la configurazione di base del networking consiste nella corretta predisposizione di almeno seguenti file

/etc/modules
in cui sono dichiarati i moduli del kernel necessari per il funzionamento delle schede di rete
/etc/network/interfaces
dove si dichiarano i nomi delle interfacce di rete, gli indirizzi IP, le vlan (IsiVlan) e il gateway
/etc/mactab
in cui si ridefiniscono i nomi delle interfacce (facoltativo - vedi IsiMactab)

ESEMPI

/etc/modules di una macchina con 3 schede di rete

8021q              # modulo per la gestione delle vlan
3c59x              # driver per una scheda 3com
eepro100           # driver per una scheda intel pro100
8139too            # driver per una scheda RTL3139
ip_nat_ftp         # moduli del kernel per il tracciamento delle 
ip_conntrack_ftp   # connessioni FTP
tun                # modulo per la gestione di tunnel criptati IPSEC/SSH (VPN)

per la gestione di connessioni VPN vedi IsiVpn.

/etc/network/interfaces di una macchina con due schede di rete tipicamente adibita a firewall per tutte le sottereti della intranet

# The loopback interface
# nameif does nothing if you don't have /etc/mactab
auto lo
iface lo inet loopback
      up nameif
# The first network card - this entry was created during the Debian installation
# (network, broadcast and gateway are optional)
auto ext0
iface ext0 inet static
        address 192.168.200.2        # IP della scheda di rete che interfaccia il router ADSL
        netmask 255.255.255.0
        network 192.168.200.0         
        broadcast 192.168.200.255
        gateway 192.168.200.1        # IP interno del router ADSL
auto int0
iface int0 inet static               
        address 192.168.1.1          # IP (vero o fittizio se ci sono VLAN dell'interfaccia
        netmask 255.255.255.0        # verso la rete interna
        network 192.168.1.0
        broadcast 192.168.1.255
        #----------------------------VLANs-----------------------
        up ifconfig int0 0.0.0.0     
        up vconfig set_name_type VLAN_PLUS_VID_NO_PAD
        up vconfig add int0 1
        up vconfig add int0 2
        up vconfig add int0 3
        up vconfig add int0 4
        up vconfig add int0 5
        up ifconfig vlan1 192.168.1.1
        up ifconfig vlan2 192.168.2.1
        up ifconfig vlan3 192.168.3.1
        up ifconfig vlan4 192.168.4.1
        up ifconfig vlan5 192.168.5.1
        down vconfig rem vlan1
        down vconfig rem vlan2
        down vconfig rem vlan3
        down vconfig rem vlan4
        down vconfig rem vlan5
#
# If you want to fire up a ppp0 int0erface (eg.: adsl)
# dsl-provider is the name you gave with pppoeconf
#
# auto ppp0
# iface ppp0 inet ppp
#      provider dsl-provider

Nell'esempio riportato sopra le interfacce sono state ridefinite da eth0, eth1 a ext0, ext1 utilizzando il file di configurazione:

/etc/mactab

int0 00:30:4F:1E:A0:3C
ext0 00:60:08:69:6A:F6
che associa il nome simbolico scelto direttamente al MAC address della scheda rendendo indipendente il nome dallo slot PCI nel quale la scheda stessa è alloggiata (quale scheda sia eth0 e quale eth1 dipendono appunto dal modo in cui quella particolare macchina numera gli slot PCI). L'aver adottato apparati attivi managed che offrono il supporto 802.1q permette di realizzare con estrema facilità un sistema di sottoreti molto articolato. Queste reti (VLAN) sono, a tutti gli effetti pratici vere e proprie sottoreti completamente isolate le une dalle altre che coesistono sopra un unico cablaggio fisico. Le VLAN sono completamente gestite dagli switch che consentono l'assegnazione delle porte in modo da determinare una segmentazione del cablaggio fisico sottostante. Per quanto riguarda l'architettura della intranet di sede prevediamo perlomeno la seguente articolazione

  • VLAN1 - rete di staff e di amministrazione degli apparati
  • VLAN2 - rete della segreteria
  • VLAN3 - rete dei laboratori

La presenza delle VLAN costituirebbe un ulteriore centro di costo se non avessimo adottato la soluzione linux al problema. Infatti, affinché VLAN diverse possano comunicare fra loro o con un unico server, è necessario interporre un router o disporre di schede di rete che offrano il supporto 802.1q. Fortunatamente Linux mette a disposizione un opportuno modulo del kernel capace di trasformare una linuxbox in un potente apparato con supporto 802.1q. Il tutto a costo zero e con una facilità di installazione veramente disarmante.

Per configurare ArgoLinux per il supporto vlan occorre

  • installare il pacchetto vlan
  • aggiungere il supporto 802.1q al kernel modificando /etc/modules
  • definire le vlan nel file /etc/network/interfaces

In pratica, dopo aver eseguito un accesso come root ed eseguito un preliminare

# apt-get update

per installare il pacchetto vlan

# apt-get install vlan

per aggiungere il supporto 802.1q

editare il file /etc/modules aggiungendo la riga

8021q

ed eseguendo successivamente

# modprobe 8021q

per definire le vlan

editare il file /etc/network/interfaces nel modo seguente (si suppone che la scheda di rete che si interfaccia con le vlan si chiami int0 e risponda all'ip 192.168.1.1 e che si vogliano creare 5 vlan)

auto int0
iface int0 inet static
        address 192.168.1.1
        netmask 
        network 192.168.1.0
        broadcast 192.168.1.255
        #
        up ifconfig int0 0.0.0.0
        up vconfig set_name_type VLAN_PLUS_VID_NO_PAD
        up vconfig add int0 1
        up vconfig add int0 2
        up vconfig add int0 3
        up vconfig add int0 4
        up vconfig add int0 5
        up ifconfig vlan1 192.168.11.1
        up ifconfig vlan2 192.168.12.1
        up ifconfig vlan3 192.168.13.1
        up ifconfig vlan4 192.168.14.1
        up ifconfig vlan5 192.168.15.1
        down vconfig rem vlan1
        down vconfig rem vlan2
        down vconfig rem vlan3
        down vconfig rem vlan4
        down vconfig rem vlan5

come si vede l'ip assegnato alle vlan non ha niente a che fare con quello della scheda. A boot eseguito, ci si ritrovera' magicamente con 5 schede di rete regolarmente funzionanti. Si tralascia, in questo documenti, come configurare le VPN Qui troverete i file di configurazione del servizio DNS per una intranet scolastica concepita secondo il modello ISI. Il DNS assicurerà la risoluzione dei nomi delle macchine sulla intranet, comprese quelle ad indirizzo dinamico (aggiornamento del DNS via DHCP). Si tenga presente che nelle nostre scuole la segreteria opera in ambiente win2000 server configurato con Active Directory e quindi realizzante un dominio separato. Al momento l'integrazione segreteria resto della intranet è al livello della condivisione dell'accesso internet (magari con l'attivazione della doppia adsl) attraverso un unico firewall e alla connessione permessa solo da client particolari esterne alla sottorete specifica.

Per quanto riguarda i dettagli circa la configurazione di Bind9 si rimanda alla documentazione tecnica disponibile in rete, qui ci si limiterà ad illustrare l'organizzazione e il contenuto dei file di configurazione.

L'architettura della intranet sia la seguente:

  • vlan1 sottorete di staff e di amministrazione
  • vlan2 sottorete di laboratorio (ce ne può essere una per laboratorio)
  • vlan5 sottorete della segreteria (si ipotizza che la segreteria sfrutti, per fondamentali ragioni di sicurezza) il firewall principale per l'accesso internet, si tenga presente inoltre che nel modello isi, la segreteria è integrata nella intranet dell'istituto.

Il server DNS può essere ospitato dovunque, ma nel modello isi tale servizio, insieme al DHCP, è in funzione sulla macchina firewall che, grazie al sistema delle vlan, è attestata su tutte le vlan.

il dominio dns si chiamerà miascuola.lan. Il che significa, ad esempio, che l'url del server web interno sarà www.miascuola.lan

In Debian tutti i file di configurazione necessari si trovano sotto /etc/bind e quelli per noi significativi sono:

  • /etc/bind/named.conf in cui sono elencate le zone standard del domio DNS ALERT! lo si lascia inalterato
  • /etc/bind/named.conf.local in cui sono elencate le zone dirette del dominio e quelle inverse del nostro dominio
  • /etc/bind/named.conf.option in cui vengono elencate i forwarders
  • /etc/bind/miascuola.lan in cui sono elencate nomi e ip di tutte le macchine sulla rete
  • /etc/bind/rev1 e simili che costituiscono le zone inverse, cioè il meccanismo con cui dall'ip si risale al nome

Ma vediamoli in dettaglio:

/etc/bind/named.conf.local

Si noti la direttiva key DHCP_UPDATER. Si ricordi che il valore di quest'ultima deve essere identico a quella dichiarata nel file di configurazione del server dhcp (/etc/dhcp3/dhcpd.conf) altrimenti l'aggiornamento dinamico dei record dns non funzionerà.

// -*- c++ -*-
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
// Tells the nameserver who to allow updates from, with what keys
controls {
  inet 127.0.0.1 allow { localhost; } keys { DHCP_UPDATER; };
};
// ddns - key
key DHCP_UPDATER {
  algorithm HMAC-MD5.SIG-ALG.REG.INT;
  secret NmfU90eVsfpLk2Ht07R2IQ==;
';
zone "miascuola.lan" {
     type master;
     file "/etc/bind/miascuola.lan";
     allow-update { key DHCP_UPDATER; ';
};
// staff - reverse - vlan1
zone "1.168.192.in-addr.arpa" {
     type master;
     file "/etc/bind/rev1";
     allow-update { key DHCP_UPDATER; ';
};
// lab - reverse - vlan2
zone "2.168.192.in-addr.arpa" {
     type master;
     file "/etc/bind/rev2";
     allow-update { key DHCP_UPDATER; ';
};
// segreteria - reverse - vlan5
zone "5.168.192.in-addr.arpa" {
     type master;
     file "/etc/bind/rev5;
     allow-update { key DHCP_UPDATER; ';
};

/etc/bind/named.conf.options

Qui la cosa importante sono i forwarders. Il concetto è semplice: quando il nostro DNS non riesce a risolvere un nome, perché esterno alle zone locali, passerà la richiesta ai server DNS esterni dichiarati dalla direttiva forwarders. In pratica si tratta dei DNS primario o secondario indicatici dal nostro provider oppure di DNS pubblici.

options {
   directory "/var/cache/bind";
   // If there is a firewall between you and nameservers you want
   // to talk to, you might need to uncomment the query-source
   // directive below.  Previous versions of BIND always asked
   // questions using port 53, but BIND 8.1 and later use an unprivileged
   // port by default.
   // query-source address * port 53;
   // If your ISP provided one or more IP addresses for stable
   // nameservers, you probably want to use them as forwarders.
   // Uncomment the following block, and insert the addresses replacing
   // the all-0's placeholder.
        // i forwarders sono gli ip dei DNS esterni (quelli del vostro provider)
        // qui saranno automaticamente redirette tutte le richieste DNS non soddisfatte
        // all'interno del nostro dominio
   forwarders {
       151.99.125.2;
       194.243.154.62;
   };
   auth-nxdomain no;    # conform to RFC1035
};

/etc/bind/miascuola.lan

Sono elencati i server, gli apparati di rete ed eventuali pc con ip statico. Questo file provvede alla fondamentale funzione di risoluzione dei nomi nel corrispondente indirizzo ip. Visualizzando questo file a server in funzione, vi si troveranno dentro anche gli aggiornamenti effettuati dal server dhcp ogni volta che un client si connette alla rete.

fw-scuola = il firewall della scuola, cioè la macchina interposta fra la nostra rete e internet. Il router adsl è direttamente connesso a questa macchina attraverso una delle sue schede di rete (deve averne infatti almeno due, o tante quante sono le sottoreti che si vogliono gestire nel caso non si disponga di dispositivi 802.1q) srv-uno = il server principale (quello che fa anche da PDC)

srv-due = un altro server stp-lx = stampanti laser di rete sw-xxx = switch managed con gestione VLAN (802.1q) rt-adslx = router adsl (potrebbe essercene piu' di uno) xp-xxxxx = client qualificati con ip statico e funzioni amministrative

$ORIGIN .
$TTL 86400      ; 1 day
miascuola.lan           IN SOA  fw-scuola.miascuola.lan. root.miascuola.lan. (
                                1          ; serial
                                28800      ; refresh (8 hours)
                                14400      ; retry (4 hours)
                                3600000    ; expire (5 weeks 6 days 16 hours)
                                86400      ; minimum (1 day)
                                )
                        NS      fw-scuola.miascuola.lan.
fw-scuola               A       192.168.1.1        //sulla vlan1 (sottorete di staff)
srv-uno                 A       192.168.1.2        //sulla vlan1 
srv-due                 A       192.168.1.3        //sulla vlan1 
stp-l1                  A       192.168.1.6        //stampante tcp/ip su vlan1  
sw-uno                  A       192.168.1.21       //switch managed su vlan1 
sw-due                  A       192.168.1.22       //switch managed su vlan1
rt-adsl1                A       192.168.200.2      //router adsl 
www                     CNAME   srv-uno
xp-admin01              A       192.168.1.25       //pc con funzioni particolari
xp-preside              A       192.168.1.26
stp-l2                  A       192.168.2.7        //stanpante tcp/ip su vlan2
srv-segreteria          A       192.168.5.2        //sulla vlan5 (segreteria)

/etc/bind/rev1.lan

File di risoluzione inversa per la vlan1

$ORIGIN .
$TTL 86400      ; 1 day
1.168.192.in-addr.arpa IN SOA  fw-scuola.miascuola.lan. root.miascuola.lan. (
                                1          ; serial
                                28800      ; refresh (8 hours)
                                14400      ; retry (4 hours)
                                3600000    ; expire (5 weeks 6 days 16 hours)
                                86400      ; minimum (1 day)
                                )
                        NS      fw-scuola.miascuola.lan.
1                       PTR     fw-miascuola.miascuola.lan.
2                       PTR     srv-uno.miascuola.lan.
3                       PTR     srv-due.miascuola.lan.
6                       PTR     stp-l1.miascuola.lan.
10                      PTR     xp-preside.miascuola.lan.
11                      PTR     xp-admin01.miascuola.lan.
21                      PTR     sw-rag.miascuola.lan.
22                      PTR     sw-due.miascuola.lan.

/etc/bind/rev2.lan

$ORIGIN .
$TTL 86400      ; 1 day
2.168.192.in-addr.arpa      IN SOA  fw-scuola.miascuola.lan. root.miascuola.lan. (
                                1          ; serial
                                28800      ; refresh (8 hours)
                                14400      ; retry (4 hours)
                                3600000    ; expire (5 weeks 6 days 16 hours)
                                86400      ; minimum (1 day)
                                )
                        NS      fw-scuola.miascuola.lan.
1                       PTR     fw-scuola.miascuola.lan.
7                       PTR     stp-l2.miascuola.lan.

/etc/bind/rev5.lan

$TTL 86400      ; 1 day
5.168.192.in-addr.arpa     IN SOA  fw-scuola.miascuola.lan. root.miascuola.lan. (
                                1                  ; serial
                                28800      ; refresh (8 hours)
                                14400      ; retry (4 hours)
                                3600000    ; expire (5 weeks 6 days 16 hours)
                                86400      ; minimum (1 day)
                                )
                        NS              fw-scuola.miascuola.lan.
1                       PTR             fw-scuola.miascuola.lan.
2                       PTR             srv-segreteria.miascuola.lan.

Warning: Can't find topic Reteisi.isiDhcp

Concetti generali

La gestione degli utenti che proponiamo appoggia sulle seguenti regole:
  • per poter usare uno qualunque dei PC connessi alla rete scolastica bisogna possedere un account valido
  • ogni utente autorizzato dispone di un account personale permanente
  • l'utente e' responsabile della corretta conservazione dei dati dell'account (username e password)
  • e' limitata al minimo indispensabile l'accensione di account collettivi (es. account per consentire l'accesso alla rete ai partecipanti un corso, quando essi siano soggetti esterni alla scuola)
  • ogni utente appartiene a uno dei seguenti gruppi principali
    • ADMINS - gli amministratori del sistema
    • ALUNNI - gli studenti e in generale qualunque utente poco privilegiato. Ogni studente appartiene inoltre ad un gruppo classe.
    • DOCENTI - i docenti
    • ATA - il personale ATA
    • ESTERNI - ad esempio i partecipanti ad un corso
  • ogni utente autorizzato dispone di uno spazio personale (home directory) sul server a cui viene automaticamente connesso al momento dell'ingresso nel sistema (logon). Esistono inoltre ulteriori aree disco a disposizione degli utenti, principalmente:
    • una cartella di classe a disposizione degli studenti di una stessa classe
      • all'interno di ogni cartella di classe e' presente la cartella speciale alulink contenente i link simbolici alle home degli studenti della classe, questo semplifica grandemente l'accesso dell'insegnante al lavoro dei suoi alunni.
    • una cartella pubblica a disposizione di tutti gli utenti per lo scambio di file

I permessi e i privilegi sono assegnati in modo tale che si abbiano le seguenti funzionalita'

  • lo studente accede in lettura/scrittura solo alla propria cartella, alla cartella di classe e a quella di scambio
  • il docente accede in lettura/scrittura solo alla propria cartella, a quelle degli studenti e a quelle di classe

Possibili semplificazioni

L'unica possibile semplificazione, specie in una fase di avvio e di conoscenza del sistema, ci sembra quella di limitare gli account personali ad account di classe (cioe' lo stesso account per tutti gli studenti di una classe). Se cio' puo' essere tollerato in una scuola elementare e/o media (cioe' in situazioni strutturalmente maggiormente presidiate), certamente e' pratica altamente sconsigliabile in un istituto superiore. In generale raccomandiamo comunque, anche come educazione generale alla corretta interazione con un sistema informatico, l'adozione di account personali e permanenti.

IL PACCHETTO ISI-LDAP3

Un server ldap fornisce un fondamentale servizio di autenticazione centralizzata andando a sostituire la tipica molteplicità di database e meccanismi di autenticazione normalmente presenti su un sistema linux. Il server ldap è responsabile, ad esempio, dell'autenticazione degli utenti linux, di quelli windows via Samba, autorizza l'accesso internet via Squid e conserva tutti i dati significativi degli utenti in modo ben piu' ricco e completo di quanto non possono fare i tradizionali servizi linux basati su passwd e smbpasswd. La configurazione di Openldap e il suo interfacciamento con servizi quali Samba e Squid è generalmente piuttosto complicata, siamo perciò orgogliosi di presentare il pacchetto ISI-LDAP3 che, per le sue caratteristiche autoconfiguranti e per le utilities che lo accompagnano, rende veloce e semplice una operazione generalmente complessa e cruciale per tutta l'architettura di una intranet di qualunque tipo.

Il sistema di pre/post installazione del pacchetto Debian ISI-LDAP3, è stato predisposto per installare automaticamente e preconfigurare anche i pacchetti strettamente correlati Samba, atd,libpam-ldap, libnss-ldap, pam e migrationtools. Da un punto di vista funzionale quindi e partendo da una macchina nuda, in pochissimo tempo e confermando semplicemente le opzioni di default proposte, si ottiene:

  • l'installazione e la configurazione del server ldap (slapd)
  • l'installazione e la configurazione minima di samba che usera' il demone slapd come autenticatore
  • la migrazione automatica di tutti gli account linux (tranne root) sull'albero ldap (facoltativo)

P.S.= è utile prima di inserire gli utenti, inserire nella cartella /etc/skel/ tutto ciò che si desidera faccia parte della home di ciascun utente. Per far sì che sia semplificato il salvataggio dei profili degli utenti windows, noi abbiamo creato in /etc/skel/ la cartella nascosta .profili che automaticamente Samba utilizzerà per memorizzare il profilo dell'utente. L'autenticazione dell'utente da parte di Samba determina infatti in ./profili la creazione e/o l'aggiornamento della cartella di profilo (Win95 o WinXP? dipendentemente dal S.O. del client che ha effettuato l'accesso), dove verranno salvati i profili Windows 98 e Windows Xp. Vedi i dettagli nella pagina della configurazione dei client.

Installazione

L'installazione del pacchetto avviene in due fasi con i comandi:

  1. # apt-get install isi-ldap3-def
  2. # apt-get install isi-ldap3
Verranno sottoposte le opzioni avanti descritte, accettando i default proposti, si ottiene un sistema funzionante già pronto per il caricamento degli utenti.

Popolazione dell'albero ldap e generazione del file system

Se non si hanno utenti, Il caricamento iniziale dell'albero ldap avviene per mezzo del comando

# isi-addusers [opzioni] file_utenti

l'opzione -h visualizza l'help del comando. Eccolo:


uso    : isi-addusers [opzioni] [file_dati_utenti]
opzioni:
        -h       questo help
        -d       stampa i comandi eseguiti ma li esegue ugualmente
        -n       non esegue i comandi
        -s       esegue senza conferma
        -e       chiede anche i dati extra (solo modo interattivo)
        -P n     lunghezza della password casuale (default 8)
        -B       cambio password obbligato al primo accesso
        -x pwd   password pwd uguale per tutti
        -X pwd   password = CF o = pwd se il cod.fiscale manca
La modalità interattiva si ottiene NON indicando il nome del file dati.
NOTA1: classe e codice fiscale saranno memorizzati nei campi ldap 
            classe  -> departmentNumber, codfisc -> employeeNumber
NOTA2: il formato del file utenti (dati obbligatori) è
            UID;COGNOME;NOME;GRUPPO PRINC;CLASSE,ALTRI GRP;[CODFISC];[PASSWD]

Se il sistema contiene già utenti, si preferisce utilizzare il comando isi-updusers che oltre all'aggiunta di nuovi utenti è in grado di aggiornare i dati degli utenti esistenti o di capire quali utenti devono essere eliminati. Ecco l'help del comando (ottenuto digitando isi-updusers -h)


uso    : isi-updusers [opzioni] file_dati_utenti
opzioni:
        -h       questo help
        -d       stampa i comandi eseguiti ma li esegue ugualmente
        -n       non esegue i comandi
        -k       non ricalcola ALULINK (/home/classi/*/alulink)
        -L       non esegue il backup del db LDAP
        -s       esegue senza conferma
        -p       cambia la pwd attuale con quella nel campo 7 del file dati
        -P n     cambia la pwd attuale con pwd casuale di lunghezza n (min.5)
        -x pwd   password pwd uguale per tutti
        -X pwd   password = cod.fisc. o = pwd per tutti quelli senza cf
        -B       impone il cambio password al primo accesso
        -a       tratta gli utenti con uid inesistente come nuovi e li aggiunge
        -e       tratta gli uid che iniziano con un '-' come utenti da cancellare
                 verranno cancellate anche le rispettive homedirs
        -E       come -e solo che le homedirs sono salvate in formato tar.gz
        -F       forza la riscrittura dei campi ldap (gecos, displayName, ecc.)
NOTA1: le opzioni -p -P sono incompatibili
NOTA2: gli utenti non riconosciuti o prefissati con meno sono comunque
        accumulati nei file /root/users_add.data e /root/users_del.data
NOTA3: classe e codice fiscale saranno memorizzati nei campi ldap
        classe  -> departmentNumber, codfisc -> employeeNumber
NOTA4: il formato del file utenti (parte obbligatoria) è
        UID;COGNOME;NOME;GRUPPO PRINC;CLASSE,ALTRI GRP;[CODFISC];[PASSWD]

Programmi di utilità

Per i dettagli si rimanda alle relative pagine man (o all'help del comando: comando -h).

Gestione ldap/dominio Samba

isi-startup: inizializza/cambia il dominio samba, il nome del server PDC, le password amministrative (root e admin ldap)

isi-smbdomain: cambia il nome del dominio samba (vedi anche isi-startup)

isi-checkugnum: controlla la correttezza degli id numerici uid e gid noti al db ldap

isi-ldapsaveall: salva il db ldap comprimendolo in un tgz

isi-ldaprestall: recupera il db ldap salvato nel file tgz

isi-passwd: cambia la password dell'utente o la password dell'amministratore ldap

Amministrazione utenti

ldap_addusers: aggiunge utenti al db ldap leggendoli da un file oppure, omettendo il file, in modo interattivo direttamente da tastiera.

isi-updusers: automatizza completamente l'aggiornamento degli utenti da un anno all'altro

isi-prepusers: produce un file di aggiornamento utente da un report di SISSI (*)

isi-deluser: cancella l'utente dal db ldap, opera anche sui gruppi o sugli utenti letti da un file

isi-quota: assegna la quota disco a tutti gli utenti di un gruppo

isi-users: gestione interattiva degli utenti di un gruppo (es. di una classe)

isi-extusers: inserisce/corregge i dati estesi dell'utente (indirizzo, telefono...)

isi-fileusers: scrive un file con gli utenti di un gruppo (escluse password). Il file è nel formato adatto per isi-addusers e isi-updusers

isi-chuid: cambia lo username dell'utente e di conseguenza la sua home

isi-loginmod: cambia lo username dell'utente e la sua home utiliizzando nome e cognome contenuti nei campi ldap cn e sn, il nuovo nome utente avrà la forma sn.cn (es. rossi.mario)

isi-getattr: legge il dato ldap indicato relativo all'utente indicato

isi-putattr: assegna un valore al campo ldap di un utente

isi-checkfield: controlla il valore di un campo ldap

isi-nousers: lista gli utenti del gruppo ldap che non sono presenti nel file utenti

isi-addgroup: aggiunge un gruppo al db ldap

isi-groupcat: restituisce la lista degli utenti di un gruppo

isi-checkpwd: controlla il funzionamento delle password appena assegnate (sulla base del file delle password)

isi-passrenew: costringe gli utenti di un gruppo a cambiare password (fa scadere le password)

isi-perms: crea/modifica le acl che controllano i permessi degli utenti (se il filesystem gestisce le acl)

Varie

isi-checkclassi: confronta il db ldap a fronte del file utenti controllando i gruppi classe

isi-alulink: scrive nella cartella di ciascuna classe una sottocartella 'alulink' in cui inserisce i link simbolici alle cartelle home degli alunni della classe stessa (per facilitare il ritrovamento di queste da parte dei docenti)

le utilities successive hanno senso in relazione al sistema di cartelle gestite da samba.

isi-alusetclasse: registra nel db ldap, nel campo utente departmentNumber, la classe frequentata dall'alunno, per tutti gli alunni

isi-homesetclasse: utilizzato da una direttiva di smb.conf durante il processo di logon; serve per generare la connessione dell'utente alla cartella della propria classe, che sarà raggiungibile attraverso Risorse del computer, unita' L

isi-homesetperm: setta i permessi delle cartelle personali del gruppo indicato e del relativo contenuto. Aggiorna il contenuto delle home sulla base del modello in /etc/skel. Vedi anche isi-perms, da utilizzare con i filsystem che supportano le acl

isi-homedu: genera un report sullo spazio disco occupato dalle home degli utenti di un gruppo

isi-htmlsetindex: personalizza la homepage di default dell'utente ospitata in public_html, qualora sia stata attivata tale funzionalità.

isi-homeprofili: recupera i profili degli utenti di un gruppo

isi-homerestore: recupera le homedir degli utenti

isi-homesposta: sposta le homedir di utenti inesistenti

In conclusione

Concludiamo con quanto è necessario digitare in una console di root su macchina su cui è stato appena installato ArgoLinux, per trasformarla in un PDC samba/ldap pronta a gestire la nostra rete d'istituto. I prerequisiti sono:
  • è stato preparato (in /root) il file degli utenti, chiamiamolo lista-utenti (noi, ad esempio, lo costruiamo con excel e lo esportiamo come file csv pronto all'uso - da agosto 2004 abbiamo reso disponibile una procedura migliore - vedi avanti )
  • è stata creata la cartella /home/classi e le sottocartelle /home/classi/nome-classe con nome-classe uguale a al nome del gruppo classe utilizzato nel file lista-utenti

Installazione pacchetti indispensabili

# apt-get update
# apt-get install isi-ldap3-def (confermare tutte le opzioni, bisognerà solo scrivere per TRE volte la stessa password, la prima volta in chiaro)
# apt-get install isi-ldap3
# isi-prepusers file_utenti_sissi
# isi-updusers -aeBP 8 file_utenti_generato_da_isi-prepusers

Finitura dell'installazione

# apt-get install isi-logon

seguita dalla configurazione dei file in /etc/isi (gruppi principali, classi, shares di samba) e dalla conf di samba

Nel caso in cui le cartelle personali vengano riempite con un precedente contenuto migrato da altro filesystem (ad esempio in seguito a una migrazione windows-linux), si potranno settare i permessi sulle home e sul relativo contenuto utilizzando in comando:

# isi-homesetperm <gruppo>
Questo comando si preoccupa anche di aggiornare le home con il contenuto di /etc/skel (se più recente).

a questo punto non resta che perfezionare la configurazione di samba, modificando opportunamente /etc/samba/smb.conf e configurare le stampanti (se si possiedono stampanti di rete, la cosa richiede l'utilizzo del pacchetto CUPS)

Se durante l'anno....

Se durante l'anno dovrete aggiungere uno studente, potete farlo in due modi:
  1. in modo interattivo eseguendo isi-addusers senza parametri e rispondendo alle domande
  2. in modo interattivo eseguendo isi-users gruppo_classe e lavorando direttamente sulla lista degli utenti
  3. costruendo il file utenti col formato precedentemente descritto ed eseguendo isi-addusers o isi-updusers con le opzioni opportune

Subito dopo si potra' aggiornare la cartella /home/classi/classe/alulink eseguendo isi-alulink classe (solo nel caso in cui alulink non venga eseguito automaticamente)

L'anno dopo....NEW

Le operazioni che si dovranno fare sono:
  1. cancellazione degli utenti che non ci sono più (es. studenti che non frequenteranno più)
  2. aggiunta dei nuovi utenti (es. nuovi studenti)
  3. modifica dei dati, eventualmente delle password (fortemente consigliato) e dell'appartenenza ai gruppi per gli utenti che rimangono attivi

Gli script del pacchetto isi-ldap rendono tutte le operazioni quasi automatiche. Ecco come procedere...

Preparazione del file utenti

Il file utenti è un normalissimo file di testo (con fine riga di tipo unix), composto da cinque (5) campi di cui i primi tre (3) obbligatori:

USERID , COGNOME, NOME, GRUPPO_PRINCIPALE, GRUPPI_SECONDARI , [COD.FISCALE], [PASSWORD (fortemente sconsigliato)]

il campo GRUPPI_SECONDARI è composto dalla classe e da qualunque altro gruppo separati da spazio. Può essere lasciato vuoto.

Per preparare questo file si può procedere in tre modi:

  1. modificare il file utilizzato per il caricamento dei dati dell}anno precedente (si aggiungono a mano i nuovi studenti, e quelli da cancellare si marcano iniziano la riga con un segno - (meno). Si aggiunge il cod.fiscale come quarto campo o lo si omette inserendo ,,. Per quanto riguarda la password si veda sotto all'apposito titolo.
  2. usare il comando isi-fileusers per produrre la lista degli utenti esistenti per poi modificarla come al punto precedente.
  3. produrre il file di tutti gli studenti estraendolo direttamente da Open Sissi ed elaborandolo con il comando isi-prepusers, sottoponendo questo file al comando isi-updusers tutte le operazioni di cancellazione, aggiunta, modifica e ridefinizione dei gruppi, memorizzazione della classe e del codice fiscale nel db ldap saranno svolte in automatico.

Estrazione dei dati con Open Sissi e uso di isi-prepusers

Open Sissi è il programma di utilità compreso nel pacchetto SISSI in rete messo a disposizione di tutte le scuole italiane dal MIUR per la gestione delle segreterie scolastiche (e non solo). Per quanto ci riguarda, siamo interessati alla capacità di Open Sissi di produrre un file con i dati degli studenti estraendoli dal db Sql gestito da SISSI. La funzionalità da utilizzare è, dal menù di Open Sissi, Utilità, Report dinamici, che ci metterà in condizione di comporre un report con i campi desiderati (per noi, oltre a nome, cognome, data di nascita, anche codice fiscale, corso, anno di corso e sezione). Open Sissi produce il report in formato Excel che viene richiamato automaticamente (non sembra ci sia la possibilità di avere un semplice salvataggio del report, quindi bisogna che sulla macchina su cui gira Open Sissi ci sia anche Excel - incredibile ma vero). Ottenuto il foglio Excel con i nostri dati semplicemente lo si salverà in formato CVS (OS2-MSDOS).

L}operazione successiva è trasferire questo file sul server linux che ospita il dbldap. Per fissare le idee supponiamo di avere così ottenuto /root/sissi.alunni. A questo punto siamo pronti per procedere alla preparazione del file utenti.

ATTENZIONE: bisogna controllare che nel sistema sia installato il pacchetto sysutils, che contiene il necessario per la conversione di un testo con fine riga DOS a un testo con fine riga UNIX. Si proceda così:

  • # dpkg -l sysutils per sapere se il pacchetto è correttamente installato. Nel caso che non lo sia lo si installi ordinando
  • # apt-get update seguito da
  • # apt-get install sysutils - si otterranno così le utilità todos e fromdos, quest}ultima sarà richiamata automaticamente per la conversione del caso.

Se tutto è a posto si potrà ordinare

  • *# isi-prepusers /root/sissi.alunni *

il comando isi-prepusers effettua le seguenti operazioni (aammgg è la data del giorno):

  • calcola gli userID degli alunni sulla base di una regola personalizzabile (default = a_11caratteri c.f.) il file di configurazione delle regole è /etc/isi/userid-come

  • produce i seguenti file (che potranno essere comodamente visualizzati):
   
           1) FILE UPDATE UTENTI  : /root/users-upd_aammgg
           2) FILE UTENTI DA CANC.: /root/nousers.txt
           3) RECORD SCARTATI IN  : /root/users-err_aammgg
           4) FILE CODICI FISCALI : /root/users-fis_aammgg
           4) FILE UID RIDEFINITI : /root/users-rid_aammgg

Aggiornamento del db ldap

Una volta che si disponga del file utenti, l'aggiornamento del db ldap è fatta dal comando isi-updusers, il cui uso è il seguente
uso    : isi-updusers [opzioni] file_dati_utenti
opzioni:
        -h       questo help
        -d       stampa i comandi eseguiti ma li esegue ugualmente
        -n       non esegue i comandi
        -k       non ricalcola ALULINK (/home/classi/*/alulink)
        -L       non esegue il backup del db LDAP
        -s       esegue senza conferma
        -p       cambia la pwd attuale con quella nel campo 7 del file dati
        -P n     cambia la pwd attuale con pwd casuale di lunghezza n (min.5)
        -x pwd   password pwd uguale per tutti
        -X pwd   password = cod.fisc. o = pwd per tutti quelli senza cf
        -B       impone il cambio password al primo accesso
        -a       tratta gli utenti con uid inesistente come nuovi e li aggiunge
        -e       tratta gli uid che iniziano con un '-' come utenti da cancellare
                 verranno cancellate anche le rispettive homedirs
        -E       come -e solo che le homedirs sono salvate in formato tar.gz
        -F       forza la riscrittura dei campi ldap (gecos, displayName, ecc.)
NOTA1: le opzioni -p -P sono incompatibili
NOTA2: gli utenti non riconosciuti o prefissati con meno sono comunque
        accumulati nei file /root/users_add.data e /root/users_del.data
NOTA3: classe e codice fiscale saranno memorizzati nei campi ldap
        classe  -> departmentNumber, codfisc -> employeeNumber
NOTA4: il formato del file utenti (parte obbligatoria) è
        UID;COGNOME;NOME;GRUPPO PRINC;CLASSE,ALTRI GRP;[CODFISC];[PASSWD]

Tipicamente il file_dati_utenti è quello prodotto da isi-prepusers e cioè /root/users-upd_aammgg

isi-updusers, dopo aver salvato l} attuale db ldap, confronta il contenuto del db ldap con il file degli utenti precedentemente preparato ed effettua tutte le modifiche necessarie agli utenti esistenti, elimina quelli marcati come cancellandi (via isi-deluser automaticamente richiamato), individua gli utenti nuovi e li passa a isi-addusers che si incarica di aggiungerli. Alla fine vengono prodotti i seguenti file:

/root/ldapbak-aammgg.tgz - contiene il salvataggio del db ldap (recuperabile con isi-ldaprestall aammgga)

/root/users-add_aammgg - contiene la lista degli utenti da aggiungere (passata a isi-addusers)

/root/users-del_aammgg - contiene la lista degli utenti cancellati

/root/users-pwd_aammgg - contiene la lista di tutti gli utenti attivi con le password assegnate

/root/users-log_aammgg - contiene il log con i messaggi generati durante l'aggiornamento

/root/nomi.txt - prodotto da isi-addusers, contiene l'elenco degli utenti aggiunti con le password assegnate

IMPORTANTE: isi-updusers e isi-addusers ora sono in grado di salvare la classe e il codice fiscale (sempre che sia disponibile) rispettivamente nei campi ldap departmentNumber e employeeNumber. In questo modo viene notevolmente semplificata sia la gestione della classe dell'alunno sia la sua identificazione.

isi-updusers controlla anche l'esistenza della cartella di classe e della share samba corrispondente, se non le trova le crea. Le share di samba vengono accodate al file /etc/samba/smb_classi.conf: si presuppone che questo file venga automaticamente assunto a far parte della conf di samba per mezzo di una direttiva include nel file di conf principale /etc/samba/smb.conf.

Gestione degli userID (a partire da un report Open Sissi)

isi-prepusers è in grado a partire dai dati SISSI di calcolare lo userID applicando una regola definita dall}utente. Prima di assegnare definitivamente lo UID calcolato all}utente, il codice fiscale dello stesso, viene cercato nel db ldap (sempre che sia stato precedentemente salvato nel campo ldap employeeNumber), se il codice fiscale viene trovato, allora quell}utente è già noto al sistema e riceverà lo userID precedentemente assegnatogli.

La regola di default per il calcolo dell}uid è la seguente:

prefisso + i primi 11 caratteri del codice fiscale,

il prefisso per gli alunni è a_. Il default è stato scelto perchè rende difficilissima l}omonimia.

Sono applicabili regole diverse, esse sono descritte da semplici istruzioni perl scritte nel file di configurazione /etc/isi/userid-come . Lo riportiamo per intero:

# REGOLA PER LA COSTRUZIONE DELLO USERID
# si tratta in pratica di un frammento i codice
# perl che viene interpretato al volo e che puo'
# essere modificato dall'utente senza toccare lo script
# principale ldap_prepusers
# le righe precedute dal segno # sono commenti e possono
# essere inserite dovunque
# le variabili in MAISCOLO sono da considerare note e
# gia' valorizzate con i dati utente.
# Esse sono $COGNOME, $NOME, $CODFISC, $NATOIL
# la data di nascita e' restituita nel formato yymmgg
# la regola di default e'
#
#          $UID="a_".substr($CODFISC,0,11)
#
# ed e' quella assunta quando questo file non contiene
# istruzioni eseguibili ( o non esiste, o e vuoto, o tutte
# le righe sono commentate.
# esempio 1 = primi 4 caratteri del cognome
# $UID=substr($COGNOME,0,4);
# esempio 2 = primi 3 caratteri del cognome + primi 3 del nome
# $UID=substr($COGNOME,0,3).substr($NOME,0,3);
# esempio 3 = primi 3 car.cognome + primi 3 del nome + data di nascita
# $UID = substr($COGNOME,0,3).substr($NOME,0,3).$NATOIL;

per attivare una delle regole alternative di esempio basta decommentare la riga corrispondente. Naturalmente è possibile definire la regola desiderata. Si tenga presente, nel comporre la regola, che occorre rendere minima la probabilità di omonimia. Nel caso si verifichi tale eventualità , saranno calcolati comunque UID distinti da una numerazione progressiva.

Gestione delle password

Una corretta gestione delle password è cruciale per láffidabilità e la sicurezza del sistema. A differenza delle prime versioni del pacchetto isi-ldap, adesso sconsigliamo vivamente di iniziare assegnando password temporanee uguali per tutti. La procedura da preferire dovrebbe essere quella che assegna inizialmente all}utente una password casuale (default 8 caratteri) costringendolo a ridefinirla al primo login. Quest'ultima questione purtroppo non viene correttamente gestita da Samba, ma le password casuali sono comunque tali da spingere l'utente a ridefinire la password capitatagli.

Gli script isi-updusers e isi-addusers possiedono le seguenti opzioni per la gestione delle password:

  • -p se si desidera assegnare la password contenuta nel campo 7 del file_utenti

  • -P n per generare una password casuale lunga n caratteri

  • -x pwd per assegnare la password fissa pwd

  • *-X * per assegnare come password il codice fiscale

nessuna opzione le password non verranno toccate.

Le password generate dai due script sono salvate rispettivamente nel campo n.7 dei file /etc/users-pwd_aammgg e /root/nomi.txt.

Controlli

Per controllare il buon fine delle operazioni sono disponibili i seguenti script:

  • isi-checkclassi file_utenti controlla l`assegnazione dei gruppi classi e la loro composizione.

  • isi-checkfield gruppo campo_ldap visualizza gli utenti del gruppo con il campo ldap richiesto vuoto.

CONFIGURAZIONE DEL PDC SAMBA

Nel seguito e' descritta solo la struttura adottata dal progetto ISI e non viene fatto nessuno sforzo per spiegare le modalita' e i dettagli della configurazione di un PDC realizzato con Samba. I lettori interessati troveranno sull'argomento una abbondantissima ed esauriente letteratura liberamente disponibile in rete.

Gli elementi funzionali per l'implementazione del PDC ISI sono

  • la struttura di cartelle sotto descritta.
  • un samba server installato e funzionante (attualmente e' in uso la versione Debian-stable 2.2.3a-12.4a)
  • un server ldap installato e funzionante per l'autenticazione (per i dettagli vedi IsiLdap)
  • un server Cups per il controllo delle stampanti

La struttura del file system

ALERT! Quanto segue descrive una strutturaione minima del filesystem e corrisponde al default previsto da isi-ldap3

Il funzionamento del PDC Samba appoggia sulla seguente organizzazione del file system:

/home
tutta la parte file server e' ospitata qui
/home/admins
contiene le homedir degli amministratori (gruppo @admins)
/home/alunni
contiene le homedir degli alunni (gruppo @alunni) create automaticamente dagli script di gestione del server ldap sulla base della "skeleton dir" /etc/skel (vedi in fondo)
/home/ata
contiene le homedir del personale ata (gruppo @ata)
/home/docenti
contiene le homedir dei docenti (gruppo @docenti)
/home/esternii
contiene le homedir degli esterni docenti (gruppo @esterni)

/home/classi
contiene tutte le cartelle di classe il cui nome deve coincidere con quello del gruppo classe. Es. gli studenti della classe 1A geometri, appartengono al gruppo geo1a e hanno una cartella di classe che si chiama geo1a; la cosa si rende necessaria per la connessione automatica dell'alunno alla sua cartella di classe.
Ogni cartella di classe contiene la sottocartella alulink che a sua volta contiene i link simbolici alle home degli alunni appartenenti alla classe. Il formato del link e' nome_cognome.username, i valori sono letti direttamente dal db ldap tramite uno script a cui e' affidata la creazione e il popolamento automatico della cartella.
In questo modo viene enormemente facilitato il lavoro dell'insegnante che voglia recuperare file specifici dalle home dei suoi studenti rendendo inoltre possibili semplici meccanismi di automazione per il recupero e il trasferimento di file specifici.

/home/samba
tutto quel che serve al logon degli utenti

/home/samba/netlogon/
la radice della share [netlogon]

La cartella personale dell'utente

Quando un nuovo utente viene aggiunto al sistema, viene automaticamente dotato di una cartella personale contenete quanto necessario sia a un utente linux sia a un utente windows. A parte i file di personalizzazione tradizionali dell'ambiente linux, la cartella personale conterra' le seguenti sottocartelle:

Documenti
verra' collegata automaticamente all'icona Documenti presente sul desktop windows
.profili/WinXP
cartella nascosta (inizia col punto) in cui il client WinXP salva il profilo personale dell'utente
.profili/Win95
cartella nascosta (inizia col punto) in cui il client Win98 salva il profilo personale dell'utente

Tuning delle politiche via pdbedit (a partire da Samba 3.0.21)

Lunghezza minima delle password

Per fissare a 8 caratteri la lunghezza minima delle password
  • root #>pdbedit -P "min password length" -C 8

Impedire il riutilizzo delle password

Per ricordare le ultime 5 password utilizzate
  • root #>pdbedit -P "password history" -C 5

Scadenza delle password

Per fissare la scadenza a 45 giorni (45 x 2021 x 24 = 3888000 sec)
  • root #>pdbedit -P "minimum password age" -C 3888000
Per far scadere subito le password
  • root #>pdbedit -P "minimum password age" -C 0

Blocco del login dopo n tentativi falliti

Per fissare a tre i tentativi di login
  • root #> pdbedit -P "bad lockout attempt" -C 3

Per esportare le politiche su LDAP quando questo e' usato come backend di Samba

  • root #> pdbedit -y -i tdbsam -e ldapsam

Il file di configurazione /etc/samba/smb.conf

[global]
   workgroup = ISI-DOMAIN
   netbios name = ISI-PDC
   server string = %h MAINSERVER
   dns proxy = No
   bind interfaces only = Yes
   interfaces = lo, eth0
#   invalid users = root
   admin users = root,@admins
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   log level = 1
   security = user
   encrypt passwords = true
   passdb backend = ldapsam:ldap://127.0.0.1/
   obey pam restrictions = no
   deadtime = 15
   browseable = no
   wins support = Yes
   name resolve order = lmhosts host wins bcast
   local master = yes
   domain master = Yes
   preferred master = Yes
   os level = 254
   domain logons = Yes
   unix password sync = no
   enable privileges = yes
   passwd program = /usr/sbin/smbldap-passwd %u
   passwd chat = *New*password* %n\n *Retype*new*password* %n\n
   socket options = TCP_NODELAY
   load printers = yes
   printing=cups
   printcap name=cups
   ldap ssl = no
   ldap passwd sync = yes
   ldap machine suffix = ou=Computers
   ldap idmap suffix = ou=Idmaps
   ldap group suffix = ou=Groups
   ldap user suffix = ou=People
   ldap suffix = dc=isi,dc=lan
   ldap delete dn = Yes
   ldap admin dn = cn=admin,dc=isi,dc=lan
   logon home = \\%L\%U\.\\.profili\%a
   logon drive = H:
   logon path = \\%L\%U\.profili\%a
   add machine script = /usr/sbin/smbldap-useradd -w "%m"
   set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
   delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
   add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
   delete group script = /usr/sbin/smbldap-groupdel "%g"
   add group script = /usr/sbin/smbldap-groupadd -p "%g"
   delete user script = /usr/sbin/smbldap-userdel "%u"
   add user script = /usr/sbin/smbldap-useradd -m "%u"
   panic action = /usr/share/samba/panic-action %d
[homes]
   comment = ISI-homes (NON MODIFICARE QUESTA RIGA)
   browseable = no
   writable = yes
   guest ok = no
#   include = /etc/isi/samba/hmask_%G
   veto files = /public_html/
[printers]
   comment = All Printers
   browseable = no
   path = /tmp
   printable = yes
   public = no
   writable = no
   create mode = 0700
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
include = /etc/isi/samba/smb_servizi.conf
include = /etc/isi/samba/smb_maingrps.conf
include = /etc/isi/samba/smb_classi.conf
include = /etc/isi/samba/smb_corsi.conf
include = /etc/isi/samba/smb_aree.conf
[perl]
   path = /usr/share/WinActivePerl
   comment = Per Windows Binaries
   public = yes
   writable = no
   guest ok = yes
   browseable = no
[netlogon]
    comment = ISI-NetLogon (NON MODIFICARE QUESTA RIGA)
    path = /home/samba/netlogon
    guest ok = yes
    browseable = no
    create mask = 0644
    directory mask = 0755
    writable = yes
    root preexec=/usr/sbin/setlogonvar '%U' '%G' '%m'
    root postexec=/usr/sbin/rmlogonvar '%m'
#[profiles]
#  comment = cartelle profili utente
#   path = /home/%g/%u/.profili/%a
#   read only = No
#   create mask = 0660
#   directory mask = 2770
#   browseable = No 
#   guest ok = Yes
#   profile acls = Yes
#   csc policy = disable
   # next line is a great way to secure the profiles 
#   force user = %U
### DEBCONF CONFIGURED by isi-logon
In questo articolo descriveremo una configurazione del firewall di ArgoLinux alla base della sicurezza dall'intrusione e del controllo del traffico verso internet in una intranet scolastica strutturata secondo il modello ISI. In breve

  • una sottorete di staff (tutte le macchine a disposizione dei non-studenti)
  • tante sottoreti quante sono le reti dei laboratori
  • la sottorete delle segreteria
Le macchine attestate sulle varie sottoreti sono organizzate in due classi: quelle a indirizzo statico, apparati di rete, stampanti e pc amministrativi, quelle a indirizzo dinamico (dhcp). Questa suddivisione consente di implementare molto facilmente acl di Squid o eccezioni di firewalling.

Il software coinvolto nell'implementazione dei servizi di sicurezza e' netfilter/iptables per quanto riguarda il filtraggio dei pacchetti e le fondamentali operazione di redirezione del traffico (MASQUERADING, SNAT/DNAT), Squid per quanto riguarda il servizio proxy e DansGuardian per quanto riguarda il filtraggio dei contenuti della navigazione. La configurazione di Squid e DansGuardian è descritta altrove. Qui ci occuperemo di come configurare netfilter/iptables affinchè si abbiano le funzionalità seguenti.

La macchina firewall (FW)

  1. protegge tutte le sottoreti (nel caso d'esempio si tratta di 5 vlan: vlans 1=staff 2,3,4=laboratori 5=segreteria)
  2. ridirige il traffico in ingresso sulla porta 80 al server web principale e quello sulla porta 81 a un server web secondario
  3. ridirige il traffico ssh in ingresso sulla porta 22 a se stesso e quello sulla porta 24 al servizio ssh in ascolto sul server
  4. consente connessioni VPN attraverso la porta 5000
  5. vieta in generale l'uscita diretta su internet attraverso la porta 80,i browser dovranno essere obbligatoriamente configurati per utilizzare un servizio proxy sulla porta 8128 (DansGuardian) o 3128 (Squid) NOTA: DG ascolta di default sulla porta 8080, la ridefinizione è resa necessaria per evitare possibili conflitti con altri servizi in ascolto sulla porta 8080).
  6. ridirige in generale tutte le richieste internet sulla porta 8128 a cui è attestato DG anche se il browser è configurato per sfruttare il servizio proxy di squid alla porta 3128. In questo modo resta garantito il meccanismo di autenticazione dell'utente svolto da Squid e il controllo sui contenuti del traffico web.
  7. impedisce/consente il traffico tra le vlan (ad esempio isola la vlan5, segreteria, dal resto della rete per quanto riguarda il traffico in ingresso ma consente l'accesso a internet alle macchine della segreteria.

A quanto appena detto si aggiunge la gestione di alcune importanti eccezioni.

  1. ai server (_FIREWALL, _SERVER, _SRV2, _SRV3) viene garantito l'accesso diretto a internet sulla porta 80 bypassando tutti i servizi proxy, questo facilita tutte le operazione di aggiornamento automatico via apt-get e argoupdater (la procedura sistematica di aggiornamento di Argo)
  2. ad alcune macchine qualificate viene garantito il bypass di DG
  3. ad alcune macchine qualificate viene consentito l'accesso alla vlan5 (segreteria), ad es. si vuole che il dirigente scolastico possa scambiare dati direttamente con gli uffici.

Naturalmente il modo in cui avviene l'autenticazione dell'utente e il controllo della navigazione dipende dalle configurazione di Squid e DG che aggiungono due ulteriori strati di controllo.

In ArgoLinux la configurazione del firewall è tutta contenuta nei due file /etc/argo/fw.conf e /etc/argo/fw.add . Eccone il contenuto necessario per realizzare lo scenario sopra descritto.

/etc/argo/fw.conf

### ------VARIABILI---------------
# abilitazione log dei pacchetti scartati
LOG="1"

INT="vlan1 vlan2 vlan3 vlan4 vlan5"
EXT="ext0"

LAN="192.168.1.0/24 192.168.2.0/24 192.168.3.0/24 192.168.4.0/24 192.168.5.0/24"

TCP_DPORTS="22 80 20 21 24 5000"
UDP_DPORTS=""

# Input chains w/ 'tnl' in the name (expr match $name tnl -eq 3) will not
# be considered by 'firewall' script

INPUT_CHAINS="int ext log"
FWD_CHAINS="fwd flog"


FORWARD="1"
# masquerading
IP_MODE=static
# ip dell'interfaccia connessa al router adsl
IP_EXT= 192.168.200.2

# DMZ_ARP=
# EXT_ARP=

# scommentare la riga seguente per il proxy trasparente
# attenzione: il proxy trasparente è incompatibile con
# l'autenticazione via proxy e quindi non viene utilizzato
# PROXY_REDIR_PORT=3128

ICMP_TYPES=" 0 , 3 , 8 , 11 "
# 0 = echo reply
# 3 = dest unreachable
# 8 = echo request
# 11 = time exceeded for datagram

### ------fine----------

Quanto contenuto in fw.conf consente la protezione delle sottoreti e la condivisione dell'accesso internet. Il resto delle regole di firewalling è contenuto nel file /etc/argo/fw.add. Eccone il contenuto (si noti l'organizzazione della configurazione: la definizione di tutte le variabili necessarie, l'implementazione delle regole. In questo modo risulta semplice estendere le funzionalità desiderate):

/etc/argo/fw.add

#### ---------VARIABILI---------
# protocolli
PROTO="tcp udp"

# porte
PORTS="20 21 25 80 110"
P_HTTP="80"
P_HTTP_APT="80 8080"
P_SSH="22"
P_SSH_EXTRA="24"
P_DNS="53"
P_SARG=" 81"
P_CUPS="631"
P_SWAT="901"

# porte squid e dansguardian
P_SQUID="3128"
P_DG="8128"
P_PROXY="3128 8128"

#### server e bypass proxy
LH="127.0.0.1"

_FIREWALL="192.168.1.1"
_SERVER="192.168.1.2"
_SRV2="192.168.1.3"
_SRV3="192.168.1.4"

SERVER_DNS="$_FIREWALL"

NOPROXY1="$_FIREWALL"
NOPROXY2="$_SERVER"
NOPROXY3="$_SRV2"
NOPROXY4="$_SRV3"

# accesso diretto a squid per macchine particolari
# attenzione non e'la stessa cosa di evitare il filtraggio dell'ip

# pc a cui è permesso l'accesso alla vlan della segreteria
NODG01="x.x.x.x"

# ip di pc amministrativi/
ADMIN01="x.x.x.x"

# ip interfaccia esterna
EXT0="192.168.200.2"

# ip interfacce interne (vlans)
_VLAN1="192.168.1.0/24"
_VLAN2="192.168.2.0/24"
_VLAN3="192.168.3.0/24"
_VLAN4="192.168.4.0/24"
_VLAN5="192.168.5.0/24"

# lista delle vlan che possono comunicare tra loro
OK_LANS="vlan1 vlan2 vlan3 vlan4"

#### target ridirezione porte
SRV_SSH="$_SERVER:22"
FW_HTTP="$_FIREWALL:80"


####----------REGOLE------------------

# nat spostato qui da fw.conf per attivazione 2adsl
#iptb -A fwd -o $EXT0 -j ACCEPT
#iptb -t nat -A POSTROUTING -o ext0 -j SNAT --to $EXT0
#iptb -t nat -A POSTROUTING -o ext1 -j SNAT --to $EXT1

# 1 Blocco uscita diretta internet (navigazione solo via proxy)
iptb -I fwd 1 -o $EXT -p tcp --dport $P_HTTP -j bad

# 2 Passaggio libero attraverso la porta 80 per il traffico proveniente dai
# server - necessario per semplificare le operazioni apt
iptb -I fwd 1 -s $NOPROXY1 -o $EXT -p tcp --dport $P_HTTP_APT -j ACCEPT
iptb -I fwd 1 -s $NOPROXY2 -o $EXT -p tcp --dport $P_HTTP_APT -j ACCEPT
iptb -I fwd 1 -s $NOPROXY3 -o $EXT -p tcp --dport $P_HTTP_APT -j ACCEPT
iptb -I fwd 1 -s $NOPROXY4 -o $EXT -p tcp --dport $P_HTTP_APT -j ACCEPT

# 3 nessuna redirezione trasparente su DansGuardian per la segreteria e per
# pc speciali
iptb -t nat -A PREROUTING -s $_VLAN5 -p tcp --dport $P_PROXY -j REDIRECT --to-port $P_SQUID
iptb -t nat -A PREROUTING -s $NODG01 -p tcp --dport $P_PROXY -j REDIRECT --to-port $P_SQUID

# 4 redirezione trasparente su DansGuardian di tutto il resto del traffico
iptb -t nat -A PREROUTING -s !$NOPROXY1 -p tcp --dport $P_PROXY -j REDIRECT --to-port $P_DG
iptb -t nat -A PREROUTING -s !$NOPROXY2 -p tcp --dport $P_PROXY -j REDIRECT --to-port $P_DG
iptb -t nat -A PREROUTING -s !$NOPROXY3 -p tcp --dport $P_PROXY -j REDIRECT --to-port $P_DG
iptb -t nat -A PREROUTING -s !$NOPROXY4 -p tcp --dport $P_PROXY -j REDIRECT --to-port $P_DG

# 5 Configurazione per ridirigere su firewall richiesta SARG
iptb -t nat -A PREROUTING -d $EXT0 -p tcp --dport $P_SARG -j DNAT --to $FW_HTTP
#iptb -A fwd -d $_SERVER -p tcp --dport $PORTS -j ACCEPT

# 6 Configurazione per ridirigere pop3,smtp e http (adsl1)
iptb -t nat -A PREROUTING -d $EXT0 -p tcp --dport $PORTS -j DNAT --to $_SERVER
iptb -A fwd -d $_SERVER -p tcp --dport $PORTS -j ACCEPT

# 7 Configurazione per redirigere bind
iptb -t nat -A PREROUTING -s ! $SERVER_DNS -p $PROTO --dport $P_DNS -j DNAT --to $SERVER_DNS
iptb -A fwd -p $PROTO --dport $P_DNS -j ACCEPT

# 8 Configurazione per ssh diretto su srv-nec
iptb -t nat -A PREROUTING -d $EXT0 -p tcp --dport $P_SSH_EXTRA -j DNAT --to $SRV_SSH
iptb -A fwd -d $_SERVER -p tcp --dport $P_SSH -j ACCEPT

# 9 Configurazione per accesso a PDC
iptb -A fwd -d $_SERVER -j ACCEPT

# 10 Configurazione per traffico tra vlan
iptb -A fwd -i $OK_LANS -o $OK_LANS -j ACCEPT

# 11 autorizzazione traffico macchine qualificate-segreteria
iptb -A fwd -s $ADMIN01 -o vlan5 -j ACCEPT

#--------------------fine--------------------------------

Installazione di Squid

Presupposti:
  • Occorre un computer anche non particolarmente potente: per un utilizzo normale è sufficiente un pentium 2 o celeron con 64 di ram e un disco fisso da 2 gb. Può essere utile più spazio disco se si intende utilizzare squid non solo per il controllo dell'accesso a internet, ma anche per velocizzare l'accesso alle pagine e ridurre il consumo di banda, aumentando la memoria cache per le pagine.
  • Deve essere installato e configurato Argo-linux e il pacchetto isi-ldap. Quest'ultimo, che svolge la funzione di autenticatore degli utenti, può essere installato sulla macchina che fa da proxy (tipicamente il firewall/gateway) oppure su un altro computer (server ldap/samba).

Per installare Squid, se non è già installato, è sufficiente dare il comando

  • root@srv #apt-get install squid
Il comando per attivare il server proxy è
  • root@srv #/etc/init.d/squid start
Per far sì che il proxy venga avviato automaticamente al riavvio del computer, è sufficiente controllare che in /etc/runlevel.conf la riga "30 0,1,6 2,3,4,5 /etc/init.d/squid" non sia commentata.

Configurazione di Squid

La configurazione di squid è contenuta nel file /etc/squid/squid.conf. Si tratta di un file molto lungo, capillarmente documentato ed estremamente configurabile. Nelle ultime versioni il file è stato snellito: restano solo i comandi principali e sono stati eliminati tutti i commenti
Qui ci limitiamo a dare indicazioni estremamente concise ed atte solo ad una configurazione minimale, adatta allo scopo che ci prefiggiamo, cioè di far sì che gli utenti della scuola che accedono ad Internet vengano autenticati dal proxy tramite un accesso al database ldap.
  • La prima cosa da configurare è l'IP della macchina che deve essere interrogata per l'autenticazione degli utenti, cioè il server ldap/samba (che può essere la stessa macchina dove gira squid, oppure un'altra).
    Questo si ottiene con la riga "auth_param basic program /usr/lib/squid/ldap_auth -b ou=People,dc=isi xxx.xxx.xxx.xxx (indirizzo Ip del server ldap)".
  • La seconda cosa necessariamente da configurare è la creazione di una access list (acl) che obblighi gli utenti ldap ad autenticarsi per poter accedere a internet.
    Ciò si ottiene con la seguente riga: "acl ldapusers proxy_auth REQUIRED".
  • Se lo si desidera si possono creare altre access list per utenti o macchine che non hanno bisogno di essere filtrati.
Per questo motivo quasi tutto il resto della configurazione può essere lasciato ai valori di default

Visualizzare i reports di Squid con Sarg

Sarg (Squid Analysis Report Generator) è uno strumento che genera pagine web con report che rendono facilmente leggibili i log di Squid. In pratica viene creata una pagina web per ogni utente, con un elenco delle pagine visitate, completo di URL, bytes scaricati, tempi di accesso, etc...
Nella distribuzione Argo-linux Sarg è già previsto e l'unica cosa da fare è modificare leggermente il file di configurazione, che è già funzionale, ma che ha un piccolo errore e salva le pagine web in una directory che non è raggiungibile.
  • Per configurare la cartella di salvataggio dei report corretta, occorre sostituire "output_dir /var/www/