Università Degli Studi di Perugia Anno accademico 2008/2009 Studente Paolo Fiocchetti Professore Stefano Bistarelli Seminario: Unix Security.

Slides:



Advertisements
Presentazioni simili
Amministrazione di una rete con Active Directory
Advertisements

Amministrazione di una rete con Active Directory.
Amministrazione di una rete con Active Directory
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
TCP_Wrapper Le richieste per un determinato servizio (ad. es. telnet, ftp, rsh, etc.) vengono soddisfatte soltanto se lindirizzo IP del richiedente rientra.
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
Sistemi Operativi - Introduzione 1 Informazioni utili Per avere una distribuzione linux sul proprio pc: 1.
Dip. Automatica e Informatica
Installazione di Drupal su Linux (sistemista) Installazione step-by-step e note.
1 Amministrazione del sistema Creazione degli account al sistema. Comandi per la gestione degli utenti File per la gestione degli utenti, password shadow.
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
FTP1 FTP (File Transfer Protocol), implementato dai programmi ftp e ftpd, permette ad utenti di connettere sistemi remoti e trasferire files.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Esempi di Sistemi Operativi: DOS Nel file system di DOS i path names hanno la seguente forma C:\TEMP\DirA\DirB\elab.pdf Si utilizzano due nomi speciali.
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Corso GNU/Linux – 3 rev.2 Il sistema Shell Comandi base Struttura filesystem Permessi Netstudent
Università degli Studi di Perugia, LS in Informatica Seminario per il corso di Sicurezza Informatica (Prof. S. Bistarelli) Valentina Franzoni I nuovi paradigmi.
Corso gratuito di Linux. Linux User Group Mantova
1 Corso su Bash GL-COMO 03/ Shell Kernel Shell/ GUI Utente Perché?! ● Velocità/performance ● Richieste di software praticamente nulle ● Operazioni.
Introduzione a GNU/Linux. GNU/Linux Caratteristiche Compatibile con UNIX ® Multitasking Multiutente Libero.
1 Alberto Pollastro, !#/bin/bash Novara, GalLUG - Gruppo Utenti Linux Galliate - #!/bin/bash Alberto Pollastro.
Orientamento. Il Kernel Il Kernel è un programma scritto in linguaggio vicino all'hardware che ha il compito di fornire ai processi in esecuzione sul.
Gestione dei Software in GNU/Linux HackLab Catanzaro Installazione software da sorgente 8° Lezione GNU/Linux Base
VO-Neural Project e GRID Giovanni d’Angelo Dipartimento di Scienze Fisiche Università degli Studi di Napoli Federico II Martina Franca 12 – 23 Novembre.
Amministrazione di reti di calcolatori - Massimo Bertozzi Log.
Configurazione Router IR794- IG601
IL SOFTWARE (FPwin 6.0).
Ambienti di Programmazione per il Software di Base
“Vivere insieme” – Lezione6
A cura dell’Ing. Buttolo Marco
Corso GNU/Linux -3 Shell Comandi base Struttura filesystem Permessi
I comandi principali di Linux
PORTALE SIDOCPORTAL TALENTURE SA.
Summary di (quasi) tutti gli utenti non presentati…
Sistemi operativi.
I/O redirection AND PIPES
I PROCESSI.
Corso LAMP Linux Apache Mysql Php
Pronto.
Terza Lezione → Navigare nel file System → parte 2
PROGRAMMAZIONE BASH - INTRODUZIONE
GridFlex: gestione di software
Metriche SE monitoring G.Donvito G.Cuscela INFN Bari
I PERMESSI IN LINUX.
Seconda lezione → Navigare nel File System
I comandi.
Ambienti di Programmazione per il Software di Base
Giordano Scuderi Unico SRL Catania
LA GESTIONE DEI PACCHETTI
Sviluppo di server web e sistema di caching per contenuti dinamici
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
2018/9/ /9/11 USER ENVIRONMENT 1 1.
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Creare un server casalingo - 2
Istruzioni per il nuovo sistema di acquisizione dati
SAS® OnDemand for Academics SAS Studio
Introduzione L’8254 è un interval timer event/counter, progettato per risolvere i problemi del controllo del timing, comuni ad ogni microcomputer. E’ costituito.
Programmare.
Procedura di gestione appuntamenti tramite web.
Introduzione alla nuova versione di PowerPoint
Ambienti di Programmazione per il Software di Base
Introduzione alla nuova versione di PowerPoint
File System ed Input/Output
IT SECURITY Controllo di accesso
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
Creazione Identità digitali
TEMPI? Dalle 08:00 del 16 gennaio alle 20:00 del 06 febbraio 2017;
File system Casi di studio (3).
Transcript della presentazione:

