GNU/Linux >> Linux Esercitazione >  >> Linux

Amministratori di sistema Linux:comprendi il potere di ncat di evitare rischi per la sicurezza accidentali

Il ncat comando fa parte della suite nmap ed è stato scritto appositamente per esso. È vero che ncat ha tanti usi quanto il famoso coltellino svizzero, ma può essere altrettanto pericoloso se usato in modo errato o se usato da attori malintenzionati. Uno dei suoi punti di forza è che ncat può essere sia client che server. Questo articolo si concentra su un aspetto di quella relazione. Ti mostro come aprire una shell bash in ascolto con ncat a cui chiunque può accedere con ncat come cliente. Nel mio articolo, Risoluzione dei problemi di Linux:configurazione di un listener TCP con ncat, descrivo come configurare ncat come listener o server in ascolto su una porta specifica. Questo esempio è simile, ma penso che rimarrai colpito dalla potenza assoluta di ncat ti dà. Dovrebbe anche spaventarti, molto.

Installa ncat

Controlla il tuo sistema in /usr/bin prima per vedere se è necessario installare ncat . In genere è incluso in qualsiasi distribuzione basata su Red Hat Enterprise Linux. Se trovi che devi installarlo, il nome del pacchetto è nmap-ncat . Puoi installare ncat da solo o installa nmap e il nmap-ncat il pacchetto viene installato come dipendenza.

Usa ncat

Non emettere ncat comandi come root, specialmente per gli esempi in questo articolo. Ciò consentirà a chiunque di avere l'accesso come root al tuo sistema senza autenticazione. Qualsiasi utente può emettere ncat comandi, che è una delle sue caratteristiche oltre che uno dei suoi pericoli. Ti suggerisco di creare un account di servizio e lavorare con ncat utilizzando quell'account. Credimi, ho sentito ogni argomento a favore e contro gli account di servizio, ma una volta che vedi ncat in azione, ti consigliamo di utilizzare l'account di servizio per le interazioni con esso.

Consegna una shell bash

Questa è la parte divertente (e pericolosa) dell'utilizzo di ncat . Passa l'utente al tuo nuovo account di servizio. Ho chiamato il mio schivo .

[ken@server1 ~] $ su - bashful
Password: 
[bashful@server1 ~] $

Ora che hai cambiato account utente, è ora di aprire quella shell. Dà accesso non autenticato al tuo sistema tramite una shell per lo più interattiva. Vedrai cosa intendo per "principalmente" interattivo una volta che ti connetti. Il prossimo comando usa ncat per eseguire una shell bash in ascolto su una porta TCP. Per questo esempio, sto usando la porta 9922 sul server1 (192.168.1.50). Il -l l'opzione imposta una porta di ascolto. Il -k opzione è un flag keepalive, che mantiene il socket. Se non emetti il ​​-k opzione, il socket si interrompe dopo aver disconnesso la sessione e non è possibile effettuare altre connessioni.

[bashful@server1 ~] $ ncat -e "/bin/bash" -l 9922 -k &

Il -e opzione esegue il comando tra virgolette, che nel nostro caso è la shell bash (/bin/bash ). Uso la e commerciale (& ) dopo il comando per rilasciare il mio prompt e inserire il ncat ascoltatore in modalità background. Se non usi il & , il tuo terminale si "bloccherà" e non ti permetterà di interagire con esso. Se questo non è un problema per te, lascialo così com'è.

Emissione del netstat comando mostra che l'ascoltatore è a posto.

[bashful@server1 ~]$ netstat -an |grep 9922
tcp        0      0 0.0.0.0:9922            0.0.0.0:*               LISTEN     
tcp6       0      0 :::9922                 :::*                    LISTEN     
[bashful@server1 ~]$

Per connetterti alla porta di ascolto da un sistema remoto, devi anche aprire un'eccezione nel firewall basato su host per la porta 9922.

[ken@server1 ~]$ sudo firewall-cmd --add-port=9922/tcp
success

