Loading...

Come Gestire Pacchetti su Linux

Le distribuzioni sono normalmente composte da pacchetti (packages), ed ognuno di essi contiene una specifica applicazione o componente: ad esempio, ci possono essere pacchetti contenenti una libreria per la gestione del formato di immagini PNG, oppure una serie di font, o un browser web. Un pacchetto è normalmente fornito come codice compilato, e la sua installazione o rimozione è gestita in maniera più sofisticata rispetto ad un semplice programma di archiviazione come tar. Il programma preposto a queste funzioni è detto sistema di gestione dei pacchetti (package management system o PMS) della distribuzione. Ogni pacchetto dedicato ad un PMS contiene delle meta-informazioni come descrizione, versione, dipendenze, ecc. Il sistema di gestione dei pacchetti tiene in considerazione queste meta-informazioni per permettere ricerche, aggiornamenti automatici a versioni più aggiornate, per controllare che tutte le dipendenze di un pacchetto siano soddisfatte e/o soddisfarle automaticamente.

Gestone dei pacchetti Debian e Ubuntu

Il sistema di gestione dei pacchetti di Debian si basa sui sistemi dpkg e apt. In aggiunta a Debian una serie di altre importanti distribuzioni Linux sono derivati dal sistema Debian, Ubuntu compreso.

Advanced Packaging Tool, (apt)

Advanced Packaging Tool, conosciuto con l’acronimo APT, è il gestore standard di pacchetti software delle distribuzioni Debian e Ubuntu. Un gestore di pacchetti viene utilizzato per installare, aggiornare, verificare e rimuovere software dal sistema operativo in maniera intuitiva e aiuta a risolvere le dipendenze tra i pacchetti. APT ha la particolarità di sfruttare contemporaneamente diverse sorgenti di pacchetti (sorgenti remote FTP e HTTP, cdrom, DVD e hard disk), di gestire autonomamente diverse distribuzioni di pacchetti e di permettere velocemente l’aggiornamento del sistema operativo di una particolare distribuzione. Sotto Debian/Ubuntu si hanno tre differenti distribuzioni utilizzabili: stable, testing e unstable. La lista dei comandi seguenti può essere utilizzata sia su Debian che su Ubuntu, basta ricordarsi che su Ubuntu deve essere prefissa la parola chiave sudo per avere i privilegi di amministratore/root.

Advance Packaging Tool si basa sostanzialmente sul file /etc/apt/sources.list che contiene la lista delle sorgenti da cui attingere i pacchetti e sul comando apt-get:

apt-get install [package-name] – questo comando installa il pacchetto/i specificatiinsieme a tutte le dipendenze.
apt-get remove [package-name] – questo comando rimuove il pacchetto/i specificati, ma non le sue dipendenze.
apt-get autoremove – questo comando rimuove ogni dipendenza “orfana” che è installata ma non viene utilizzata da nessuna applicazione.
apt-get clean – rimuove i file dei pacchetti scaricati (.deb) del software già installato.
apt-get purge [optional] – combina la funzione remove e clean di uno specifico pacchetto. Rimuove anche i file di configurazione di un dato pacchetto.
apt-get update – legge i file da /etc/apt/sources.list e aggiorna il database del sistema di gestione per i pacchetti disponibili per l’installazione. Eseguire questo dopo aver cambiato sources.list.
apt-get upgrade – aggiorna tutti i pacchetti se ce ne sono di disponibili. Eseguire questo comando dopo aver lanciato apt-get update.

Mentre apt-get probabilmente fornisce le funzionalità più utilizzate della gestione dei pacchetti, apt fornisce informazioni aggiuntive che potrebbero risultare utili per il comando apt-cache.

apt-cache search [package-name] – Se si conosce il nome del software, ma apt-get install fallisce hai bisogno di ricercare nel sistema il nome del pacchetto.
apt-cache show [package-name] – l’interfaccia di ricerca fornisce solo i nomi dei pacchetti. Se hai bisogno di saperne di più su un pacchetto incluso le dipendenze, i numeri di versione e una descrizione eseguire questo.
apt-cache depends [package name(s)] – Visualizza l’elenco dei packages dipendenti dal package indicato.
apt-cache rdepends [package name(s)] – Genera un output di una lista di pacchetti che dipendono da uno specifico pacchetto.Questo elenco può essere lungo.
apt-cache pkgnames – genera una lista dei pacchetti installati sul vostro sistema.
In generale, combinando la maggior parte di questi comandi con apt-cache show si è in grado di fornire molte informazioni utili sul sistema, il software che si potrebbe desiderare di installare, e il software che è già stato installato.