Università Degli Studi di Perugia Anno accademico 2008/2009 Studente Paolo Fiocchetti Professore Stefano Bistarelli Seminario: Unix Security

Indice Sicurezza a strati Funzionamento dei permessi in Unix File di log Individuazione dell'hacker

Cenni storici Unix nasce nel 1969 con Ken Thompson e, in seguito, Denis Richie Multiutente Robusto Versatile Sicurezza intrinseca Laboratori Bell e Università

Cenni sul livello software più basso...cioè?

Livello 2 – Boot Loader LILO floppy da BIOS chmod 600 /etc/lilo.conf password restricted Grub All'avvio si preme il tasto “c” Si avvia una shell Si setta la password Anche i boot loader possono avere una password

User Account 1 Ogni utente per usare un sistema Unix deve creare un account al quale verranno assegnati: UID (user identities) GID (group identities) Numeri a 16 bit che identificano univocamente con un numero un certo utente (UID) e l'appartenenza a un certo gruppo (GID). Certi UID hanno significati particolari come quello di root che è sempre 0 (zero).

User Account 2 Gli account utente sono contenuti all'interno del file /etc/passwd user name:password:UID:GID:ID string:home directory:login shell Problema! Tutti possono accedere e leggere le password seppur criptate... quindi?

User Account 3... si affianca al normale /etc/passwd la gestione del file /etc/shadow: username:password:lastchange:min:max:warn:in active:expire leggibile solo da root password criptate con algoritmi più complessi e robusti è possibile gestire il tempo di scadenza, la durata minima e massima e i tempi di notifica della password

Gli oggetti 1 In Unix ogni file punta a una struttura chiamata appunto Inode: mode type of file and access rights uid username of the owner atimeaccess time gid owner group physical location block count size of file itime inode alteration time mtime modification time

Gli oggetti 2 Tramite il comando ls -l otteniamo: drwx paolo bombers 167 Nov 00:01 privatopeol/ -rwxrw-r-- 2 paolo bombers 12 Dec 07:13 lyrics.txt Il primo bit: ‘-’ file ‘d’ directory ‘s’ socket ‘b’ block device file ‘l’ symbolic link ‘c’ character device file ‘p’ FIFO

I permessi 1 Tramite il comando ls -l otteniamo: drwx paolo bombers 167 Nov 00:01 privatopeol/ -rwxrw-r-- 2 paolo bombers 12 Dec 07:13 lyrics.txt ● Username ● Gruppo ● Grandezza

I permessi 2 drwx paolo bombers 167 Nov 00:01 privatopeol/ -rwxrw-r-- 2 paolo bombers 12 Dec 07:13 lyrics.txt I bit dei permessi sono raggruppati in triplette in cui la prima tratta il proprietario, la seconda il gruppo l'ultima gli altri ‘-’ indica che non si ha quel permesso drwx : il proprietario ha tutti i permessi -rwxrw-r-- : tutti possono leggere il file, il gruppo e l'utente lo possono modificare e il proprietario può eseguirlo

I permessi 3 Il proprietario del file e il superutente possono modificare i permessi del file (chmod) Il superutente soltanto può modificare il proprietario del file (chown)

I permessi 4 3-bit per i permessi 1 da il permesso, 0 lo rifiuta Read only Read/Write Read/Write/Execute Bit come valori binari: Read only => => 4 Read/Write => => 6 Read/Write/Execute => => 7

I permessi 5 Il range dei bit va da 0-7 quindi un numero ottale è sufficiente: rw-r--r-- uguale a 644 rwxrwxrwx uguale a 777 Altri 3 bit opzionali servono per: dare permessi a utenti (UID) dare permessi a utenti (GID) sticky bit

