GNU/Linux >> Linux Esercitazione >  >> Debian

Come oscurare le porte di rete con una sequenza di port knocking su Debian 10

Il port knocking è un metodo per aprire dinamicamente le porte di rete "bussando" (cioè connettendo) su una sequenza predefinita di porte. Ciò è particolarmente utile per oscurare una porta di rete aperta dalla scansione delle porte poiché la porta in questione verrà chiusa a meno che non venga eseguita la sequenza di bussare alla porta. Una sequenza di port knocking sufficientemente lunga è praticamente impossibile per la forza bruta:ad esempio, per indovinare con successo (con la forza bruta) una combinazione di 3 porte TCP, un utente malintenzionato dovrebbe provare a bussare a ciascuna delle 281 trilioni di combinazioni possibili e cercare aprire le porte dopo ogni sequenza di battito delle porte. Come probabilmente puoi immaginare, ci vorrebbe molto, molto tempo.

Questa guida ti aiuterà nell'installazione di knockd, un demone flessibile per il port knocking, su Debian 10. A scopo dimostrativo, lo configureremo per oscurare la porta SSH, sebbene qualsiasi altra porta/servizio possa essere protetto con questo approccio.

Requisiti

  • Un server che esegue Debian 10.
  • Accesso root al tuo server.
  • La variabile d'ambiente $EDITOR dovrebbe essere impostata.
  • Un secondo sistema di test.

NOTA:se intendi utilizzare il port knocking per oscurare la porta SSH, assicurati di disporre di un metodo di accesso alternativo (ad esempio tramite console), che sarà utile se ti blocchi accidentalmente.

Prima di installare knockd, controlla il nome dell'interfaccia di rete pubblica del tuo sistema con il seguente comando:

ip link show | grep -v lo
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000

Prendere nota del nome dell'interfaccia (ens18 in questo caso). Sarà necessario in seguito.

Passaggio 1:installazione di Knockd

knockd è un demone che blocca le porte che ascolta le connessioni e apre le porte di conseguenza. Useremo le regole knockd con iptables per implementare il port knocking. Installa i pacchetti richiesti come segue:

apt update
apt install knockd iptables-persistent

Fase 2:configurazione di Knockd

Knockd utilizza un unico file di configurazione, /etc/knockd.conf, per definire sequenze di colpi e altri parametri. Sono disponibili due pratiche modalità di funzionamento. Il primo richiede un'unica sequenza di colpi per aprire e chiudere la porta predefinita, mentre l'altro utilizza sequenze di apertura e chiusura separate. Utilizzeremo il primo in quanto richiede una minore interazione da parte dell'utente.

Innanzitutto, esegui il backup del file di configurazione esistente:

mv /etc/knockd.conf /etc/knockd.conf.bak

In secondo luogo, apri il file di configurazione nel tuo editor di testo:

$EDITOR /etc/knockd.conf

E inserisci la configurazione mostrata di seguito:

(sostituisci ens18 con il nome della tua interfaccia di rete.)

[options]
        UseSyslog
	Interface = ens18
[SSH]
        sequence = 1000,2000,3000
        seq_timeout = 15
        tcpflags = syn
        start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        cmd_timeout = 20

Questo indicherà a knockd di abilitare il traffico verso la porta 22 dopo aver ricevuto la sequenza di bussare corretta (1000.2000.3000 in questo caso), quindi di riattivare il traffico dopo un ritardo di 20 secondi. Le connessioni SSH saranno quindi accettate solo durante questa finestra di 20 secondi.

Quindi, abilita knockd modificando il file /etc/default/knockd:

$EDITOR /etc/default/knockd

E imposta START_KNOCKD su 1:

START_KNOCKD=1

Salva il file ed esci. Modificheremo anche l'unità systemd per knockd. Per fare ciò, crea un nuovo file di unità per sovrascrivere l'impostazione predefinita:

$EDITOR /etc/systemd/system/knockd.service

E incolla quanto segue:

[Unit]
Description=Port-Knock Daemon
After=network.target
Requires=network.target
Documentation=man:knockd(1)
[Service]
EnvironmentFile=-/etc/default/knockd
ExecStartPre=/usr/bin/sleep 1
ExecStart=/usr/sbin/knockd $KNOCKD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
Restart=always
SuccessExitStatus=0 2 15
ProtectSystem=full
CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN
[Install]
WantedBy=multi-user.target

Quindi utilizzare il seguente comando per caricare e abilitare la nuova unità:

systemctl daemon-reload
systemctl enable --now knockd.service

Fase 3:regole del firewall

A questo punto Knockd è pronto, ma tutto il traffico è abilitato per impostazione predefinita attraverso il firewall. Creeremo regole firewall per negare l'accesso alla porta 22/tcp.

I seguenti comandi assicurano che le connessioni esistenti non vengano interrotte.

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Di seguito sono riportate le regole per eliminare le connessioni alla porta 22/tcp:

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

Quindi, salva le catene di regole correnti per la persistenza tra i riavvii:

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

Fase 4:test

Da un sistema diverso, prova ad avviare una nuova sessione SSH sul tuo server. Non dovresti essere in grado di connetterti. Per eseguire la sequenza di colpi, possono essere utilizzati diversi strumenti, anche se dimostreremo con knock, il client di bussare incluso in Knockd. Installa il pacchetto knockd come mostrato nel passaggio 1 su un sistema diverso, quindi esegui i comandi:

knock server_ip_address 1000 2000 3000
ssh [email protected]_ip_address

La connessione SSH ora dovrebbe riuscire.

Configurazione alternativa

Knockd può in alternativa essere configurato per richiedere due sequenze distinte per l'apertura e la chiusura delle porte di rete. Ciò è utile se si desidera mantenere le porte aperte per lunghi periodi di tempo. Per configurare Knockd in questo modo, apri il suo file di configurazione:

$EDITOR /etc/knockd.conf

E sostituisci la configurazione esistente con la seguente:

[options]
        UseSyslog
        Interface = your_interface
[openSSH]
        sequence = 1000,2000,3000
        seq_timeout = 15
        tcpflags = syn
        start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
[closeSSH]
        sequence = 3000,2000,1000
        seq_timeout = 15
        tcpflags = syn
        start_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

Quindi riavvia il servizio per caricare la nuova configurazione:

systemctl restart knockd.service

Conclusione

Knockd può essere una soluzione efficace agli attacchi di forza bruta, che sono molto comuni su SSH e altri servizi. Anche se systemd riavvierà Knockd se fallisce, dovresti sempre avere un metodo di backup per accedere al tuo server se usi il port knocking per nascondere la porta SSH.


Debian
  1. Come configurare un indirizzo IP statico su Debian Linux

  2. Come convertire HTML in PDF con HTMLDoc su Debian 10

  3. Come oscurare le porte di rete con una sequenza di port knocking su Debian 10

  4. Come installare WonderCMS con Nginx su Debian 11

  5. Come proteggere il servizio SSH con Port Knocking

Come installare Gitea con PostgreSQL su Debian 11

Come installare Debian 11 (Bullseye) con schermate

Come configurare LAMP con Debian 11

Come configurare Samba Server con Debian 11

Come installare Itch con Debian 11

Come installare phpMyAdmin con Nginx su Debian 11