Bloccare un sito web con Squid


Spesso e volentieri all’interno di una organizzazione aziendale può sorgere l’esigenza di bloccare l’acceso al web per una determinata macchina. Ciò mentre il resto della rete aziendale deve essere libera di continuare a navigare regolarmente.

Mettiamo il caso che occorre bloccare l’accesso a tutti i siti web per l’indirizzo 10.0.0.10 e lasciare lo stesso indirizzo IP libero di andare su Facebook. Per fare ciò basta fare una piccola modifica al file squid.conf

acl allowed_ip src 10.0.0.10
acl allowed_ip_site dstdomain .facebook.com

http_access deny allowed_ip !allowed_ip_site
(da inserire sotto “http_access deny manager”)

Ovviamente il resto della configurazione può rimanere tale e quale.
In questo modo tutti potranno navigare liberamente tranne l’IP 10.0.0.10 che potrà andare solo su Facebook …

A proposito di .iso


Per ottenere le informazioni su una immagine ISO senza montarla o masterizzarla:

isoinfo -d -i filename.iso

Per montare un’immagine:

mount -o loop -t iso9660 my.iso /mnt/something

Masterizzare un CD o DVD partendo da una ISO ed espellere il disco quando ha terminato:

cdrecord dev=0,0,0 -v -eject yourimage.iso

dove

cdrecord -scanbus

ci dà il valore per identificare il masterizzatore (ad esempio 1,0,0)

Se invece capita di avere l’esigenza di prendere uno specifico file da una immagine ISO, magari on line, ecco come fare:

curl -f -O http://cicciobomba.server.com/superLinux/i386/formattatore-x86-DVD.iso

Per copiare un CD/DVD sull’hard disk:

dd if=/dev/cdrom of=whatever.iso

un’alternativa migliore, che rimedia alla mancanza di controllo sugli errori di dd è quest’altra:

readom dev=/dev/scd0 f=/path/to/image.iso

Linux Box hardening


Il file passwd

Il file /etc/passwd contiene le informazioni relative a tutti gli utenti di un sistema Linux. Ciascuna riga corrisponde ad un utente, nell’ordine, da sinistra verso destra:

  • nome dell’utente (username)
  • password crittografata
  • identificatore utente (userid)
  • identificatore di gruppo (groupid)
  • commento, che di solito è il nome dell’utente
  • directory “home”, cioè quella assegnata all’utente per
  • memorizzare i file personali
  • la shell predefinita quando l’utente si collega

Poiché Linux è un sistema operativo multiutente, più utenti possono essere collegati a un sistema contemporaneamente (gli utenti Windows avranno già sgranato gli occhietti…) e ciascuno di essi può collegarsi più di una volta in un qualsiasi momento.

L’utente root è un tipo di utente speciale perché dispone del controllo completo del sistema e può quindi accedere a tutti i file di sistema.

Tipicamente nel file /etc/passwd si trova una riga relativa utente root che potrebbe essere come questa:

root:c1eGvhy6783:0:0:root:/root:/bin/bash

L’utente root dispone dell’ID 0, significa che ha i massimi privilegi sul sistema Linux. Qualsiasi utente con userid uguale a zero è un utente di amministrazione (root) anche se il suo nome non è “root”. Generalmente gli utenti normali dispongono di un accesso ristretto ai file, pertanto non possono eseguire alcune funzioni a livello di sistema.

Gli utenti di sistema, invece, sono quelli che non si “connettono” al sistema, ma esistono per scopi particolari e non sono di proprietà di un utente specifico, come per esempio gli utenti nobody e lp. Il primo è generalmente quello che gestisce le richieste HTTP mentre il secondo è quello tipico del servizio di stampa.

Un aspetto della sicurezza nei sistemi Linux è costituito dai controlli sugli utenti. Le autorizzazioni sui file Linux sono un meccanismo che consente di restringere l’accesso di un utente a determinati file o directory.

Per un file, in generale, si può specificare l’accesso in lettura, in scrittura e l’esecuzione. Analogamente per le directory. Impartendo il comando:

ls -l

si ottiene l’informazione sui permessi del file; questa è rappresentata dalla combinazione di lettere “r”, “w” e “x” a partire da sinistra.

In Linux le directory sono file speciali, che contengono elenchi di file.

Le informazioni si leggono dividendo in quattro parti questo gruppo di lettere. Il primo simbolo, di solito un “-” (segno “meno”) indica il tipo di file. Se si tratta di una directory, ad esempio, esso sarà una “d” (“l” per un collegamento e “s” per un socket).

Il primo gruppo di tre lettere indica i permessi dell’utente proprietario di quel file, il secondo gruppo di tre lettere è relativo ai permessi del gruppo a cui appartiene quell’utente e il terzo gruppo di lettere riguarda i permessi che hanno tutti gli altri utenti (non appartenenti al gruppo dell’utente proprietario).

Ricapitolando:

  • r indica il permesso in lettura
  • w il permesso in scrittura
  • e x il permesso di esecuzione

continua…

crontab


Per avviare il programma occorre digitare in una finestra terminale:

crontab -e

Ora è possibile inserire i comandi di cui si vuole pianificare l’azione

00 05 04 12 01 "comando"

