Organizzare una rete con Linux
Tutorial Linux – Molti linux-users hanno una configurazione di rete che prvede un pc sempre connesso all’ADSL, ed un gruppo di pc dietro tale computer. Il compito del pc costantemente connesso -che chiameremo gateway da qui in avanti- e’ ovviamente permettere all’intera lan lo sfruttamento dell’ADSL, ed altro ancora.
Tale gateway deve essere adeguatamente protetto dagli attacchi provenienti dalla rete esterna. Molte metodologie sono possibili. Noi analizzeremo tre software, e precisamente
a) portsentry
b) hostsentry
c) logcheck
Tutti e tre i software sono amministrabili tramite webmin oppure tramite files
di configurazione. Installeremo tutti e tre i software, compreso webmin, ma
le nostre attenzioni saranno soprattutto per portsentry.
PREPARAZIONE E DOWNLOAD DEL SOFTWARE
Cominciamo col procurarci un pc, formattiamolo ed installiamo l’impareggiabile
slackware 10.1. Successivamente ci procuriamo i software occorrenti:
webmin lo scarichiamo da:
http://www.webmin.com/download.html
portsentry e logcheck li troviamo all’url:
http://sourceforge.net/projects/sentrytools
hostsentry invece e’ all’url:
http://www.tucows.com/get/51641_31927
per ultimo il modulo webmin per i tre software:
http://linux.3jk.com/mirror/webmin/download/modules/
INSTALLAZIONE:
tutti i pacchetti sono ora nel nostro computer, ipotizziamo in /tmp. Iniziamo con portsentry (diventate root se gia’ non lo siete):
cd /tmp
tar zxvf portsentry-1.2.tar.gz
otteniamo la directory
portsentry_beta
Entriamo in tale directory:
cd portsentry_beta
e leggiamo il file README.install. Ora possiamo lanciare la compilazione con il comando
make linux
…sorpresa !! ecco un bel messaggio di errore !! lo vediamo qui sotto:
claudio@orazio:~/Desktop/portsentry_beta$ make linux
SYSTYPE=linux
Making
cc -O -Wall -DLINUX -DSUPPORT_STEALTH -o ./portsentry ./portsentry.c \
./portsentry_io.c ./portsentry_util.c
portsentry.c:1584:11: missing terminating ” character
portsentry.c: In function `Usage’:
portsentry.c:1585: error: parse error before “sourceforget”
portsentry.c:1585: error: stray ‘\’ in program
portsentry.c:1585:24: missing terminating ” character
make: *** [linux] Error 1
Cosa puo’ essere successo visto che siamo partiti dai sorgenti ed in pratica non abbiamo fatto ancora nulla? Semplicemente abbiamo trovato un errore
nel Makefile! Lo sviluppatore o chi ha testato il software ha commesso una
svista. Correggiamo l’errore aprendo il file portsentry.c alla linea 1585 ed eliminando il rientro a capo sbagliato.
Praticamente la linea 1584 e 1585 devono diventare una linea sola.
Fatto questo possiamo rilanciare il comando
make linux.
E successivamente lanceremo il comando
Make install.
Ora abbiamo portsentry installato nella directory /usr/local/psionic/portsentry/ .
Occupiamoci di logcheck:
cd /tmp
tar zxvf logcheck-1.1.1..tar.gz
cd logcheck-1.1.1
make linux
make install
Anche qui potrebbe capitare un errore, il cui output e’ visibile qui sotto:
root@ludovacca:~/portsentry/logcheck-1.1.1# make install
Making
cc -O -o ./src/logtail ./src/logtail.c
src/logtail.c: In function `main’:
src/logtail.c:51: warning: return type of `main’ is not `int’
Creating temp directory /usr/local/etc/tmp
Setting temp directory permissions
chmod 700 /usr/local/etc/tmp
Copying files
cp ./systems//logcheck.hacking /usr/local/etc
cp: cannot stat `./systems//logcheck.hacking’: No such file or directory
make: *** [install] Error 1
Se cio’ capita (a me e’ successo solo 1 volta) occorre modificare il Makefile, come vedete nella foto 2.
Cosa e’ successo? Direi che la variabile che contiene il path giusto si e’ azzerata, per cui il comando ” cp ” non puo’
funzionare. Effettivamente la cosa e’ strana.
Correggete il path e rilanciate il comando
make install
Ora abbiamo logcheck installato in /usr/local/etc ; sia l’eseguibile sia i files
necessari.
Adesso e’ il turno di hostsentry:
cd /tmp
tar zxvf hostsentry-0.02.tar.gz
cd hostsentry-0.02
make
make install
Hostsentry e’ cosi’ installato nella directory /usr/local/abacus/hostsentry.
Continuiamo le installazioni con webmin:
cd /tmp
tar zxvf webmin-1.220.tar.gz
cd webmin-1.220
./setup.sh
seguite le istruzioni, e quando vi viene chiesto di attivare webmin
all’avvio del pc rispondete di si.
Ci siamo quasi. Ora dobbiamo inserire il modulo che ci consente una gestione
grafica dei tre software: portsentry, hostsentry e logcheck. Apriamo un
browser e nella barra degli indirizzi immettiamo il seguente url:
http://pc_utilizzato:10000
Ovviamente al posto di pc_utilizzato dovrete inserire l’indirizzo ip del computer
utilizzato per le prove. Se tale pc e’ lo stesso ove state lavorando (non siete
quindi in una rete locale) l’url potrebbe essere il seguente:
http://localhost:10000
Si presentera’ la maschera di login, come nella foto qui sotto.
Noi seguiremo il percorso
Webmin configuration
e successivamente
Webmin modules
Indichiamo nel campo di input il path esatto del file sentry.wbm e clicchiamo su
Install modules
Non e’ ancora finita!! Rechiamoci ora sulla sezione
System
Che si trova in alto, sulla sinistra, e poi cerchimo il tasto
Security Sentries
e gustimo il frutto del nostro lavoro: l’aspetto della schermata deve essere come in figura 4
Un clic su
Portsentry Configuration
ci conduce alla schermata di configurazione. Correggete -se occore- il path dell’eseguibile e cominciate gli esperimenti!!
COSA FA’ IL SOFTWARE ?
Non ne abbiamo ancora parlato, occupati ad installare il tutto.
Portsentry e’ un software che vigila sui port-scan a noi diretti. Quando incontra uno di questi port scan , ecco che identifica l’indirizzo ip da cui veniamo osservati, ed inserisce tale indirizzo ip nel file /etc/hosts.deny. Fine della
faccenda. L’ip e’ bloccato e non puo’ piu’ infastidirci. A questo punto fatevi una cultura sui files hosts.deny, host.allow, hosts.equiv e sul loro funzionamento.
Portsentry e’ abbastanza versatile e se lo lanciamo da riga di comando accetta le seguenti opzioni :
-tcp = tramite questo flag ecco che portsentry sorvegliera’ le porte
TCP indicate nel file /usr/local/psionic/portsentry/portsentry.conf
-udp = come sopra, ma con le porte UDP
-stcp = monitorizza le porte TCP indicate nel file di configurazione
utilizzando un socket
-sudp = come sopra ma con le porte UDP
-atcp = (se ho capito bene il file README.install), tramite questa
opzione portsentry legge il file di configurazione, e controlla
gli scan dalla porta 1 fino al tetto indicato. Default = 1024.
Viene consigliato di non oltrepassare tale limite, benche’
sia possibile arrivare a 65535. In pratica tutte le porte
disponibili.
-audp = come sopra ma per UDP
Utilizzando le opzioni -atcp e -audp abbiamo la possibilita’ di inserire nel file /usr/local/psionic/portsentry/portsentry.conf una lista di porte che non saranno sorvegliate. Lo scopo di tale esclusione e’ inpedire dei falsi positivi verso porte il cui utilizzo e’ comune. Esempio posta, ssh, dns ecc.
Se vogliamo che un certo range di ip vengano esclusi dal controllo di portsentry, dobbiamo inserirli nel file portsentry.ignore. Ecco il contenuto di tale file dopo un’installazione standard :
# Put hosts in here you never want blocked. This includes the IP addresses
# of all local interfaces on the protected host (i.e virtual host, mult-home)
# Keep 127.0.0.1 and 0.0.0.0 to keep people from playing games.
#
# PortSentry can support full netmasks for networks as well. Format is:
#
# <IP Address>/<Netmask>
#
# Example:
#
# 192.168.2.0/24
# 192.168.0.0/16
# 192.168.2.1/32
# Etc.
#
# If you don’t supply a netmask it is assumed to be 32 bits.
#
#
127.0.0.1/32
0.0.0.0
Direi che e’ opportuno inserire nel file gli indirizzi della vostra rete locale, altrimenti la prima volta che giocherellate con nmap vi troverete con meta’ del parco pc bloccato.
La foto numero 5 mostra come settare portsentry usando webmin. Si vedono molto chiaramente i concetti qui sopra esposti.
Portsentry opportunamente configurato permette di visualizzare un banner sul pc dell’attaker. Resistere alla tentazione di coprirlo di insulti…
Per fare cio’ dovete toccare il file /usr/local/psionic/portsentry/portsentry.conf , precisamente nelle righe seguenti:
######################
# Port Banner Section#
######################
#
# Enter text in here you want displayed to a person tripping the PortSentry.
# I *don’t* recommend taunting the person as this will aggravate them.
# Leave this commented out to disable the feature
#
# Stealth scan detection modes don’t use this feature
#
#PORT_BANNER=”** UNAUTHORIZED ACCESS PROHIBITED *** YOUR CONNECTION
#ATTEMPT HAS BEEN LOGGED. GO AWAY.”
# EOF
LOGCHECK E HOSTSENTRY
Le nostre attenzioni sono in maggior parte per portsentry, ma anche questi due programmini potranno dare molte soddisfazioni ad un admin attento. Cosa fanno? Hostsentry controlla il file /var/log/wtmp e notifica i login sospetti e gli account strani. Mi spiego meglio: Noi sappiamo che il ragioniere del 3° piano lavora da lunedi’ a venerdi’ dalle 9.00 alle 17.00. Come e’ possibile che si sia
loggato sul server domenica alle 14.00 ? Ovviamente io ho enfatizzato la cosa, ma il succo e’ questo. Non ho guardato molto dettagliatamente hostsentry e logcheck, il lettore dovra’ rimboccarsi le maniche e leggersi (quasi) tutto quello che trova nella directory /usr/local/abacus/hostsentry . Oppure puo’ provare a governare il software utilizzando solo la grafica di webmin. In tal caso lo aspetta qualcosa di simile alla foto successiva
Come possiamo notare un campo attira subito la nostra attenzione: “Users to ignore logins by” . Si tratta di quelle utenze di sistema che potrebbero generare dei falsi positivi. Vanno quindi esclusi dal controllo. Ovviamente cio’ deve essere ponderato dall’admin.
I risultati della compilazione di logcheck sono invece finiti in /usr/local/etc.
E’ qui che bisogna indagare per mettere in moto logcheck. Il suo compito e’ monitorare i files /var/log/messages /var/log/secure
/var/log/maillog .
L’utilizzo corretto di logcheck -come viene indicato in /tmp/logcheck-1.1.1/install e’ metterlo in cron, ed indicare un user come destinatario dei report. Tali report verranno consegnati sotto forma di posta elettronica nella consueta posizione
/var/spool/mail/UTENTE_INDICATO. Possiamo quindi prelevare il tutto anche con un mail-reader qualunque.
HARDWARE DI TEST
Gli esperimenti sono stati condotti su un p2 350, 384 mb ram, hard disk ide 20 gb , 2 schede di rete realtek , lettore cd-rom lite on, scheda video ati rage 4 mb. Il tutto tramire rete locale, senza mai accendere il monitor del pc.