I permessi 6 Conversion table: 0040 read by group 4000 set UID on execution 0020 write by group 2000 set GID on execution 0010 execute by group 1000 set sticky bit 0004 read by other0400 read by owner 0002 write by other 0200 write by owner 0001 execute by other0100 execute by owner

Permessi su directory In lettura: ls In scrittura: cp In esecuzione ➢ cd ➢ aprire un file al suo interno

Sticky bit 1 Nome deriva dal suo vecchio uso Poco utile per file Molto utile per directory È sicuramente vera una di queste asserzioni: ➢ l'utente è proprietario del file ➢ l'utente è proprietario della directory ➢ l'utente è l'amministratore

Sticky bit 2 Esempio: /tmp ha lo Sticky bit impostato, quindi: $ls -ld /tmp drwxrwxrwt 6 root root 1024 Aug 10 01:03 /tmp sticky bit è indicato usando la lettera t al posto della x nei permessi per gli altri

chmod & chown chmod altera i permessi di un file o una cartella ➢ chmod 754 filename ➢ chmod u+rwx, g+rx, o+r filename chown assegna al file un altro proprietario ➢ chown nproprietario nomefile ➢ chown nproprietario:ngruppo filename

Permessi di default 1 Il permesso di default è 666. Mentre il valore di umask si ottiene eseguendo il programma es: Quindi creando un file ottengo i permessi:

Permessi di default 2 Ricapitolando: La maschera di default è 666 Creo un file Digitando umask ottengo 0022 Ottengo un file con i permessi -rw-r--r-- Perché: = 644 che equivale a: -rw-r--r--

Permessi di default 3 È ovviamente possibile ridefinire la maschera di default con il comando umask nuovamascheradidefault

Due tool molto carini xlock blocca una sessione di X vlock blocca la console virtuale Entrambe danno accesso alla sessione precedente inserendo la password corretta

Aiuto! Arrivano gli utenti locali Dare loro solo i privilegi di cui hanno bisogno Fare attenzione dove e quando fanno un login Rimuovere gli account inutilizzati Eseguire il tool last Controllare i file di log

File di log 1 I file di log si trovano principalmente in: /var/log (Solaris, Linux, BSD, and free BSD) /usr/adm (usato da vecchi sistemi Unix) /var/adm (/usr/ montata read-only) Consultare il file /etc/syslog.conf

File di log 2 acct o pacct aculog lastlog loginlog messages sulog utmp * tmpx wtmp * wtmpx vold.log xferlog

File di log – lastlog 1 Unix salva l'ultimo login di ciascun utente nel file di log lastlog. Tramite il comando finger: $finger jack Login name: jack Name: Paolo Directory: /Users/jack Shell: /bin/bash Last login Tue Jul 12 07:49:59 on tty01 No Mail. No Plan.

File di log – lastlog 2 Purtroppo lastlog salva soltanto l'ultimo login Problema! Risolto per esempio con: mv /var/adm/lastlog.3 /var/adm/lastlog.4 mv /var/adm/lastlog.2 /var/adm/lastlog.3 mv /var/adm/lastlog.1 /var/adm/lastlog.2 cp /var/adm/lastlog /var/adm/lastlog.1

File di log – utmp & wtmp 1 /etc/utmp tiene traccia di chi è attualmente loggato Usato da: who, whodo, w, users, and finger /var/adm/wtmp tiene traccia di tutti i login e logout Fondamentalmente fornisce le stesse informazioni del comando last I due file possono essere visualizzati tramite il tool utmpdump.

File di log – utmp & wtmp 2 Quanto occupano questi file? ● utmp al massimo qualche kilobyte ● wtmp cresce finché c'è spazio sull'hard disk WTMP: problema da non sottovalutare!

File di log – loginlog 1 I sistemi Unix V (Solaris) usano questo file per salvare i tentativi non andati a buon fine (dopo 5 tentativi) di password. Implementabile con: # touch /var/adm/loginlog # chmod 600 /var/adm/loginlog # chown root /var/adm/loginlog

