LyX Copertina IPISA |
Articoli
La sicurezza di un PC, seppure predisposto con Linux a connessioni esterne, che viene destinato all'uso domestico, e quindi alle 3/4/5/6... ore di collegamento al giorno, di volta in volta con un IP dinamico non richiede generalmente particolare attenzione all'infuori di una saggia scelta delle password e della chiusura di qualche porta inutile; gli attacchi di crakker di cui leggiamo di tanto in tanto sono infatti spesso preceduti da un lungo studio della macchina che diventerebbe impossibile di fronte ad un IP dinamico.
L'idea di questo articolo nasce quindi non da una esigenza specifica, ma semplicemente dal fatto che essendo io un assiduo frequentatore di IRC (#roma) mi capita spesso di avere a che fare con i famosi nukatori (sarebbe forse più appropriato definirli lamer) ed ho cominciato a sentire l'esigenza di monitorare in tempo reale le connessioni che venivano inoltrate al mio PC.
Parlerò dunque inizialmente di come rimediare ad un bug recentemente scoperto (teardrop) del TCP/IP di Linux e successivamente vi mostrerò come con una semplicissima finestrella di dimensioni esigue sia possibile monitorare le connessioni al nostro pc, ed infine come per sommi capi si possono interpretare i segnali di connessione che riceviamo.
Sono stati di recente scoperti due bug potentissimi delle implementazioni del TCP/IP di linux (teardrop) e di win95 (teardrop e land) che possono risultare assai poco simpatici specie per chi tramite IRC rende il proprio IP potenzialmente noto a tutti.
Solamente due parole sul land che è specifico più di windows che
di Linux (ovvero Linux non è vulnerabile) per dire che qualora questo
tipo di attacco fosse fatto ad una macchina win95 ne causerebbe l'immediato
crash con unica soluzione il reset.
Purtroppo non mi risulta ci siano
ancora patch per windows al momento della scrittura di questo articolo.
Differente è il discorso per il teardrop. Questo tipo di bug è stato
fra gli altri riscontrato sia sulle macchine windows che sulle versioni
di Linux con kernel precedente al recente 2.0.32.
Gli effetti sono, nel caso di Linux (a seconda del tipo di macchina),
o un immediato reset del sistema (ovvero ci troviamo di fronte schermo
nero e RAM test in progress..) oppure un blocco, mentre, nel caso di
windows, un blocco del sistema simile a quello causato dal land. Per
il teardrop tuttavia esistono patch sia per Linux che (miracolo a
dirsi) per windows sia con il winsock1 che con il winsock2.
Affronto qui tuttavia esclusivamente il discorso relativo a Linux invitandovi
qualora abbiate necessità di patchare anche win95 a contattarmi via
email.
Per patchare linux affinché non sia vulnerabile a questo tipo di attacco
si possono percorrere 2 strade, ovvero in primo luogo passare al kernel
2.0.32, altrimenti esiste una patch reperibile presso
http://www.linux.org
per le versioni precedenti del kernel.
Funzionano entrambe le soluzioni,
in particolare ho applicato la patch con successo su kernel 2.0.29
e 2.0.31. Sebbene vi siano informazioni dettagliate al riguardo vi
ricordo che la patch si applica copiandola in /usr/src/linux/net/ipv4
e da lì facendo 'patch -l < nomepatch
' e successivamente spostandosi
in /usr/src/linux
occorre fare 'make zlilo
' o 'make zImage
' a seconda dei casi.
Supporrò nel seguito che stiate lavorando in ambiente X Window.
Occorre innanzitutto procurarsi un pacchetto distribuito dalla debian
e reperibile presso
http://www.debian.org/packages.html
che si chiama
iplogger
(io lo ho installato con successo su una Slackware e credo
funzioni anche sulla RedHat) e che una volta decompresso mette a disposizione
sia i sorgenti che i file precompilati.
I file in questione, che supporriò
copiati in /usr/local/sbin
, sono tcplog
e icmplog
.
Una volta installati
i pacchetti dobbiamo fare in modo che vengano avviati e che i loro
risultati siano leggibili; per far ciò andiamo ad editare lo script
di avvio /etc/rc.d/rc.local
come segue :
# echo ``/usr/sbin/icmplog&'' >> /etc/rc.d/rc.local # echo ``/usr/sbin/tcplog &'' >> /etc/rc.d/rc.local
I messaggi prodotti da questi due logger vanno inseriti in /var/log/messages
,
ed è proprio dall'aggiornamento di questo file in tempo reale che
monitoreremo le connessioni al nostro PC.
Basterà mettere in esecuzione, o tramite un menù, o lanciandola manualmente, la seguente riga di comando per avere una finestrella che si aggiorna in tempo reale :
# color_xterm -geometry 80x10 -j -ls -sl 200 -bg black -fg red -T "The LoggeR" -e tail -f /var/log/messages
ovviamente tutte le flag sono suscettibili di variazione a seconda
delle esigenze personali, l'unica accortezza da usare riguarda il
file /var/log/messages
.
Questo file viene installato di default come leggibile solo da root,
e se si intende usare il logger da utente normale occorre eseguire
preventivamente un chmod +r
per farlo leggere a tutti gli utenti;
naturalmente ciò non comporta rischio alcuno per l'HomePc che è
l'argometo di questo articolo.
Adesso siamo pronti finalmente a monitorare le connessioni al nostro PC, vediamo dunque di interpretarle.
Il formato di output dei dati sul file /var/log/messages
risulta estremamente
semplice da interpretare; ogniqualvolta verrà tentata una connessione
ad una porta del nostro PC, tramite il tail -f
verrà aggiornato anche
il file messages che stiamo guardando con una informazione che riguarderà
la porta a cui ci si tenta di collegare e l'host dal quale proviene
la connessione. Vediamo innanzitutto una connessione telnet : (la
mia macchina si chiama gabanaz1)
Nov 27 15:16:55 gabanaz1 tcplog: telnet connection attempt from pinco.pallino.com
questo significa che l'host pinco.pallino.com sta tentando una connessione alla porta telnet del nostro PC... vediamo un ftp:
Nov 27 15:20:01 gabanaz1 tcplog: ftp connection attempt from pinco.pallino.comanche qui l'interpretazione non presenta difficoltà, così come non ne presentano gli altri servizi standard quali pop3 e simili; vediamo un ping:
Nov 27 15:22:01 gabanaz1 icmplog: ping from pico.pallino.comOccorre naturalmente prestare attenzione alle connessioni che vanno al di fuori dello standard, così si avranno ad esempio quando si avvia un ftp una cosa di questo genere perché il sito ftp si sincera preventivamente di chi siamo tramite il nostro identd:
Nov 27 15:20:01 gabanaz1 tcplog: auth connection attempt from ftp.pallino.come spesso riscontreremo l'auth connection quando ci colleghiamo ad un server IRC; per quanto riguarda irc bisogna stare attenti a non maleinterpretare i messaggi che possono arrivarci relativamente a porte non destinate ad un particolare servizio, poiché quando ad esempio si effettua una dcc si utilizza una porta che non è standard e quindi a quello sono dovuti gli strani messaggi del tipo:
Nov 27 15:03:47 gabanaz1 tcplog: port 1025 connection attempt from pinco.pallino.comSempre in ambito irc tramite questo logger siamo in grado di individuare gli ip dei famosi nukatori che utilizzano l'altrettanto famoso OOB alla porta 139 convinti, poverelli, che noi come loro abbiamo bisogno delle finestrelle di windows, e non sapendo che a Linux questo tipo di errore non fa assolutamente nulla; in un caso di questo genere avremmo un output di questo genere :
Nov 27 15:30:27 gabanaz1 tcplog: netbios-ssn connection attempt from sono.sciocchino.it
dopodiché non ci rimane che fare in irc un /who *sono.sciocchino.com*
per sapere chi è lo spiritosone di turno.
Un'ultima nota per ricordarvi che ogniqualvolta aprite un'applicazione
o un terminale virtuale vi loggate al vostro sistema e quindi avrete
una 'connection attempt from localhost
'.
Qualora non utilizziate X Window è comunque possibile monitorare i
log al vostro sistema reindirizzando il tail -f
ad un terminale virtuale,
per es. /dev/tty8
cosicché switchando con ALT+F8 potete comunque vedere
il file /var/log/messages
; per far ciò occorre fare :
# echo "tail -f /var/log/messages >> /dev/tty8 &" >> /etc/rc.d/rc.local
I consigli si ispirano semplicemente al buon senso, così potrebbe
essere utile chiudere dal file /etc/inetd.conf
tutte le porte che
non ci servono come echo, time, finger, discard, chargen, klogin, kshell, netstat
...
in sostanza io sul mio ho aperte esclusivamente ftp, telnet, mail
(25 e 110)
e null'altro, e vi consiglio di fare altrettanto; dopodiché ogniqualvolta
ricevete un tentativo di connessione inatteso, cercate di capire cos'è
e soprattutto per quelli telnet non da voi richiesti guardate il numero
di processo e killateli immediatamente. E poi ovviamente tenetevi
informati sui bug di Linux che sempre tempestivamente vengono coperti
da sapienti programmatori.
LyX Copertina IPISA |