LINUX

Come nascondere la porta dell’applicazione usando knockd in Linux

In qualità di amministratore di sistema, dovremmo fare di tutto per proteggere il nostro server dagli aggressori. Con la crescita di Internet, crescono anche le minacce al nostro server. Uno degli ingressi popolari per attaccare il nostro server è attraverso la porta che si apre sul tuo server. Se il tuo server SSH è in esecuzione sulla tua macchina, di solito la porta SSH è in ascolto. Il che significa che è aperto, in attesa di connessione.

Non è consigliabile lasciare il porto aperto per 24 ore in quanto è vulnerabile. Perché possiamo scansionare la macchina per vedere la porta aperta. nmap è uno dei port scanner più popolari che può essere utilizzato da chiunque per scansionare la tua auto.

nmap

E se potessimo aprire la porta su richiesta e chiuderla quando non è in uso? Sembra interessante. Ora possiamo farlo usando l’app knockd.

Cos’è bussato?

Knockd è un server port-knock. Ascolta tutto il traffico su un’interfaccia ethernet (o PPP), alla ricerca di speciali sequenze di “posizione” di porte. (Fonte: http://www.zeroflux.org/projects/knock)

Come funziona

Ogni applicazione necessita di una porta come “porta” per “ascoltare” le richieste di altri client. Questa porta è solitamente in uno stato aperto o chiuso. Ci sono molte porte disponibili sul server. Ma ci sono alcune porte che hanno concordato per consenso, come SSH (22), Web (80) e FTP (21).

Una regola empirica di base per la sicurezza del server è aprire solo le porte che usi e chiudere il resto. Potresti avere alcune porte che a volte vengono utilizzate e talvolta no. Si sconsiglia di lasciare aperte queste porte quando non sono in uso.

Quando installi knockd, puoi lasciare che il client “colpisca” il server con il pattern. La sequenza di battiti può essere personalizzata da te, quindi questo pattern di battiti sarà unico l’uno per l’altro. Se il modello corrisponde, la porta di cui hai bisogno sarà aperta per un periodo di tempo e la richiesta può entrare nel tuo server.

Una volta che hai finito con l’applicazione, puoi chiudere la porta manualmente o automaticamente.

Come installare knockd

In questo articolo utilizziamo il sistema operativo Zorin 9 basato su Ubuntu 14.04 LTS. Se stai utilizzando una distribuzione diversa, adattala al metodo di installazione della tua distribuzione.

Knockd è disponibile nel repository di Ubuntu. Quindi possiamo usare apt-get per installare knockd.

$ sudo apt-get install knockd

Aspetta qualche minuto, quindi il tuo knockd è già configurato.

installato

Configura knockd

Il file di configurazione di Knock si trova nel file /etc/knockd.conf
La configurazione di esempio è semplice e facile da capire.

configurazione predefinita knockd

Possiamo vedere che la configurazione è divisa in tre sezioni. Il [options] sezione, [openSSH] sezione per aprire la porta SSH e [closeSSH] sezione per chiudere la porta SSH.

Implicitamente [options] la sezione contiene solo 1 riga. Ci dice che il registro knockd verrà registrato utilizzando l’applicazione di registro del sistema operativo. Su Ubuntu, vedremo il login /var/log/syslog; pieghevole.

Ovviamente possiamo scegliere di non utilizzare SysLog. Possiamo cambiarlo in questa riga se vogliamo usare il registro personalizzato.

logfile = /var/log/knockd.log

La riga sopra inserirà il file di registro dei risultati /var/log/knockd.log

[openSSH] section ha comandi identici a [closeSSH] sezione.

sequenza = 1200,1300,1400
Questo è il modello martellante. Attiverà il comando di seguito nella sezione. Il valore di questo parametro è completamente personalizzabile. Possiamo scegliere un altro numero casuale.

seq_timeout = 10
Questo dirà a knockd quanto tempo è necessario per completare lo schema di detonazione.

comando = /sbin/iptables -I INPUT -s %IP% -p tcp –dport 22 -j ACCETTA
Questo parametro aprirà la porta SSH sulla porta 22

tcpflags = sin
Questo parametro indica che il client invierà un pacchetto TCP SYNchronize al server

Configurazione del firewall

Come sappiamo prima, knockd aprirà una porta temporanea. Quindi dobbiamo assicurarci che il firewall sia in esecuzione sul server. Fondamentalmente, chiuderemo tutti i porti. Usiamo la sintassi iptables per fare questo. Ecco i passaggi.

configurazione di iptables

Il primo comando consentirà la sessione corrente in corso attraverso il firewall.
Il secondo comando consentirà al server di essere sottoposto a ping da un’altra macchina.
Il terzo comando rifiuterà tutte le richieste.

Per testare il servizio knockd, ci aspettiamo che il nostro firewall interrompa tutte le connessioni ssh. Quindi knockd lo aprirà temporaneamente su richiesta.

iptables interrompe tutte le connessioni

Prova knockd lato server

Una volta configurati firewall e knockd, possiamo testarli.
Per testare il firewall, prova il server remoto tramite SSH da un’altra macchina. (In questo articolo, l’IP del client è 10.1.6.14 e l’IP del server è 10.0.76.224)

$ ssh -l pungki 10.0.76.224

Insieme a :
esso = nome di accesso
borse = nome utente sul server di destinazione

Se il firewall funziona, otterremo “Connessione rifiutata” messaggio di errore.

Connessione rifiutata

Il motivo per cui riceviamo il messaggio di errore è perché 10.1.6.14 non è consentito sul server. Se usiamo questo comando, non vedremo alcun risultato.

$ sudo /sbin/iptables -L -n |grep 10.1.6.14
iptables prima di battere

Successivamente, vedremo la differenza dopo aver implementato knockd.

Il passaggio successivo consiste nel testare il servizio knockd.

Per eseguire knockd, dobbiamo modificare il file knockd predefinito che si trova in /etc/default/knockd. Cambia il suo valore parametro START_KNOCKD da 0 a 1.

il file di avvio knockd predefinito

Salva il file. Quindi digitare:

$ sudo service knockd start

*nota: ho provato a eseguire il servizio utilizzando /etc/init.d/knockd start ma non si avvia sempre

Testare la digitazione lato client

Sul lato client, abbiamo bisogno di Knock Client per “bussare” al server. Sul lato client, utilizziamo Centos 5.2. Quindi installiamo knock-client da http://pkgs.repoforge.org/knock/knock-0.5.3.el5.rf.i386.rpm

Quindi esegui il comando seguente per colpire il server:

$ knock -v 10.0.76.224 1200 1300 1400
apri il porto

v = verboso
10.0.76.224 = IP del server
1200 1300 1400 = la sequenza di detonazione definita nella configurazione knockd

Dopo aver raggiunto il server, ora vedremo che l’IP del client è ora autorizzato a entrare nel server.

$ sudo /sbin/iptables -L -n |grep 10.1.6.14
iptables dopo aver bussato per aprire la porta

Quindi possiamo eseguire SSH remoto sul server.

ssh successo dopo hit

Come possiamo vedere nell’immagine sopra, i nomi host sono diversi. Dopo aver stabilito SSH sulla macchina remota, il nome host viene modificato da @web01 a @dev-machine.

Chiudi il porto

Dopo che il client ha remoto il server, il client deve chiudere la porta. Per fare ciò, possiamo usare il comando seguente:

$ knock -v 10.0.76.224 1400 1300 1200
tocca per chiudere la porta

Fate attenzioneper chiudere la porta, invertiamo la sequenza dei battiti.

Dopo aver raggiunto il server, vedremo di nuovo un messaggio. Per verificare che il colpo abbia avuto successo, utilizziamo nuovamente il comando iptables. Se ha avuto successo, vedremo che l’IP 10.1.6.14 scomparirà.

iptables dopo aver bussato per chiudere la porta

In quello precedente, dopo aver bussato per aprire la porta, ho visto che l’indirizzo IP del client – 10.1.6.14 – può entrare nel server attraverso il firewall. Ora dopo aver premuto per chiudere la porta, se controlliamo con lo stesso comando iptables, la regola è stata eliminata.

Chiudi automaticamente la porta

Poiché l’attività di chiusura della porta viene attivata dal client, avremo la possibilità che il client si dimentichi di chiudere la porta. Non vogliamo che accada. Quindi possiamo configurare knockd per chiudere automaticamente la porta.

Per farlo, dobbiamo personalizzare file di configurazione knockd. Ecco un esempio di un file di configurazione knockd modificato.

Porta di chiusura automatica

L’ordine sembra ancora identico. La differenza rispetto alla configurazione precedente è che mettiamo [openSSH] sezione e [closeSSH] sezione dello stesso blocco.

Poi aggiungiamo cmd_timeout = 10 linea per informare il server per eseguire stop_command 10 secondi dopo l’esecuzione di start_command. La porta verrà chiusa automaticamente, ma la connessione stabilita rimane connessa.

Conclusione

Knockd ci aiuta a ridurre al minimo il rischio di lasciare sempre aperte tutte le porte. Con knockd, possiamo aprire le porte di cui abbiamo bisogno su richiesta. Per migliorare la sicurezza, dobbiamo conoscere la sequenza di detonazione prima di aprire il portello.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close