GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come usare Port Knocking su Ubuntu per nascondere la porta SSH

Conoscete tutti questi vecchi film di gangster in cui un ragazzo usa una sequenza di bussare a una porta per entrare? Il port knocking è esattamente questo, solo per il tuo server. La modifica della porta ssh predefinita non garantisce che non verrai violato. Gli hacker spesso utilizzano strumenti per eseguire scansioni automatiche per le porte aperte prima di attaccare un server. Port Knocking è un modo per difenderti dai port scanner., rifiuta l'accesso a una porta protetta finché un client non accede a una  sequenza di altre porte nell'ordine corretto in anticipo.

Installare il port knocking su Ubuntu è facile. In questo articolo ti mostrerò come installare e configurare il port knocking. I passaggi di questo tutorial dovrebbero funzionare anche per Debian 8.

Passaggio 1:assicurati che tutti i pacchetti richiesti siano installati

Tutti i comandi seguenti non devono essere eseguiti come utente root. Non voglio anteporre sudo a tutti i comandi, quindi uso:

sudo su

per diventare utente root. Il primo passo è aggiornare gli elenchi dei pacchetti di Ubuntu:

apt-get update

Quindi installa il server SSH (se non l'hai già installato).

apt-get install openssh-server

Ora installa il software knockd che è il demone che controlla il port knocking.

apt-get install knockd
Get:1 http://security.debian.org wheezy/updates Release.gpg [1,554 B]
Get:2 http://security.debian.org wheezy/updates Release [102 kB]
Get:3 http://security.debian.org wheezy/updates/main amd64 Packages [336 kB]
Hit http://mirrors.digitalocean.com wheezy Release.gpg
Hit http://mirrors.digitalocean.com wheezy Release
Get:4 http://security.debian.org wheezy/updates/main Translation-en [195 kB]
Hit http://mirrors.digitalocean.com wheezy/main amd64 Packages
Hit http://mirrors.digitalocean.com wheezy/main Translation-en
Fetched 635 kB in 1s (358 kB/s)
Reading package lists... Done
[email protected]:~#
[email protected]:~# apt-get install openssh-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
openssh-client
Suggested packages:
ssh-askpass libpam-ssh keychain monkeysphere rssh molly-guard ufw
The following packages will be upgraded:
openssh-client openssh-server
2 upgraded, 0 newly installed, 0 to remove and 32 not upgraded.
Need to get 1,364 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? 

Premi Y e poi invio per continuare.

Dopo aver installato il pacchetto, devi installare il firewall del kernel iptables. Corri:

apt-get install iptables

Passaggio 2: aggiunta di regole a iptables

Innanzitutto, cancelliamo le regole del firewall esistenti e ci assicuriamo che le connessioni in uscita non vengano interrotte.

iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
iptables --policy OUTPUT ACCEPT

Vogliamo assicurarci di consentire tutte le connessioni stabilite e le sessioni in corso attraverso il firewall, altrimenti il ​​firewall bloccherebbe la sessione SSH corrente:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Nota : La regola precedente non ha spazi su entrambi i lati della virgola in STABILITO, CORRELATO.

Quindi usa la seguente regola per bloccare la porta 22 in entrata (SSH):

iptables -A INPUT -p tcp --destination-port 22 -j DROP

Dopo aver stabilito le regole di iptables, puoi automatizzare il processo di ripristino al riavvio con iptables-persistent. Possiamo scaricarlo dal repository predefinito di Ubuntu:

apt-get install iptables-persistent
Current iptables rules can be saved to the configuration file ?
? /etc/iptables/rules.v4. These rules will then be loaded automatically ?
? during system startup. ?
? ?
? Rules are only saved automatically during package installation. See the ?
? manual page of iptables-save(8) for instructions on keeping the rules ?
? file up-to-date. ?
? ?
? Save current IPv4 rules?
Current iptables rules can be saved to the configuration file ?
? /etc/iptables/rules.v6. These rules will then be loaded automatically ?
? during system startup. ?
? ?
? Rules are only saved automatically during package installation. See the ?
? manual page of ip6tables-save(8) for instructions on keeping the rules ?
? file up-to-date. ?
? ?
? Save current IPv6 rules?

Durante l'installazione, il programma ti chiederà di salvare le regole iptables correnti (ipV4 e ipV6), seleziona Sì per entrambi.

Salva il set di regole corrente in un file con il comando iptables-save. Questo file può essere utilizzato da iptables-restore in un secondo momento per ripristinare la stessa configurazione di iptables:

iptables-save
 # Generated by iptables-save v1.4.14 on Tue Feb 23 04:59:28 2016
*filter
:INPUT ACCEPT [1:40]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [17:1976]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
COMMIT
# Completed on Tue Feb 23 04:59:28 2016

Ora rimarrai connesso alla tua connessione esistente mentre bloccherai altre connessioni sulla porta SSH.

Successivamente, dobbiamo configurare knockd.

Per configurare il servizio, dovremo modificare il file di configurazione /etc/knockd.conf. Apri il file con nano:

nano /etc/knockd.conf

Vedrai le sezioni che avranno questo aspetto.

[options]
UseSyslog

[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
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
  • Nella sezione "opzioni", vediamo un nome di direttiva UseSyslog . file di registro è abbastanza ovvio:registra tutti i tentativi di bussare
  • Sotto, abbiamo due sezioni: openSSH e closeSSH. Il primo consentirà al knocker di accedere alla porta 22 (SSH) e il secondo chiuderà la porta quando il knocker è completo.
  • knockd sostituisce automaticamente %IP% con l'indirizzo IP del client che ha inviato il knock, quindi puoi aprire la porta solo al client autorizzato.
sequence = 9000,8000,7000

Ciò significa che questo insieme di regole corrisponderà se lo stesso IP richiede una connessione sulla porta 7000, seguita direttamente dalla porta 8000, seguita infine dalla porta 9000. È altamente consigliabile modificare le porte predefinite e il loro ordine poiché l'ordine predefinito è corretto noto anche agli aggressori.

seq_timeout = 5

L'opzione "seq_timeout" definisce in secondi quanto tempo hai a disposizione per fornire tutti i numeri per il colpo. Questo valore predefinito dovrebbe andare bene e non sarà un problema se stai generando automaticamente i tuoi colpi.

command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

Specificare il comando da eseguire quando un client esegue il port-knock corretto. Tutte le istanze di %IP% verranno sostituite con l'indirizzo IP del knocker.

tcpflags = syn

Presta attenzione ai pacchetti che devono essere utilizzati per impostare questo flag, in questo caso i pacchetti syn. Quando si utilizzano i flag TCP, knockd IGNORA i pacchetti TCP che non corrispondono ai flag.

Ora abilita il knockd. Modifica il file /etc/default/knockd con nano:

nano /etc/default/knockd

e cambia:

START_KNOCKD=0

a

START_KNOCKD=1

dopo questo salva ed esci. Se hai più schede di rete o riscontri problemi che knockd non si avvia automaticamente durante l'avvio del sistema, puoi specificare manualmente l'interfaccia di rete su cui ascoltare rimuovendo i commenti e modificando la seconda riga KNOCKD_OPTS.

Quindi inizia a bussare manualmente:

service knockd start

Questo avvierà il demone e ti consentirà di modificare i set di regole di iptables bussando alle sequenze di porte.

Hai installato i pacchetti richiesti, se sei disconnesso dal tuo server, per riconnetterti devi bussare alle porte che hai definito nella giusta sequenza stabilire una connessione SSH.

Passaggio 3: accedi al server quando knockd è in esecuzione

Se hai seguito i passaggi precedenti, non sarai più in grado di connetterti direttamente al server SSH senza bussare alla porta.

Non dovresti ricevere risposta dal server e il client SSH dovrebbe scadere. Questo perché il nostro demone SSH è attualmente bloccato da iptables. Digita ctrl-C per terminare il tentativo SSH se non scade automaticamente.

Test bussare con un client telnet

Per utenti Linux:installa il pacchetto telnet con apt.

Per utenti Windows:puoi installare il client Telnet accedendo alla sezione "Programmi", cercare "Attiva o disattiva le funzionalità di Windows", da lì abilita il Client Telnet.

Digita il seguente comando nel prompt dei comandi (sostituisci la sequenza di porte con la sequenza personalizzata):

telnet youripaddress 7000
telnet youripaddress 8000
telnet youripaddress 9000

Devi fare tutto questo in 5 secondi perché questo è il limite di tempo imposto per la configurazione. Ora, prova a connetterti al tuo server tramite SSH. Potrai accedere alla connessione.

Esegui i comandi precedenti in ordine inverso per chiudere il server SSH.

telnet youripaddress 9000
telnet youripaddress 8000
telnet youripaddress 7000

La parte migliore del port knocking è che puoi configurarlo insieme all'autenticazione della chiave privata. Se configuri entrambi, virtualmente non c'è alcuna possibilità che qualcuno possa accedere o connettersi fino a quando ea meno che non conosca sia le porte che la chiave privata.


Ubuntu
  1. Come consentire all'utente di utilizzare sudo in Ubuntu Linux

  2. Come usare il comando tail in Ubuntu Linux

  3. Come usare il comando string in Ubuntu

  4. Come usare il comando netplan su Ubuntu

  5. Come utilizzare un task manager in Ubuntu per monitorare il sistema

Come installare e utilizzare il comando Exa su Ubuntu 20.04

Come installare il server OpenSSH su Ubuntu 20.04 LTS

Come modificare la porta SSH in Ubuntu

Come utilizzare Port Knocking per proteggere il servizio SSH in Linux

Come modificare la porta SSH in CentOS

Come cambiare la porta SSH su Ubuntu?