Vedi il failsafe qui? È l'eccezione del firewall che ho dovuto creare usando il mio account e sudo . Se hai un firewall basato su host o IPTables in esecuzione (e faresti meglio a farlo), allora questo servizio non funzionerà finché non consentirai quella porta, il che significa che nessun utente ordinario può farlo funzionare senza accesso amministrativo. Altrimenti, gli utenti istruiti da ncat aprirebbero porte ovunque e ti farebbero impazzire nel processo. Per non parlare dei problemi di sicurezza che avresti. Sto divagando.

Accedi alla shell da un sistema remoto

Ora puoi accedere alla shell bash da un sistema remoto sulla porta 9922.

[ken@server2 ~]$ ncat 192.168.1.50 9922

Da server2 , emetti il ​​ncat comando con l'indirizzo IP di destinazione di server1 e la porta di ascolto 9922. Una volta connesso, non succede nulla, o almeno così potresti credere perché il terminale sembra bloccarsi. Ma quello che sta realmente accadendo è che stai comunicando con il socket grezzo e quindi non vedrai un prompt. Dimostralo emettendo il who comando.

[ken@server2 ~]$ ncat 192.168.1.50 9922
who
ken    pts/0        2020-08-26 13:39 (server2)

Puoi impartire qualsiasi comando desideri a quell'utente schivo ha accesso a. Se emetti un comando che richiede l'accesso come root, probabilmente non vedrai una risposta. Il terminale sembrerà rimanere nello stato "appeso". La tua risposta apparirà effettivamente sul terminale di server1 . Ad esempio, se immetti il ​​seguente comando:

firewall-cmd --list-all

Non vedi nulla su server2 lo schermo. Su server1 schermata di , appare quanto segue:

[bashful@server1 ~]$ Authorization failed.
    Make sure polkit agent is running or run the application as superuser.

Per disconnettersi dal server2 shell clandestina di, emetti Ctrl+C combinazione e il tuo prompt locale ritorna.

Non provarlo al lavoro

Solo per divertimento, o se non mi credi, uccidi l'attuale ncat processo utilizzando il tuo account di servizio o come root. Quindi emettere nuovamente lo stesso comando dell'utente root per eseguire quella shell bash come root. Connettiti di nuovo da un sistema remoto ed emetti nuovamente il comando del firewall. Questa volta vedrai i risultati. Puoi inviare qualsiasi comando come root, motivo per cui non vuoi mai configurare questo tipo di servizio come utente root.

E ora vedi il vero pericolo di usare ncat come radice. Gli attori malintenzionati installeranno una tale shell su una porta clandestina che non è stata rilevata da una scansione delle porte e avranno accesso root completo senza autenticazione.

Concludi

L'utilissimo e potenzialmente molto pericoloso ncat il comando è il tuo migliore amico e il tuo peggior nemico. Come ogni altro strumento nel capannone, non ha intento diverso da quello che gli dai. Dovresti studiare ncat comando, i suoi usi e le sue limitazioni nel tuo ambiente. Ricordati di uccidere qualsiasi ncat processo che non si desidera eseguire continuamente una volta terminato e rimuovere l'eccezione del firewall che ne consente l'accesso. Inoltre, ricorda che con un grande potere deriva la capacità di rovinare davvero le cose.

[ Vuoi testare le tue capacità di amministratore di sistema? Fai una valutazione delle abilità oggi. ]


Linux
  1. Come modificare la porta SSH in Linux

  2. Configurazione dei reindirizzamenti delle porte in Linux con ncat

  3. Amministratori di sistema Linux:comprendi il potere di ncat di evitare rischi per la sicurezza accidentali

  4. Comando Ncat Linux

  5. Controlla l'uso della porta in Linux

Come eseguire il ping di un numero di porta in Linux

Utilizzo di SSH Port Forwarding come strumento di sicurezza in Linux

90 comandi Linux usati frequentemente dagli amministratori di sistema Linux

Apertura di una porta su Linux

Sicurezza Linux vs Windows

5 Best practice per la sicurezza SSH Linux per proteggere i tuoi sistemi