knockd
Configurazione di un sistema di port knocking per i demoni pubblici
Breve introduzione al port knocking:
Il port knocking è una semplice ma al tempo stesso efficace
politica di sicurezza per modificare remotamente, in modo dinamico,
le regole di firewalling di un server.
Configurando un port knocking daemon sul proprio server si
può decidere di rendere accessibile le porte di alcuni demoni
esclusivamente previa una precisa sequenza di pacchetti mandati
dal client al server. Una volta che tale evento si sarà verificato
verrà incaricato il firewall di aprire una o più porte
per l'IP che ha effettuato la richiesta.
Esempio: il knock daemon per aprire la porta di SSH vuole che siano
mandati nell'arco di 10 secondi 4 pacchetti TCP aventi flag SYN
attivo, alle porte 1000,1200,1300,1500, in modo sequenziale. Nel
caso in cui questo evento si verifichi esegue una regola sul firewall
che permette l'accesso all'IP che ha effettuato lo knocking grazie
alla quale l'amministratore potrà accedere al server SSH
(ovviamente dovrà in seguito superare l'autenticazione sullo
stesso).
Terminata la sessione l'amministratore potrà decidere di
ripristinare lo stato precedente recapitando al server una seconda
sequenza differente (es: 2000,2100,2200) che cancellerà la
regola di permesso precedentemente creata riportando il firewall
allo stato originario.
Come demone si è optato per knockd http://www.zeroflux.org/cgi-bin/cvstrac/knock/wiki
una semplice implementazione di port knocking daemon sviluppata
in linguaggio C. Il pacchetto comprende un server (/usr/sbin/knockd)
e un client (/usr/bin/knock) disponibile anche per piattaforme Windows, grazie
al quale si potrà mandare la sequenza di pacchetti.
Obbiettivo:
L'unico demone pubblico configurato nei precedenti how-to risulta
essere SSH. Configurare un sistema di port knocking riferito al
demone SSH grazie al quale l'amministratore potrà avere accesso
remoto al server da Internet.
Installare
knockd:
- server:~# apt-get
install knockd
Lettura della lista dei pacchetti in corso... Fatto
Generazione dell'albero delle dipendenze in corso... Fatto
I seguenti pacchetti NUOVI (NEW) saranno installati:
knockd
0 aggiornati, 1 installati, 0 da rimuovere e 107 non aggiornati.
È necessario prendere 0B/25,4kB di archivi.
Dopo l'estrazione, verranno occupati 172kB di spazio su disco.
Selezionato il pacchetto knockd, che non lo era.
(Lettura del database ... 52444 file e directory attualmente
installati.)
Spacchetto knockd (da .../archives/knockd_0.5-1_i386.deb) ...
Configuro knockd (0.5-1) ...
Starting Port-knock daemon: knockd.
server:/home/billiejoex#
server:~#
Configurazione:
La configurazione è estremamente semplice.Terminata l'installazione
si dovrà dapprima editare il file /etc/default/knockd specificando
l'interfaccia su cui far lavorare il demone:
- server:~# vi /etc/default/knockd
# anything
else = don't start
START_KNOCKD=1
# command line options
KNOCKD_OPTS="-i eth0"
|
...successivamente si imposteranno le regole di
knocking nel file di configurazione principale:
- server:~#
vi /etc/knockd.conf
[options]
# File di log
logfile = /var/log/knockd.log
[openSSH]
# Sequenza
sequence
= 1000,1500,2000,2500
#
sequence = 2222:udp,3333:tcp,4444:udp
# Tempo massimo durante il quale si dovrà inserire
la sequenza di knocking
seq_timeout
= 10
command
= /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
# Flag
tcpflags
= syn
[closeSSH]
sequence
= 9000,8000,7000
seq_timeout =
5
command
= /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags
= syn
|
Riavviare il demone:
- server:~# /etc/init.d/knockd
restart
Restarting Port-knock daemon: knockd.
server:~#
Testare il corretto
funzionamento dal client:
- client:~# knock
-v 10.0.0.1 1000 1500 2000 2500
hitting tcp 10.0.0.1:1000
hitting tcp 10.0.0.1:1500
hitting tcp 10.0.0.1:2000
hitting tcp 10.0.0.1:2500
- client:~# ssh nome_utente_ssh@remote_server.org
user@192.168.1.209's password:
Linux client 2.6.12-9-386 #1 Mon Oct 10 13:14:36 BST 2005 i686
GNU/Linux
Last login: Wed Nov 9 20:50:29 2005
[...]
- ssh_user@server:~$
Argomenti correlati:
Py-Port knock
project (a simple Python port knocking system implementation)
billiejoex
EOF 2006-1-14 10:12 AM
last update 2006-1-14
|