Esistono svariati consigli per rendere complicato e virtualmente impossibile un attacco informatico per guadagnare diritti di root su un server o su un sistema pubblico su Internet.
Alcuni consigli generali.
Impostare una password "robusta":
minimo 12 caratteri alfanumerici maiuscoli e minuscoli
minimo un carattere speciale ($%&£ eccetera)
minimo un numero
Impostare un firewall:
vedere i link nella mia firma
Eliminare ogni servizio inutile
Oltre questi suggerimenti, analizzeremo alcune tecniche avanzate di protezione. Una di queste è il "Port Knocking". Vediamolo nel dettaglio.
In informatica, il port knocking è un sistema per aprire delle porte su un firewall dall'esterno inviando tentativi di connessione ad una sequenza prestabilita di porte chiuse; una volta che ciò sia stato fatto le regole del firewall vengono aggiornate dinamicamente per consentire all'host che ha inviato la giusta sequenza di connettersi alla porta voluta.
Questo scopo viene ottenuto principalmente impiegando un demone che controlli continuamente i log del firewall in cerca della sequenza corretta e in tal caso ne modifichi la configurazione, ma si può usare anche uno sniffer che esamini direttamente i pacchetti ricevuti, usando in questo caso delle porte già aperte su cui ricevere la bussata. L'utente invece utilizzerà un piccolo programma, che può essere un semplice script netcat o un ping modificato sino ad un generatore di hash, da lanciare prima della normale connessione alla macchina di destinazione.
Il port knocking viene frequentemente impiegato per consentire l'accesso sulla porta TCP 22, usata da SSH, in quanto questo servizio è spesso l'obiettivo di attacchi a forza bruta in seguito a port scan. La bussata è analoga ad una stretta di mano segreta e può consistere in qualsiasi quantità di pacchetti TCP, UDP, ICMP diretti a porte numerate sulla macchina di destinazione. La complessità della bussata può variare da una semplice lista di porte da contattare sequenzialmente ad uno schema temporizzato che discrimini l'indirizzo IP e impieghi tecniche crittografiche.
Molte implementazioni sono vere e proprie macchine a stati che consentono di non rivelare alcuna informazione circa lo stato attuale, in altre parole se la parte iniziale della bussata è stata ricevuta correttamente, mentre quella finale no, l'utente non ha nessun modo di saperlo in quanto l'unico effetto osservabile è l'eventuale apertura della porta a cui si vuole connettere quando la sequenza inviata è corretta.
(Tratto da Wikipedia: [url=http://"http://it.wikipedia.org/wiki/Port_knocking"]http://it.wikipedia.org/wiki/Port_knocking[/url] )
[ Descrizione del progetto ]
Il progetto PortKnocking è composto da due parti: un modulo iptables (user space) e un modulo netfilter (kernel space). Il primo è un'estensione di iptables e l'altro di netfilter.The PortKnockO Project is composed of two parts: an iptables module (user space) and a netfilter module (kernel space). The first one is an iptables extension, and the other one is a netfilter extension.
Both modules are used to implement Port Knocking, a stealthy system for network authentication across closed ports. For instance, this can be used to avoid brute force attacks to ssh or ftp services.
Ambo i moduli sono usati per implementare il "Port Knocking", un sistema "sthealt" per l'autenticazione via network attraverso porte chiuse (dal firewall). Per esempio, questo può essere usato per eliminare attacchi brute force al servizio ssh o ftp.
[ Installazione ]
Anonymous SVN Access via SVN:
Codice: Seleziona tutto
svn checkout svn://svn.berlios.de/portknocko/trunk
Codice: Seleziona tutto
# cd portknocko
# ~/portknocko/cd iptables
# ~/portknocko/iptables/make clean
# ~/portknocko/iptables/make
# ~/portknocko/iptables/make install
# cd ../kernel
# ~/portknocko/kernel/make clean
# ~/portknocko/kernel/make
# ~/portknocko/kernel/make install
# depmod -Ae
Potrebbero mancarvi delle dipendenze...se non riuscite a compilare correttamente i moduli, potete provare installando o aggiornando i seguenti pacchetti (uno alla volta, finchè riuscite a compilare):
- iptables (versione 1.4)
- iptables-dev (versione 1.4)
- linux (ultima disponibile)
- linux-source (ultima disponibile)
- linux-headers (ultima disponibile)
- kernel-source (ultima versione disponibile per la vostra versione)
ATTENZIONE: Se dovete arrivare fino all'installazione dei sorgenti del Kernel, dovete anche compilarli (ma non installarli!!). Seguite le procedure specifiche per la vostra distribuzione!
Per installare correttamente il tutto dovete aggiornare all'ultima versione iptables, oppure cercare una versione di PortKnocking più "vecchia" (in base alla versione di iptables che avete installata).
Fatta la compilazione non resta che "abilitare" il sistema di PortKnocking:
Codice: Seleziona tutto
# iptables -P INPUT DROP
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A INPUT -p tcp -m state --state NEW
-m pknock --knockports 2002,2001,2004 --name SSH
-m tcp --dport 22 -j ACCEPT
Codice: Seleziona tutto
$ telnet yourserver 2002 # first knock
$ telnet yourserver 2001
$ telnet yourserver 2004 # last knock
$ ssh user@yourserver
Codice: Seleziona tutto
[--time seconds] -> max time between knocks.
[--strict] -> if the peer fails one knock during the
sequence, it must start over.
Quella spiegata fin'ora è la via a "una regola"...ne esistono altre e potete anche usare un sistema "multiplo", ma questo è lasciato alla vostra esperienza e competenza.
Per una descrizione completa (in inglese) vi rimando al sito ufficiale
[url=http://"http://developer.berlios.de/project/showfiles.php?group_id=7093"]http://developer.berlios.de/project/sho ... up_id=7093[/url]
Buone "bussate"