aptitude

aptitude è un’altra interfaccia di front-end per apt. Esso fornisce una interfaccia grafica a linea di comando, che può essere utile per un approccio più semplice nelle attività di gestione giornaliere.

Oltre all’interfaccia grafica, aptitude fornisce una combinazione di interfaccia a riga di comando per il più delle sue funzionalità. I comandi salienti sono:

aptitude update, aptitude install, aptitude remove,aptitude clean, aptitude purge – come omologhi di apt-get counterparts.
aptitude search, aptitude show, – come omologhi di apt-cache counterparts.
aptitude download – Scarica un file deb per un dato pacchetto nella directory corrente.
Aptitude include inoltre funzionalità avanzate per l’aggiornamento “sicuro” (un aggiornamento che non rimuove pacchetti esistenti), così come impedire al sistema di aggiornare specifici pacchetti detti (“holding”).

Introduzione a /etc/apt/sources.list

Nello svolgere le sue operazioni, APT usa un file che contiene la lista delle “sorgenti” dalle quali può attingere i pacchetti. Questo file è /etc/apt/sources.list. Il contenuto di questo file ha normalmente il seguente formato:

deb [location-of-resources] [distribution] [component(s)]
ecco un esempio:

deb http://mirror.cc.columbia.edu/pub/linux/debian/debian/ lenny main contrib
La riga precedente indica il mirror Columbia University per la distribuzione “Lenny”, così come i componenti principali.

Usare dpkg

dpkg è il componente base del sistema di gestione dei pacchetti di Debian Gnu Linux, è simile a RPM, in quanto è usato per installare, disinstallare ed ottenere informazioni sui pacchetti .deb. Dpkg è viene utilizzato generalmente per installare pacchetti .deb già presenti sull’ hard disk, i pricipali modi d’utilizzo sono(per utilizzare dpkg sono necessari i permessi di root):

Installazione pacchetto: dpkg – i nome_pacchetto.deb
Disinstallazione pacchetto – dpkg -r nome_pacchetto.deb<
Controllare se un pacchetto è già installato – dpkg -l|grep nome_pacchetto
Lista dei file che compongono un pacchetto già installato – dpkg -L pacchetto
Far riprendere la configurazione di un pacchetto in caso non sia andata a buon fine – dpkg –configure -a
Forzare la disinstallazione in caso non sia avviabile – dpkg –purge –force-all nome_pacchetto
Un cenno anche ad alcune opzioni dpkg che non rigurdano i pacchetti software in se stessi ma riguardano la riconfigurazioni di alcuni importanti elementi del sistema operativo, quali:
Riconfigurazione del server grafico Xorg (da utilizzare in caso non partisse l’interfaccia grafica) – dpkg-reconfigure xserver-xorg
Riconfigurazione del server grafico Xfree (quasi obsoleto) – dpkg-reconfigure xserver-xfree86

Gestione dei pacchetti Fedora e CentOS

Fedora e CentOS sono distribuzioni strettamente correlate tra loro. Le loro principali differenze derivano da come i pacchetti vengono scelti per l’inclusione nel loro repository. Dal punto di vista di gestione dei pacchetti gli strumenti sono molto simili. Entrambi i sistemi utilizzano il programma di yum come front-end per interagire con il repository di sistema e installare le dipendenze, e comprenderà anche uno strumento di livello più basso chiamato yumc he ti permette di interagire con i singoli pacchetti rpm.

Yellow Dog Updater, modificato (yum)

Lo strumento yum è stato inizialmente sviluppato per il sistema di Yellow Dog Linux per sostituire l’allora Yellow Dog Updater (yup). RedHat trovò lo strumento di yum essere una preziosa aggiunta ai loro sistemi. Yum oggi è il pacchetto di default e strumento di gestione dei repository per un certo numero di sistemi operativi.

Dalla linea di comando puoi utilizzare i seguenti comandi yum:

Aggiornamento completo del sistema operativo – yum update
Installazione di un pacchetto – yum install …
Rimozione di un pacchetto – yum remove nomepacchetto
Cercare un pacchetto all’interno di quelli disponibili nei repository – yum search parola_chiave
Avere una lista di pacchetti – yum list
Avere una lista di pacchetti e filtrare in base ad un pattern – yum list |grep