Cosa significa?

  • 00 sono i minuti
  • 05 è l’ora di esecuzione (quindi avremo l’esecuzione (programmata per le 05.00 del mattino)
  • 04 è il giorno
  • 12 è il mese
  • 01 è il giorno della settimana (i valori sono 0,1,2,3,4,5 e 6 con lo 0 che si riferisce alla Domenica)
  • e poi viene indicato il comando da eseguire

Quindi in questo esempio, quindi, si sta dicendo a crontab di eseguire il lunedì 4 dicembre alle ore 05.00 (di ogni anno), un certo comando.

Se si vuole impartire l’esecuzione del comando ogni mese oppure ogni giorno è sufficiente sostituire ai numeri un asterisco

00 08 * * 01 "comando

È utile ricordare alcune opzioni del crontab

  • crontab -l visualizzerà i crontab in funzione (utile per vedere se un comando è stato registrato correttamente)
  • crontab -r rimuove tutti i crontab registrati
  • crontab -d da non fare mai perché questo comando cancella i job programmati (anche del sistema)
  • crontab -e permette di editare (scrivere o modificare) un crontab

cron si può configurare tramite il file crontab, come abbiamo visto ne esiste uno per ogni utente, con il quale può eseguire comandi su file di sua proprietà nel proprio user-space, ed è situato solitamente in /var/spool/cron/crontabs/nomeutente.

Per completezza, sappiate che esiste poi il file /etc/crontab nel quale sono presenti solitamente operazioni periodiche che riguardano globalmente il sistema. Di solito molte distribuzioni includono le directory /etc/cron.daily, /etc/cron.monthly, /etc/cron.weekly, /etc/cron.hourly che contegono gli script che si avvieranno rispettivamente ogni giorno, ogni mese, ogni settimana e ogni ora.

Quindi basta posizionare i propri script dentro queste directory per programmarne l’esecuzione.

Sincronizzare l’orologio di sistema


Il Network Time Protocol, in sigla NTP, è un protocollo per sincronizzare gli orologi dei computer all’interno di una rete a commutazione di pacchetto, quindi con tempi di latenza variabili ed inaffidabili.

L’NTP è un protocollo client-server appartenente al livello applicativo. Per sincronizzare manualmente l’orologio di sistema con quello di un server, da console, in modalità root, si dia il comando

ntpdate ntp1.ien.it

oppure

ntpdate ntp.ubuntu.com pool.ntp.org

Utenti e permessi in Linux


Il file /etc/passwd contiene le informazioni relative a tutti gli utenti di un sistema Linux. Ciascuna riga corrisponde ad un utente, nell’ordine, da sinistra verso destra:

  • nome dell’utente (username)
  • password crittografata
  • identificatore utente (userid)
  • identificatore di gruppo (groupid)
  • commento, che di solito è il nome dell’utente
  • directory “home”, cioè quella assegnata all’utente per
  • memorizzare i file personali
  • la shell predefinita quando l’utente si collega

Poiché Linux è un sistema operativo multiutente, più utenti possono essere collegati a un sistema contemporaneamente (gli utenti Windows avranno già sgranato gli occhietti…) e ciascuno di essi può collegarsi più di una volta in un qualsiasi momento.

L’utente root è un tipo di utente speciale perché dispone del controllo completo del sistema e può quindi accedere a tutti i file di sistema.

Tipicamente nel file /etc/passwd si trova una riga relativa utente root che potrebbe essere come questa

root:c1eGvhy6783:0:0:root:/root:/bin/bash

L’utente root dispone dell’ID 0, significa che ha i massimi privilegi sul sistema Linux. Qualsiasi utente con userid uguale a zero è un utente di amministrazione (root) anche se il suo nome non è “root”. Generalmente gli utenti normali dispongono di un accesso ristretto ai file, pertanto non possono eseguire alcune funzioni a livello di sistema.

Gli utenti di sistema, invece, sono quelli che non si “connettono” al sistema, ma esistono per scopi particolari e non sono di proprietà di un utente specifico, come per esempio gli utenti nobody e lp. Il primo è generalmente quello che gestisce le richieste HTTP mentre il secondo è quello tipico del servizio di stampa.

Un aspetto della sicurezza nei sistemi Linux è costituito dai controlli sugli utenti. Le autorizzazioni sui file Linux sono un meccanismo che consente di restringere l’accesso di un utente a determinati file o directory.

Per un file, in generale, si può specificare l’accesso in lettura, in scrittura e l’esecuzione. Analogamente per le directory. Impartendo il comando

ls -l

si ottiene l’informazione sui permessi del file.

È rappresentata dalla combinazione di lettere “r”, “w” e “x” a partire da sinistra.

In Linux le directory sono file speciali, che contengono elenchi di file.

Le informazioni si leggono dividendo in quattro parti questo gruppo di lettere. Il primo simbolo, di solito un “-” (segno “meno”) indica il tipo di file. Se si tratta di una directory, ad esempio, esso sarà una “d” (“l” per un collegamento e “s” per un socket).

Il primo gruppo di tre lettere indica i permessi dell’utente proprietario di quel file, il secondo gruppo di tre lettere è relativo ai permessi del gruppo a cui appartiene quell’utente e il terzo gruppo di lettere riguarda i permessi che hanno tutti gli altri utenti (non appartenenti al gruppo dell’utente proprietario).

Ricapitolando:

  • r indica il permesso in lettura
  • w il permesso in scrittura
  • e x il permesso di esecuzione