Un Gateway con Linux

Posted On 21 Gen 2008
Comment: Off

linuxtutorialTutorial 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 metodologia 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.


foto_1



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 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.  


foto_3


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 gustiamo il frutto del nostro lavoro: l’aspetto della schermata deve essere come in figura 4  

 

foto_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.



foto_5



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 



foto_6



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.



foto_7


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.










About the Author

Related Posts