File di log – loginlog 2 # cat /var/adm/loginlog simsong:/dev/pts/8:Mon Nov 27 00:42: simsong:/dev/pts/8:Mon Nov 27 00:42: simsong:/dev/pts/8:Mon Nov 27 00:42: simsong:/dev/pts/8:Mon Nov 27 00:42: simsong:/dev/pts/8:Mon Nov 27 00:42: #

File di log – acct & pacct 1 Questi speciali file di log servono a salvare ogni comando lanciato da un utente Supervisiona: utilizzo CPU giochi (su server) vecchi programmi

File di log – acct & pacct 2 Cosa ci dicono account comando tty data ora Cosa NON ci dicono directory argomenti I programmi lastcomm o acctcom ci permettono di leggere questi file di log

File di log - access_log Monitoraggio Download Siti Usando il comando getstat: mac-22.cs.utexas.edu - - [09/Apr/1995:14:33: ] "GET /unix-haters-title.gif HTTP/1.0" Quindi occhio con facebook... in byte

File di log – syslogd 1 Berkeley sendmail program /etc/syslogd or /etc/syslog Ogni programma ➢ Nome ➢ Struttura ➢ Priorità ➢ Messaggio di log Esempio: $login login: Root LOGIN REFUSED on ttya

File di log – syslogd 2 Quando all'avvio parte syslog controlla la sua configurazione all'interno del file /etc/syslog.conf *.err;kern.debug;auth.notice /dev/console daemon,auth.notice /var/adm/messages lpr.* /var/adm/lpd-errs auth.* root,nosmis *.emerg * *.alert |dectalker mark.* /dev/console

Conclusione sui log ● Amministratore ● Server log ● Swatch ● Octopussy ● Handmake Prevenire è meglio che curare!!! Ma i file di log non prevengono affatto!!!

Adesso, facciamo sul serio!

Individuazione dell'hacker 1 Un hacker esperto cancella le sue tracce Edita i file di log Entra con privilegi root Contromisure: redirigere i log anche su un server modificare la configurazione del syslogd nel file /etc/syslogd.conf aggiungendo linee di questo genere:

Individuazione dell'hacker 2 Va anche detto che questo deve essere INESPUGNABILE

Individuazione dell'hacker 3 Un hacker con privilegi root crea dei file con SETUID bit settato in modo da riottenere quel permesso in futuro Oppure cerca dei file esistenti con quel bit Cosa ovvia: per l'hacker è sufficiente lasciare una shell di proprietà di root con il SETUID settato e con permessi di esecuzione per tuttishell di proprietà di root Come ci si deve comportare?

Individuazione dell'hacker 4 creare un elenco di questi file con relative proprietà (path, data e dimensione) attraverso dei find confrontare periodicamente questo elenco con una versione che consideriamo affidabile se ci sono differenze c'è stato un attacco tutto dipende dall'affidabilità del file in questione TRIPWIRE

Individuazione dell'hacker 5 Un' altra attività tipica degli hacker è attivare degli sniffer Copiare sulla macchina in file illeggibili, come “.. “ (punto punto spazio), le password Per verificare la presenza di file di questo genere si può utilizzare il seguente comando: $find / -name ".*" -print | cat -v A mio avviso il problema principale

Individuazione dell'hacker 6 Passwords cifrate attraverso la funzione C crypt La funzione crypt: Cifra la password utilizzando un algoritmo crittografico(DES, MD5,...) Utilizza una tecnica chiamata “Password salting” per perturbare l'algoritmo. Alla codifica della password viene affiancato un salt il cui scopo è quello di complicare gli attacchi basati su dizionario.

Individuazione dell'hacker 7 CRACK ➢ Crack -makeonly (configura e crea gli eseguibili) ➢ Crack -makedict (crea il dizionario) ➢ Crack -nice 10 /etc/passwd ➢ Crack-Reporter Crack-Reporter TRIPWIRE ➢ tripwire --init ➢ tripwire --check > ~/report_tripwirereport_tripwire

Quindi Cambiare password spesso ➢ Sniffare una password che non posso usare è una cosa abbastanza inutile Usare password complicate ➢ Il vocabolario non contiene la parola “sf%556*érrt3” Ricordarsi le password!

Conclusioni Tutto è possibile!