Laboratorio di Reti di Telecomunicazioni LA A.A. 2005/2006 Walter Cerroni Il corso • Complemento pratico/applicativo dei corsi di Reti di Telecomunicazioni • Obiettivo: effettuare esperienze didattiche di installazione e configurazione di servizi di rete basati su TCP/IP in ambienti operativi di tipo public-domain • Risultato: acquisire parte delle competenze pratiche di un amministratore di rete 2 1 System and Network Administrator • Amministratore dei sistemi informativi di un’azienda o di un ente – – – – ha il controllo totale del sistema utente root nel mondo Linux/Unix utente administrator nel mondo Windows spesso non basta una persona sola • Cosa deve fare: – – – – – – – – – Pianificare la rete (apparati, topologia, cablaggio) Dotarla di connettività con l’esterno (Internet) hardware Acquisire e gestire attrezzature hardware Applicare una strategia di recupero dai guasti Installare e aggiornare il sistema operativo Installare e aggiornare il software applicativo software Installare e configurare servizi di rete Gestire l’accesso degli utenti Rendere sicuro il sistema e monitorarlo costantemente 3 Scelta degli strumenti di lavoro software • Occorre un sistema operativo adatto all’ambiente di rete • Unix/Linux – – – – – Multiutente (multiuser) Concorrente (multitasking) Tradizionalmente adottato per gestire/fornire servizi di rete Ne esistono distribuzioni sia commerciali che “libere” Disponibilità di pacchetti software open-source • Windows Server – Recentemente evoluto e migliorato – Molte funzionalità equivalenti a quelle del mondo Unix/Linux – Richiede l’acquisizione di licenze software 4 2 Programma del corso • • • • • Introduzione al sistema operativo Linux Cenni sui comandi di base Linux Configurazione interfacce di rete, proxy ARP, DHCP IP forwarding, firewall e NAT (iptables) Studio e configurazione di una implementazione opensource di un router (click modular router + quagga) • Configurazione di VPN con protocollo IPsec • Gestione dei servizi applicativi e amministrativi di rete • Configurazione di un server web (Apache) TUTTO TRAMITE LINEA DI COMANDO 5 Conoscenze richieste • Reti di Telecomunicazioni LA (tutti) – – – – Ethernet IP ARP TCP/UDP • Reti di Telecomunicazioni LB (chi lo ha nel piano di studi) – – – – – – – – instradamento IP ICMP DHCP Firewall NAT VPN HTTP Tecniche di crittografia e autenticazione 6 3 Svolgimento lezioni/esercitazioni • Lezioni introduttive in aula • Esercitazioni in laboratorio – Lab. di Elettronica e Telecomunicazioni (via Rasi) – 18 PC Linux • • • • • • distribuzione open-source Fedora tutti su rete privata condivisa 192.168.8.0/24 a due a due su reti private punto-punto 10.0.0.X/30 rete fisicamente separata dagli altri lab all’avvio del boot loader selezionare l’opzione “Lab. Reti TLC” accesso tramite username e password locali, forniti dal docente via mail • modifiche della configurazione IP rendono impossibile l’autenticazione di rete • home directory locale 7 Materiale didattico e testi consigliati • Lucidi proiettati a lezione – disponibili sulla home page del corso http://deisnet.deis.unibo.it Didattica II Facoltà Lab. Di Reti di TLC LA • Per approfondimenti: – Comandi man e info – Documentazione on-line suggerita dal docente – Manuali del sistema operativo Linux 8 4 Informazioni • Altre informazioni e avvisi sulla home page del corso • Ricevimento studenti – mercoledì: 11.00-13.00 via Venezia • Per contattare il docente – [email protected] – 0547 339207 – 051 2093089 • Esame finale – prova pratica al calcolatore 9 Introduzione al S.O. Linux e comandi di base A.A. 2005/2006 Walter Cerroni 5 Sistema operativo Linux • Linux è nato nel 1991 dal progetto di uno studente dell'università di Helsinki, Linus Torvalds, che aveva come obiettivo l’implementazione su microprocessori i386 di un S.O. multiutente e concorrente, simile a Unix. • Linux ha adottato la GNU General Public License (GPL), un contratto di licenza d'uso del software libero (free) che permette a chiunque di modificare e distribuire il software stesso a seconda delle proprie esigenze. • Grazie alla libera disponibilità del codice sorgente, una vasta comunità di utenti e sviluppatori si è subito creata attorno al sistema Linux e alle relative applicazioni. • Oggi è diventato uno dei sistemi operativi più diffusi, nonché il prodotto di punta del mondo open-source. 11 Distribuzioni Linux • Linux è disponibile oggi sottoforma di diverse distribuzioni. • Ogni distribuzione aggiunge al kernel tutto il software necessario per avere un sistema operativo completo di applicativi e servizi. – Debian: distribuzione completamente sviluppata da una comunità che consta di centinaia di persone in tutto il mondo ed è quella che meglio incarna lo spirito del Free Software. Viene considerata per puristi ed esperti e risulta generalmente meno user-friendly delle altre. – Mandriva/Ubuntu: sono user-friendly e probabilmente le più adeguate per un sistema desktop. – Red Hat/Fedora: sono tra le più popolari e si adattano bene ad usi diversi (desktop, server, laptop). – Slackware: è stata una delle prime distribuzioni. – SuSE: un’altra distribuzione molto popolare. • Per una lista completa delle distribuzioni: http://www.linux.org/dist/index.html 12 6 Installazione di Linux su PC 1. 2. 3. 4. 5. 6. 7. 8. Controllo dell’hardware supportato Partizionamento e formattazione del disco rigido Installazione del Boot Loader (LILO, GRUB) Configurazione delle interfacce di rete Scelta della password di root Configurazione dell’autenticazione utenti Selezione dei pacchetti applicativi da installare Configurazione di scheda video e monitor E’ POSSIBILE ESEGUIRE INSTALLAZIONI AUTOMATIZZATE ATTRAVERSO LA RETE 13 Partizioni del disco • Necessarie – / radice del file system – swap spazio per la memoria virtuale (per sistemi recenti da 1 a 2 volte la memoria fisica) • Consigliabili a seconda dei casi – /var – – – – contiene i log e le directory di spool di posta e stampanti /usr contiene gran parte delle applicazioni /home contiene le home directory degli utenti /boot contiene il kernel e i file di avvio /tmp contiene file temporanei Esempi di nomi di unità e/o partizioni: /dev/hda /dev/hdb3 /dev/sda2 /dev/fd0 14 7 Linux File System e mount point • Altre importanti directory – – – – – – – – – /bin /dev /etc /lib /mnt /opt /proc /root /sbin eseguibili dei comandi usati dagli utenti file che rappresentano i dispositivi file di configurazione di sistema librerie di sistema mount point di dispositivi vari applicazioni aggiuntive informazioni sui processi di sistema home directory dell’amministratore eseguibili dei comandi di sistema • Unico file system principale con radice / • File system secondari distribuiti su più partizioni e/o unità attraverso i mount point 15 Linux File System e mount point / /home /var /tmp swap 16 8 Esempio 1 Il comando fdisk –l <unità> visualizza le partizioni del disco [root@deis76 root]# fdisk –l /dev/hda Disco /dev/hda: 40.0 GB, 40000000000 byte 255 testine, 63 settori, 4866 cilindri Unità = cilindri di 16065 * 512 byte Dispositivo Avvio Inizio Fine Blocchi Id Sistema 1 1275 10241406 83 Linux /dev/hda2 1276 1721 3582495 83 Linux /dev/hda3 1722 2167 3582495 83 Linux /dev/hda4 2168 4865 21671685 f /dev/hda5 2168 2320 1228941 82 Linux swap /dev/hda6 2321 4865 20442681 83 Linux /dev/hda1 * Esteso 17 Esempio 2 Il comando fdisk –l <unità> visualizza le partizioni del disco [root@deis73 root]# fdisk –l /dev/hda Disco /dev/hda: 40.0 GB, 40000000000 byte 255 testine, 63 settori, 4866 cilindri Unità = cilindri di 16065 * 512 byte Dispositivo Avvio /dev/hda1 Inizio Fine Blocchi Id Sistema Dell Utility 1 2 16033 de 3 1022 8193150 7 /dev/hda3 1023 3317 18434587 f /dev/hda4 3318 4866 12442342 83 /dev/hda5 1023 2042 8193118 b /dev/hda6 2043 2173 1052226 82 Linux swap /dev/hda7 2174 3317 9189148 83 Linux /dev/hda2 * HPFS/NTFS Esteso Linux Win95 FAT32 18 9 Esempio 3 Il comando df visualizza le partizioni, i rispettivi mount point e l'ammontare di spazio libero su disco [root@deis76 root]# df Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda1 10080488 307968 9260452 /dev/hda6 20121812 6248500 12851180 /dev/hda3 3526204 1962660 1384420 59% /usr /dev/hda2 3526204 331488 3015592 10% /var 4% / 33% /home 19 Esempio 4 Il file /etc/fstab elenca tutti i file system con i rispettivi mount point [root@deis73 root]# cat /etc/fstab /dev/hda4 / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 /dev/hda7 /home ext3 defaults 1 2 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/hda5 /win vfat defaults 0 0 /dev/hda6 swap swap defaults 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0 /dev/cdrom1 /mnt/cdrom1 iso9660 noauto,owner,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner 0 0 20 10 Esempio 5 Il comando mount mostra i file system attualmente montati [root@deis73 root]# mount /dev/hda4 on / type ext3 (rw) none on /proc type proc (rw) none on /dev/pts type devpts (rw,gid=5,mode=620) /dev/hda7 on /home type ext3 (rw) none on /dev/shm type tmpfs (rw) /dev/hda5 on /win type vfat (rw) 21 Inizializzazione del sistema • init è il primo processo che parte • Livelli di esecuzione (runlevels): 0 – halt 1 – single-user 2 – multi-user senza servizi di rete 3 – multi-user 4 – non usato 5 – multi-user con interfaccia grafica 6 – reboot • • /etc/inittab è il file di configurazione /etc/rc.d/ contiene gli script di inizializzazione dei servizi relativi a ciascun livello 22 11 Comandi di base per il file system • • • • • • • • • • • ls cd pwd mkdir cp rm mv chown chmod ln cat/more/less elenca file cambia directory corrente mostra la directory corrente crea directory copia rimuovi sposta cambia il proprietario cambia i permessi crea un collegamento mostra il contenuto di un file 23 Gestione dei permessi dei file • Ogni file (dati, programma o directory) ha un proprietario (owner) appartenente ad un gruppo di utenti (group) e presenta determinati permessi di accesso – visualizzabili tramite il comando ls –l – nove bit determinano i permessi di lettura, scrittura ed esecuzione (r,w,x) per il proprietario, il gruppo del proprietario e per gli altri utenti del sistema (u,g,o) – tre bit ulteriori fanno riferimento a speciali modalità di accesso • SUID (Set User ID) – si accede al file utilizzando l’identificativo del proprietario (UID) • SGID (Set Group ID) – si accede al file utilizzando l’identificativo del gruppo a cui appartiene il proprietario (GID) • Sticky – se applicato ad una directory, i file contenuti in essa non possono essere cancellati o rinominati da un utente diverso dal proprietario, pur avendo il permesso di scrittura nella directory 24 12 Gestione dei permessi dei file • chmod permette di modificare tali permessi (2 modalità) chmod chmod chmod chmod u rwx r-x rwr-x 0755 0644 0400 4555 g r-x r-x r-r-x file file file file o r-x r-x r-r-x u rwx rwr-r-s chmod chmod chmod chmod g r-x r---r-x o r-x r---r-x (SUID) u-w file go-x file a+x file u+s file u r-x r-x rwx r-s g r-x r-r-x r-x o r-x r-r-x r-x 25 Gestione di Utenti e Gruppi locali • • • • • • • useradd userdel usermod passwd groupadd groupdel groupmod crea un account utente elimina un account utente modifica un account utente cambia password crea un gruppo elimina un gruppo modifica un gruppo Esempio: useradd -g utenti -d /home/newusr -p newpasswd -s /bin/bash -c “Nuovo Utente” newusr 26 13 Database utenti locali • /etc/passwd contiene l’elenco degli account e relative informazioni newusr:x:503:100:Nuovo Utente:/home/newusr:/bin/bash • /etc/shadow contiene l’elenco delle password cifrate e la loro scadenza newusr:$1$sppz2WcbqRciUU:12145:-1:99999:-1::: • /etc/group contiene l’elenco dei gruppi utenti:x:100:oldusr1,oldusr2,newusr 27 Home directory e inizializzazione Shell • All’atto della creazione, la home directory viene riempita con il contenuto di /etc/skel/ • Quando si avvia una shell, vengono eseguiti degli script di inizializzazione Bash login: oppure oppure /etc/profile e poi ~/.bash_profile /etc/profile e poi ~/.bash_login /etc/profile e poi ~/.profile Bash logout: ~/.bash_logout Bash interattiva: ~/.bashrc 28 14 Quote del file system (1) E’ possibile limitare superiormente lo spazio su un file system a disposizione di ciascun utente 1. In /etc/fstab aggiungere l’opzione usrquota al file system considerato e aggiornare il mount point /dev/hda7 /home ext3 defaults,usrquota 1 2 # mount /home -o remount 2. Creare il file aquota.user che descrive le quote # quotacheck –uv /home 29 Quote del file system (2) 3. Abilitare/disabilitare le quote # quotaon –uv /home # quotaoff –uv /home 4. Configurare il valore delle quote # edquota user 5. Controllare l’utilizzo delle quote # quota -u user # repquota /home 30 15 Monitoraggio • • • • • • • last who ps top kill du df • /var/log – – – – mostra l’elenco degli accessi più recenti mostra gli utenti attualmente connessi mostra lo stato dei processi attivi mostra i processi in tempo reale termina un processo mostra le dimensioni di un file system mostra lo spazio disponibile su disco contiene i registri (log) di sistema messages secure httpd/access_log httpd/error_log log degli eventi di base log degli eventi inerenti questioni di sicurezza log degli accessi al server web log degli errori di accesso al server web 31 Deleghe di amministrazione • Se un file eseguibile di proprietà di root ha il bit SUID settato, chiunque lo esegua, lo farà assumendo l’identificativo di root (con pieni poteri) – non è consentito un uso selettivo sulla base dell’utente delegato • Per una gestione più efficiente delle deleghe si può utilizzare il comando sudo (superuser do) – permette a determinati utenti (e solo a loro) di eseguire determinati comandi (e solo quelli) da determinati host (e solo da quelli) con i privilegi di amministratore – consente di monitorare l’attività dei delegati inserendo nel registro di sistema (syslog) tutte le chiamate a sudo – si impostano le deleghe tramite il file di configurazione /etc/sudoers, che tipicamente è accessibile solo a root e che deve essere modificato tramite l’editor preposto visudo 32 16 Invocazione di comandi tramite sudo • Gli utenti delegati possono eseguire comandi con i diritti di root facendoli precedere dal comando sudo e rispettando le restrizioni specificate in /etc/sudoers • La prima volta che si invoca un comando tramite sudo, il programma chiede di inserire la password dell’utente delegato per effettuarne l’autenticazione, dopodiché controlla che la sintassi del comando da eseguire sia coerente con quanto specificato in /etc/sudoers • Da quel momento in poi, ogni altra invocazione tramite sudo non richiede la password, a meno che non sia trascorso un certo intervallo di tempo (tipicamente 5 minuti) dall’ultima invocazione 33 Note operative • sudo –l visualizza l’elenco dei comandi che è possibile eseguire tramite “sudo” – molti dei comandi eseguibili solo da root si trovano nelle directory /sbin e /usr/sbin, che in genere non sono incluse nel PATH degli utenti normali – verificare il valore della variabile d’ambiente con echo $PATH • sudo –b <comando> esegue tramite “sudo” un comando in background • scadenza della password per “sudo”: 180 min. • mc (Midnight Commander) utile per esplorare il filesystem ed editare file di testo • xemacs: editor di testo consigliato – per editare file di testo scrivibili solo da root tramite sudo: sudo –b xemacs <nomefile> 34 17 Strumenti di monitoraggio • Uno strumento indispensabile è l’analizzatore di protocollo (o packet sniffer) – – – – cattura i pacchetti in transito e ne mostra i dettagli richiede i diritti di root (usare sudo) tcpdump: analizzatore di protocollo a linea di comando ethereal: analizzatore di protocollo con interfaccia grafica • Consultazione dei log di sistema – basta un visualizzatore di file di testo – comandi less o more da linea di comando – comando tail per visualizzare la fine del file • tail –n N <nomefile> • tail –f <nomefile> viualizza le ultime N righe del file visualizza le ultime righe e continua a mostrare quelle aggiunte in coda in tempo reale 35 Accesso a PC remoti attraverso la rete • Per accedere ad un altro host da remoto, usare il comando ssh <username>@<IP_address> • (omettendo lo username si assume quello corrente) • l’opzione –X permette il tunneling delle applicazioni grafiche • Per copiare un file locale su un altro host, usare il comando scp <filename> <username>@<IP_address>:<path/remote_filename> • Il comando ping <host> permette di verificare la raggiungibilità di un host (con eccezioni che vedremo) 36 18