Laboratorio di Reti di Telecomunicazioni LA

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