• Meetings e Workshop
    l'associazione organizza workshop e meeting periodici

  • HowTo e manuali
    come costruire da te gadget elettronici e come programmarli

  • Hacking della PS3
    howto su come installare linux ed effettuare altri hack

  • Una comunità organizzata
    entra a far parte di una associazione organizzata e attiva

  • Strumenti di supporto
    per mantenersi in contatto e favorire la cooperazione

intermediate - Port Knocking ... bussa è ti sarà aperto! PDF Stampa E-mail
Scritto da Andrea Crisafulli - Xanio   
Andrea Crisafulli - Xanio

Tantissime volte mi trovo la necessità a dover esporre un servizio su internet, ma sopratutto quando il servizio non ha la necessità che sia reperibile h24, o per semplice paranoia, che fare?

Ecco che in aiuto viene il servizio Port Knocking!

Per tutte le informazioni in merito al progetto vi rimando al sito principale www.portknocking.org dove trovate tutte le informazioni necessarie, qui prenderò in esame un’installazione base su un sistema Debian Gnu/Linux e analisi di un solo servizio, sshd.

Tipologia di utilizzo di port knocking

La cosa che dobbiamo tenere in considerazione è che port knocking può lavorare in 3 modi principali, che dobbiamo scegliere in fare si configurazione:

 

  • mappatura porta fissa;
  • mappatura porta dinamica;
  • mappatura porta con crittografia;

 

Mappatura porta fissa

Con questa configurazione si ha l’utilizzo più semplice,  mando una sequenza di bussate a determinate porte (scelte da me in configurazione) e viene aperta la porta associata.

Questo configurazione è semplice da implementare, ma per ogni servizio/porta che voglio aprire sono costretto a creare una relativa regola e gestione di sequenze.

PRO: facile da configurare;

CONTRO: ogni porta che voglio abilitare necessita una sequenza / configurazione dedicata

Mappatura porta dinamica;

Con questa configurazione abbiamo la possibilità di impostare una regola universale per gestire l’aperta dinamica di diverse porte, ovvero decido di utilizzare un range di poter da bussare e la loro sequenza mi permette di aprire la porta da me indicata nella sequenza, attraverso un checksum finale.

Per esempio supponiamo di utilizzare le porte da 100 e 109, potremmo avere una configurazione del tipo:

102,100,110 header
10a,10b,10c,10d payload
10(a+b+c+d mod 10) checksum
110,100,102 footer

Le prime e le ultime tre porte vengono “bussate” dal frammento iniziale e finale della sequenza, gli altri quattro frammenti devono corrispondere alla sequenza (abcd mod 10) per essere accettati.

L’elemento finale della sequenza è il checksum che convalida la sequenza,

esempio:

Connessione alla porta 143;

Quindi;

Knocking alle porte 100, 101, 104, 103;

Il checksum è 108 = 10(100 + 101 + 104 + 103 mod 10)

Quando questa sequenza viene rilevata, possiamo avere accesso alla porta 143. Se questa è già aperta, verrebbe chiusa.

PRO: possibilità di poter gestire più porte con una sola regola di configurazione

CONTRO: la configurazione e la gestione della sequenza è molto + complessa

Mappatura porta con crittografia

La configurazione è molto simili alla mappatura dinamica, con la sola eccezione che il checksum finale viene crittografato.

PRO: possibilità di poter gestire più porte con una sola regola di configurazione con crittografia finale

CONTRO: la configurazione e la gestione della sequenza è molto + complessa

 

Installazione Servizio

Prendendo in esame una distro Debian Gnu/Linux basterà digitare:

apt-get install knockd

l’installazione deve essere fatta sia lato server che lato client, in quando il package contiene anche il client, e non abbiamo necessità di preoccuparci in quando il demone non parte di default, ma deve essere attivato da file di configurazione.

Configurazione lato server

La configurazione lato server è molto semplice, consideriamo il caso di configurazione con mappatura fissa e che vorremmo gestire la porta 22 del demone SSHD, e che la nostra sequenza di bussata è composta da 3 porte (7000 – 8000 – 9000) da interrogare con pacchetto TCP entro 5 secondi, mentre la sequenza inversa si occupa di chiudere la porta

Attiviamo il servizio port knocking

Modificare il file

 

vim /etc/default/knock

 

Settare a 1 la variabile START_KNOCKD, abilitare l’interfaccia di ascolto su cui deve stare in ascolto il servizio, nel mio caso eth0

 

START_KNOCKD=1 # 1 attiva e 0 disattiva il demone all'avvio
KNOCKD_OPTS="-i eth0" #mette in ascolto il demone sull'interfacci eth0

 

adesso ci occupiamo del file di configurazione per la gestione della porta 22 per il servizio SSHD, editiamo il file /etc/knockd.confe aggiungiamo:

 

[options]
logfile = /var/log/knockd.log
[openSSHD]
sequence    = 7000,8000,9000
seq_timeout = 5
command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags    = syn
[closeSSHD]
sequence    = 9000,8000,7000
seq_timeout = 5
command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags    = syn
[blockSSHD]
sequence    = 9000,7000,8000
seq_timeout = 5
command     = /sbin/iptables -A INPUT -s %IP% -j DROP
tcpflags    = syn

 

adesso riavviamo il servizio, et voila, tutto configurato, controllando con un port scanning noteremo che la porta 22 è chiusa, quindi avviamo la seguenza dal nostro client e vediamo cosa cambia:

 

knock HOST_SERVER 7000 8000 9000

 

se rifacciamo un port scanning sul nostro server noteremo che la porta 22 adesso è aperta, ma attenzione SOLO PER NOI, o meglio dall’ip pubblico del nostro client!

Adesso saremo ingrado di poterci collegare al nostre server tramite ssh ed effettuare tutto il lavoro che vogliamo, appena finito, basta chiudere la porta

 

knock HOST_SERVER 9000 8000 7000

 

Grazie alle regole blockSSHD sarà possibile impostare una regola iptables che blocca in maniera incondizionata tutte le connessioni al nostro server dall’ IP del nostro client, basta richiamare la sequenza et voila, un port scanning dal nostro client e vedremo tutto CHIUSO.

 

knock HOST_SERVER 9000 7000 8000

 

PS: nel caso in cui dal nostro server vogliamo eliminare la regola iptables di blocco dell’IP basterà digitare:

 

iptables -D INPUT -s IP_BLOCCOATO -j DROP

 

Good Auditing!!

FONTE


 

Commenti  

 
#1 extreme 2011-09-11 12:04 Simpatico come articolo, potrebbe andare bene per soluzioni home made, ma in uso enterprise che cosa potremmo farci? Citazione
 

Aggiungi commento


Codice di sicurezza
Aggiorna


grayhats.org, Powered by Joomla!; Joomla templates by SG web hosting
valid xhtml valid css