Knockd - come farlo funzionare...

3 risposte [Ultimo messaggio]
Ritratto di axinomantia
axinomantia
(Junior)
Offline
Junior
Iscritto: 09/11/2006
Messaggi: 15

Salv a tutti!!!

(ho cercato nel forum ma mi pare che non ci sia nulla sul port knocking)

ho un opensuse 10.1 che sto configurando come servr WEB.
In a carico di questa poverina c'è anche il servizio di routing poiché, deve redirigire tutte le connessioni sulla porta 3389 (terminal server) verso una macchia con M$ Winzoz 2000 server.

Veniamo al punto: per rendere un po' più sicura la baracca (Ho avuto 2 attacchi che hanno bucato altrettanti server ) ho pensato di installare il demone Knockd per proteggere il suddetto servizio ( e anche ssh)

Ho visto che esiste il provvido pacchetto rpm per suse e ho installato il client knock ed il server knockd

L'installazione con ZEN è filata liscia.

Nel momento in cui ho fatto partire il servizio da Shel Suse mi ha risposto che non esisteva il file knockd nella directory /etc/sysconfig/

Mi sono accorto allora che nel pacchetto c'era in effetti questo file ma veniva messo in una directory come Tamplate.

Ho modificato il tamplate (per otterene qualche output più dettagliato con l'opzione -D) e l'ho piazzato nella dirctory giusta e... Sorpresa!!! tutto funziona!!

ps -e |grep knockd

fa vedere che in effetti il demone sta li nella memoria a fare qualcosa...

in seguito ho anche corretto il comando iptables che viene incluso nel file di configurazione /etc/knockd.conf sostituendo l'opzione -A con -I in modo da non appendere la nuova regola dopo tutte le altre rendendola inutile...

Allaro mi sono detto: <<Ok un ultimo sforzo! facciamo il test per vedere se funziona...>>

Faccio il knock (con la sequenza giusta ovviamente) da un altro computer sempre opensuse e non succede un bel niente.

Niente nel log di knockd e niente nelle iptables!!!!

come se non fosse successo nulla.

Qualche Idea???
Grazie per ogni suggerimento

Andrea

PS nel log del firewall i pacchetti dovuti al knock eseguito dall'altra macchina ci sono, nella sequenza giusta e sulle porte corrette!!!

where each other see providence, I see cause and effect...

Ritratto di axinomantia
axinomantia
(Junior)
Offline
Junior
Iscritto: 09/11/2006
Messaggi: 15

vabbhé

tanto non ci contavo......

Comuque per chi fosse interessato ho trovato un alternativa funzioante che svolge lo stesso lavoro di knocd.

Il trucco è usare uno script trovato su wikipedia alla voce port knocking immerso in un costrutto preso dentro un tempalte del firewall di suse

- scrivere in un file di testo
fw_custom_before_antispoofing() {

iptables -N kc
iptables -N kc1
iptables -N kc2

iptables -I INPUT -m state --state NEW -p tcp --dport 22 -m recent --rcheck --name portKnock --seconds 10 -j kc
iptables -I INPUT -m state --state NEW -p tcp --dport 108 -m recent --name portKnock2 --set -j DROP
iptables -I INPUT -m state --state NEW -p tcp --dport 208 -m recent --rcheck --name portKnock2 --seconds 10 -j kc1
iptables -I INPUT -m state --state NEW -p tcp --dport 308 -m recent --rcheck --name portKnock1 --seconds 10 -j kc2

iptables -I kc -m recent --name portKnock --remove -j ACCEPT

iptables -I kc1 -m recent --name portKnock2 --remove
iptables -I kc1 -m recent --name portKnock1 --set -j DROP

iptables -I kc2 -m recent --name portKnock1 --remove
iptables -I kc2 -m recent --name portKnock --set -j DROP

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 107 -m recent --name portKnock2 --remove -j DROP
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 109 -m recent --name portKnock2 --remove -j DROP
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 207 -m recent --name portKnock1 --remove -j DROP
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 209 -m recent --name portKnock1 --remove -j DROP
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 307 -m recent --name portKnock --remove -j DROP
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 309 -m recent --name portKnock --remove -j DROP

true
}

I comandi iptables sono iseriti in un costrutto interpretato dallo script del firewall di Suse.

E poi il tocco finale: dentro sysconfig di yast:
sistema->Editor per sysconfig->network->firewall->susfirewall2->FW_CUSTOM_RULES
inserire il percorso del file conle regole appena aggiunte!!!!

credo che sia tutto

implementate il port-knocking gente!!! risolve veramente un sacco di problemi...

Andrea

where each other see providence, I see cause and effect...

Ritratto di axinomantia
axinomantia
(Junior)
Offline
Junior
Iscritto: 09/11/2006
Messaggi: 15

Utlimo aggiornamento!!!!
ho fatto funzionare anche knockd.

il bandolo della matassa era:

il file di configurazione /etc/knockd.conf è quello di default fornito dall'autore ma è sbagliato:

per opensuse bisogna cambiare il percorso del comando iptables sa /sbin/ a /usr/sbin/

inoltre, come detto nel primo post occorre copiare il file /usr/adm/fillups_templates/sysconfig_knockd

in /etc/sysconfig/

e poi abilitare il demone a gireare nei runlevel 3 e 5 dentro l'editor dei runlevel di yast (colgo l'occasione pr dire che questo editor è veramente carino.. bravi!)

Ma soprattutto, cosa importantissima!!!!!!!!!!!!!!!!!!!!!
Se il vostro pc ha 2 interfacce di rete, con l'opzione routing abilitata dentro yast, queste due interfacce non possono appartenere alla stessa sottorete altrimenti le regole di iptables non funzionano e anche quando il knock va a buon fine i pacchetti destinati alle porte
giuste vengono scartati!!!!!

in pratica gli script di configurazione di SseFirewall non sono capaci di distinguere il routing due interfacce attaccate alla stessa sottorete (d'altra parte come potrebbero?????).

mi raccomando non fate figuracce con gli amici (come il sottoscritto...)

studiate iptables....

Saluti!!!!

Andrea

where each other see providence, I see cause and effect...

Ritratto di axinomantia
axinomantia
(Junior)
Offline
Junior
Iscritto: 09/11/2006
Messaggi: 15

Aperto e chiuso un bug report con il mantainer di knockd per opensuse

ora il pacchetto è correttamente funzionante...

Saluti!!!

Andrea

where each other see providence, I see cause and effect...