RPM package manager

RPM, Red Hat Package Manager. Utility per installare, disinstallare, aggiornare, interrogare, verificare e costruire pacchetti software. Un package costruito con RPM è un archivio di file e informazioni che potranno essere richiamate una volta che il package è stato installato. RPM permette di installare programmi, già compilati, con una facilità e rapidità estrema sul proprio sistema Linux (è l’equivalente di un setup.exe su Windows). RPM è usato da RedHat e da altre distribuzioni, è importante utilizzare gli RPM adatti per il proprio sistema: un RPM realizzato per RedHat 6.2, per esempio, difficilmente funzionerà su RedHat 7.2. RPM gestisce automaticamente le “dependencies”: se si prova ad installare un RPM che richiede librerie o programmi non presenti o non abbastanza aggiornati sul sistema, l’installazione fallisce e viene indicato quali file mancano. Analogamente, se si prova a rimuovere un package che contiene file utilizzati da altri programmi, viene dato un messaggio di errore. Gli RPM automaticamente distribuiscono i file di un pacchetto nelle directory giuste (logs in /var/log, file di configurazione in /etc/, binari in /usr/bin o /usr/sbin, script di startup in /etc/rc.d/init.d/ ecc.) e verificano la presenza di conflitti o installazioni più recenti. Un RPM non cancella mai nulla che non abbia installato. Se deve sostituire o cancellare un file di configurazione, per esempio, mantiene il file esistente aggiungendo il suffisso .rpmsave.
Comandi:
rpm -i [opzioni] [pacchetti] – Installazione pacchetti RPM
rpm -U [opzioni] [pacchetti] – Aggiornamento di pacchetti RPM
rpm -e [opzioni] [pacchetti] – Disinstallazione di pacchetti RPM
rpm -q [opzioni] [pacchetti] – Interrogazione di pacchetti RPM
rpm -V [pacchetto] – Verifica pacchetto RPM

Introduzione a: /etc/yum.conf

Il file che si trova in / etc / yum.conf fornisce opzioni di configurazione a livello di sistema per yum, oltre ad informazioni sui repository. Le informazoni sul repository possono essere ubicate anche in file con estensione. repo in / etc / yum.repos.d

Le opzioni nella stanza [principale] sono piuttosto auto-esplicative:

logfile=/var/log/yum.log
cachedir=/var/cache/yum
Per definire una nuova “stanza” per un nuovorepository usare il seguente template, sostituendo le stringhe in maiuscolo con i valori attuali:

[REPO-NAME]
name=REPOSITORY-NAME
mirrorlist=HTTP-ACCESSIBLE-MIRROR-LIST
#baseurl=BASE-URL-FOR-REPOSITORY
gpgcheck=BOOLEAN-VALUE[1-or-0]-TO-VERIFY-REPOSITORY
gpgkey=FILE-PATH-TO-GPG-KEY
L’esempio seguente è la configurazione di default per il repository “Base” in CentOS 5.2:

[base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

Molto interessante.

Comandi Linux più Utilizzati

In questa guida puoi trovare i comandi maggiormente utilizzati.

clear Pulisce la finestra del terminale

[root@test~]$ clear
ls Mostra il contenuto di una directory

[root@test~]$ ls
[root@test~]$ ls -l
cat Mostra il contenuto di un file nel terminale

[root@test~]$ cat filename.extension
rm Rimuovere un file

[root@test~]$ rm filename.extension
[root@test~]$ rm -i filename.extension
[richiesta di conferma prima di rimuovere il file]
[root@test~]$ rm -f filename.extension
[forza la rimozione del file indipendentemente se è preotetto da scrittura o aperto]
[root@test~]$ rm -r directory
[rimuove i file della directory]
cp Copiare un file

[root@test~]$ cp file1.ext file2.ext
[root@test~]$ cp file1.ext /some/other/location/file2.ext
[root@test~]$ cp file1.ext user@some.other.server:~/some/other/location/file2.ext
passwd Cambiare la password

[root@test~]$ passwd
[root@test~]$ passwd SomeNewUser
[root access only]
motd Messaggio del giorno

[root@test~]$ motd
finger Programma che fornisce informazioni sugli utenti.

[root@test~]$ finger -p
Login Name Tty Idle Login Time Office Office Phone
xuser pts/0 Oct 22 22:04 (ool-4578671d.dyn.optonline.net)
startx Avvia il sistema a finestre.

[root@test~]$ startx -dpi 300 -depth 32
less Mostra i contenuti di un file nel terminale una pagina alla volta

[root@test~]$ less filename.ext
[root@test~]$ less +G filename.ext
[start from end]
info Mostra la documentazione e i dettagli delle shells, utilities e programmi.

[root@test~]$ info
[root@test~]$ info less
lpr Inviare un file alla stampante

[root@test~]$ lpr filename.ext
[root@test~]$ lpr -# 3 filename.ext
[3 copies]
grep cercare i file per stringa

[root@test~]$ grep “needle” haystack.ext
[root@test~]$ grep -i “neEdlE” haystack.ext
[root@test~]$ grep -i -r “neEdlE” directory/
head Visualizza le prime 10 linee di un file

[root@test~]$ head filename.ext
tail Visualizzare le ultime 10 linee di un file

[root@test~]$ tail filename.log
[root@test~]$ tail -f filename.log
[don’t exit // realtime]
mv Muovere o rinominare un file

[root@test~]$ mv filename.ext /some/other/directory/
[root@test~]$ mv filename.ext newname.ext
[rename]
file Visualizzare le informazioni sul contenuto di un file

[root@test~]$ file program.php
program.php: PHP script text
[root@test~]$ file archive.tar.gz
archive.tar.gz: gzip compressed data, from Unix
echo Copiare le stringhe sul terminale

[root@test~]$ echo Hello Think-Lamp
[root@test~]$ echo * | wc
date Visualizzare data e ora

[root@test~]$ date
[root@test~]$ date -R
cal Visualizzare il calendario

[root@test~]$ cal
[root@test~]$ cal -y 2009
gzip Comprimere un file

[root@test~]$ gzip filename.etx > archive.gz
[root@test~]$ gzip -f -q filename.etx > archive.gz
[force and supress errors]
[root@test~]$ gzip -f -q -r directory/ > archive.gz
gunzip Decomprimere e comprimere un file

[root@test~]$ gunzip archive.gz
which Mostra il percorso per un comando

[root@test~]$ which echo
[root@test~]$ which less
whereis Consente di visualizzare i percorsi per le posizioni dei comandi

[root@test~]$ whereis echo
[root@test~]$ whereis less
who LIsta deegli utenti attualmente connessi

[root@test~]$ who
[root@test~]$ who -b
w Mostra l’elenco degli utenti collegati con il dettaglio delle risorse che utilizzano

[root@test~]$ w
mesg Configura le opzioni necessarie per permettere ad altri utenti di scrivervi dei messaggi.

[root@test~]$ mesg
write Inviare un messaggio ad un altro utente

[root@test~]$ write xuser
hello! This is test message

[xuser@test~]$
Message from [root@test~]$ on pts/1 at 13:25 …
hello! This is test message
talk Permette di effettuare conversazioni in tempo reale con altri utenti

[root@test~]$ talk xuser@test

[xuser@test~]$
Message from root@test
talk: connection requested by root@test.
talk: respond with: talk xuser@test
chmod Cambiare i permessi per l’accesso ai file

[root@test~]$ chmod 775 file.ext
[root@test~]$ chmod -r 777 directory/
CHMOD can also to attributed by using Numeric Permissions:

400 read by owner
040 read by group
004 read by anybody (other)
200 write by owner
020 write by group
002 write by anybody
100 execute by owner
010 execute by group
001 execute by anybody
____
777 read/write/execute by everybody
mkdir Creare un directory

[root@test~]$ mkdir newdirectory
rmdir Rimuovere un directory vuota

[root@test~]$ rmdir newdirectory
ln creare un link ad un file esistente

(hard link) [root@test~]$ ln targetfile.ext linkname.ext
(soft link) [root@test~]$ ln -s targetfile.ext linkname.ext
df Mostra tutti i filesystems montati

[root@test~]$ df
[root@test~]$ df -h
top Mosra la lista aggiornata dei processi attivi

[root@test~] top
# Once in TOP screen, use shift+F to select ‘sort by’ field.
# Once in Top screen, use Shift+R to ‘sort’ ascending OR descending
tty Visualizza il nome del terminale in cui è stato emesso il comando

[root@test~] tty
kill Blocca un processo tramite il PID (Process Identification Number) o job number

[root@test~] kill -p 2345
jobs Mostra i processi fatti partire dalla shell corrente

[root@test~] jobs
[root@test~] jobs -l
netstat Mostra le connessioni di rete

[root@test~] netstat -a -e

Diagnosticare Problemi di Memoria su Server Linux

Nel caso in cui riscontriate dei problemi con il vostro server virtuale che non riuscite ad identificare/replicare è consigliabile controllare che non siano presenti problemi a livello hardware o di sistema operativo. Per identificare la causa esatta dei vostri problemi potete utilizzare i tools indicati in questa guida.

Controllare l’utilizzo della memoria

Se necessiti di vedere quanta memoria sta usando il tuo sistema quando si presenta un problema, usa il seguente comando:

free -m
Per esempio:

total used free shared buffers cached
Mem: 2006 1926 79 0 41 938
-/+ buffers/cache: 946 1059
Swap: 5875 250 5624
Questo report richiede un minimo di attenzione per essere correttamente interpretato. Su di un totale di 2 gigabytes di memoria RAM, il sistema sta utilizzando 1926 megabytes e ne ha 79 megabytes liberi. SI noti che il sitema ha anche 945 megabyte di dati immagazzinati nella cache che verranno liberati solo nel caso servissero. Per un sistema Linux è normale lasciare i vecchi dati nella RAM fno a quando non c’è ne è di bisogno, questo non deve allarmarti se vedi solo una piccola quantità di memoria libera.

Lo strumento vmstat fornisce informazioni sulla memmoria, utilizzo dello swap, IO wait, e l’attività di sistema. Questo trumento è particolamente utile per la diagnosi dei porblemi legati all’I/O.

Se credi di avere problemi I/O utilizza i seguenti comandi:

vmstat 1 20

Questo fa si che venga lanciato il comando vmstat ogni secondo per venti volte. Questo offre un buon esempio dello stato del sistema. L’output generato sarà simile a questo:

procs ———–memory———- —swap– —–io—- -system– —-cpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 256620 108400 43088 960964 0 0 2 48 0 5 4 1 95 0
0 0 256620 108436 43112 960988 0 0 0 336 25 747 1 0 98 1
0 0 256620 108436 43112 960988 0 0 0 0 9 681 0 1 99 0
1 0 256620 108412 43112 960988 0 0 0 0 6 1134 50 3 47 0
2 0 256620 108420 43112 960988 0 0 0 16 8 606 100 0 0 0
Le colonne “memory” e “swap” forniscono lo stesso tipo di informazioni dal comando free-m anche se il risultato finale è di più difficile comprensione. L’informazione piu’ importante resitutita da questo comando e’ indicata nella colonna “wa” che generalmente e’ l’ultima colonna visualizzata. Questa colonna mostra il tempo che la CPU impiega in attesa di terminare le operazioni di IO.

Se questo numero fosse molto piu’ alto di 0, dovreste considerare la possibilita’ di prendere delle contromisure per limitare l’utilizzo delle risorse IO. In ogni caso se il risultato del comando vmstat e’ simile a quello sopra indicato potete essere tranquilli che non c’e’ nessun problema legato all’IO

Sicurezza Linux – Consigli Utili

Utilizzare sempre un gestore di pacchetti (come apt-get su Debian), per scaricare ed installare i pacchetti di aggiornamento sul sistema. Prestare molta attenzione durante l’aggiornamento automatico sui server di produzione.

Installare nmap per determinare i canali di comunicazione possibili. Inizia con qualcosa di semplice come:

# nmap 192.168.1.1

L’utilizzo di una password adeguata e’ il primo passo per garantire la protezione dei vostri server. Scegliere accuratamente una password per tutti gli utenti registrati sul vostro server e’ necessario al fine di evitare accessi non autorizzati. Se un utente malintenzionato dovesse impossessarsi della vostra password potrebbe facilmente accedere al vostro server. Per migliorare il livello di sicurezza dei vostri server vi consigliamo di disabilitare eventuali account non utilizzati utilizzando il comando : /usr/bin/passwd -l.

Vi consigliamo inoltre di disabilitare programmi e servizi non utilizzati che potrebbero rappresentare una possibile porta d’accesso al vostro server.

La sicurezza del Kernel

Esistono diverse possibilita’ di configurazione del Kernel che permettono di aumentare la sicurezza grazie all’utilizzo del psudo-filsystem /proc. Alcuni files contenuti nella directory /proc/sys sono direttamente legati alla sicurezza. Queste sono alcune delle opzioni disponibili in /proc/sys/net/ipv4:

icmp_echo_ignore_all: Disabilita tutte le richieste ICMP ECHO. Questo farà in modo che il kernel ignori semplicemente tutti i messaggi di ping (conosciuti anche come messaggi ICMP di tipo 0).
icmp_echo_ignore_broadcasts: Questo disattiva la risposta ai broadcast ICMP, prevenendo gli attacchi Smurf. L’attacco Smurf consiste nell’invio di un messaggio ICMP di tipo 0 (ping) all’indirizzo broadcast di una rete. Di solito l’aggressore utilizza un indirizzo sorgente contraffatto
ip_forward: Assicurarsi che l’IP forwarding sia disattivato. Questa funzione serve solo per un nodo avente più connessioni di rete. Si raccomanda di attivare o disattivare questa flag prima di tutte le altre, in quanto essa attiva/disattiva altre flag.
ip_masq_debug: Enable or disable debugging of IP masquerading.
tcp_syncookies:Protegge da attacchi di tipo SYN.
rp_filter: Attivare il reverse filtering del percorso. Questo aiuta ad essere sicuri che i pacchetti utilizzino indirizzi sorgente regolari, rifiutando automaticamente i pacchetti in arrivo se la voce nella tabella di instradamento che indica il loro indirizzo sorgente non corrisponde all’interfaccia di rete su cui stanno essi arrivando.
secure_redirects: Non accettare pacchetti ICMP rediretti. Le redirezioni ICMP possono essere usate per alterare le tabelle di instradamento, con conseguenze potenzialmente negative.
log_martians: Registra i pacchetti con un indirizzo non valido nel log del kernel.
accept_source_route: Non accettare pacchetti da fonte instradata. Gli aggressori possono usare l’instradamento delle fonti per generare traffico che sembra avere origine all’interno della rete, ma che in realtà viene instradato all’indietro lungo il percorso da cui è venuto, cosicché gli aggressori possono compromettere la rete

Per garantire la sicurezza dei pacchetti di aggiornamenti distribuiti viene utilizzato il comando md5sum. Il comando md5sum permette di calcolare una chiave a 128-bit che dipende direttamente dal contenuto del file a cui e’ applicata e viene utilizzato per confrontare che il valore indicato sia realmente valido o stabilire se il contenuto del file originale e’ stato cambiato. Il comando si utilizza con la seguente sintassi:

# md5sum package-name
La stringa restituita dal comando puo’ essere confrontata con la chiave MD5 pubblicata da chi distribuisce il pacchetto garantendo un buon livello di sicurezza.

I permessi dei files

È importante assicurarsi che i vostri file di sistema non siano aperti da utenti e gruppi che non dovrebbero fare manutenzione di sistema. I file SUID e SGID sono un potenziale rischio, e dovrebbero essere tenuti d’occhio. Visto che questi programmi danno speciali privilegi all’utente che li esegue, è necessario assicurarsi che non vengano istallati programmi insicuri. Un trucco molto diffuso fra i cracker è sfruttare programmi con SUID-root, quindi lasciare un programma SUID a fare da backdoor per entrare la prossima volta, anche se il buco originale viene chiuso. Trovate tutti i programmi SUID/SGID sul vostro sistema, e tenete appunti su cosa sono, così da essere al corrente di qualsiasi cambiamento che potrebbe indicare un eventuale intrusore. Usate questo comando per trovare tutti i programmi con SUID/SGID sul vostro sistema:

root# find / -type f \( -perm -04000 -o -perm -02000 \)

La distribuzione Debian esegue un job ogni sera per determinare quali file con SUID esistano. Quindi li compara con quelli della sera precedente. Potete cercare questo log in /var/log/setuid*. Potete togliere i permessi SUID o SGID da un programma sospetto con chmod, quindi rimetterli se pensate che siano assolutamente necessari. # I file scrivibili da tutti, soprattutto i file di sistema, possono essere un buco nella sicurezza se un cracker accede al vostro sistema e li modifica. Inoltre, le directory scrivibili da tutti sono pericolose: permettono a un cracker di aggiungere o cancellare file come vuole. Per trovare tutti i file di libera scrittura sul vostro sistema, usate il comando:

root# find / -perm -2 ! -type l -ls
e assicuratevi di sapere perché quei file sono scrivibili. Durante l’uso normale alcuni file saranno liberamente scrivibili, inclusi alcuni da /dev, e i link simbolici, da cui il ! -type l che li esclude dal comando find.

Linux e File di Log

Una delle cose che rendono Linux un sistema operativo affidabile e sicuro è che praticamente tutte le operazioni vengono registrate. Queste informazioni sono estremamente importi per poter identificare eventuali problemi. I logs, se usati correttamente, vi forniranno tutte le informazioni di cui avete bisogno.
Il vostro sistema Linux registra le informazioni in diversi files di log. Questi files di log sono generalmente in formato ASCII standard e vengono generalmente registrati nella directory /var/log. Molti files vengono generati dal programma syslogd, mentre altri vengono venerati direttamente dalle applicazioni.
Questa guida spiega come leggere ed utilizzare alcuni di questi log di sistema, come configurare il programma di gestione del logging, syslogd, e come funziona la rotazione automatica dei log.

Log di sistema
I log di sistema si occupano principalmente di tenere sotto controllo il funzionamento di Linux, non necessariamente delle applicazioni installate dagli utenti. Ad esempio vengono monitorati l’accesso al sistema, i daemons di sistema, i messaggi di sistema, etc.

Log di autorizzazione
Il log di autorizzazione tiene traccia del sistema di autenticazione, dei sistemi che si occupano di gestire e richiede agli utenti le password, comne il modulo PAM, il comando sudo, gli accessi da remoto, etc. Il log di autorizzazione viene salvato in /var/log/auth.log.
Per leggere solo le righe dei logs che ci interessano ` possibile utilizzare il programma grep. Per esempio per controllare solo le righe relative ai logins sshd :
grep sshd /var/log/auth.log | less
Daemon Log

Il daemon ` un programma che gira in automatico in background, svolgendo alcune operazioni che garantiscono il corretto funzionamento del sistema. Il log /var/log/daemon.log contiene informazioni relative ai vari servizi che girano in background, come lo Gnome Display Manager, il servizio Bluetooth hcid, o il servizio MySQL mysqld.

Anche in questo caso è possibile utilizzare grep per trovare le informnazioni che ci interessano.

Debug Log
Il debug log viene salvato in /var/log/debug e fornisce informazioni dettagliate sul sistema Linux e sulle applicazioni che hanno impostato un livello di log DEBUG.

Kernel Log
Il kernel log viene salvato in /var/log/kern.log e fornisce informazioni dettagliate provenienti dal kernel Linux. Questi messaggi possono essere utili per controllare problemi relativi ad un kernel nuovo e compilato dall’utente.

Kernel Ring Buffer
Il kernel ring buffer non è un vero e proprio log ma un’area del kernel che può essere utilizzata per visualizzare i messaggi dei avvio del kernel utilizzando l’utility dmesg. Per visualizzare i messaggi utilizzare :
dmesg | less
Ad esempio per cercare i messaggi relativi al sistema Plug & Play :
dmesg | grep pnp | less
In alternativa è possibile cercare le stesse informazioni nel file /var/log/dmesg.

Message Log
Il messages log viene salvato in /var/log/messages e fornisce informazioni provenienti sia dalle applicazioni che dal sistema operativo. Questo log è utile per controllare i messaggi di log generati dalle applicazioni o dal sistema operativo che hanno impostato un livello di log INFO.

System Log
Il system log viene salvato in /var/log/syslog e fornisce la maggior parte delle informazioni provenienti dal sistema operativo. Controllate questo file se non riuscite a trovare le informazioni desiderate in nessun altro log.

Application Log
Alcune applicazioni generano anche dei logs personalizzati in una subdirectory nella cartella /var/log. Ad esempio /var/log/apache2 contiene i files di log relativi al web server Apache 2.

Log in formato non leggibile ad occhio umano
Alcuni files di log salvati nella cartella /var/log vengono salvati in un formato utilizzabile solo da altre applicazioni e non manualmente. Ad esempio:

Log con errori di login
Eventuali errori di login vengono registrati nel file /var/log/faillog in un formato non leggibile ad occhio umano. Per visualizzare gli errori recenti di login:
faillog
Log con gli ultimi login

Gli ultimi login vengono registrati in /var/log/lastlog. Per leggere il contenuto del file è necessario utilizzare il comando lastlog.