Come saprai dai miei due articoli precedenti, Risoluzione dei problemi di Linux:configurazione di un listener TCP con ncat e il comando ncat è uno strumento di sicurezza problematico per gli amministratori di sistema Linux, netcat
è un comando che è sia il tuo migliore amico che il tuo peggior nemico. E questo articolo perpetua ulteriormente questo fatto con uno sguardo a come ncat
offre un'opzione utile, ma potenzialmente pericolosa, per la creazione di un collegamento di reindirizzamento della porta. Ti mostro come impostare una porta o un link di inoltro del sito in modo da poter eseguire la manutenzione su un sito pur continuando a servire i clienti.
Lo scenario
Devi eseguire la manutenzione su un'installazione di Apache su server1 , ma non vuoi che il servizio appaia offline per i tuoi clienti, che in questo scenario sono utenti aziendali interni del portale del lavoro che registra le ore lavorate per i tuoi utenti remoti. Invece di notificare loro che il portale sarà offline da sei a otto ore, hai deciso di creare un servizio di inoltro a un altro sistema, server2 , mentre ti occupi del server1 esigenze di.
Questo metodo è un modo semplice per mantenere attivo un servizio specifico senza armeggiare con le impostazioni NAT del DNS o del firewall aziendale.
Server1:Porta 8088
Server2:Porta 80
I passaggi
Per impostare questo sito/servizio in avanti, devi soddisfare i seguenti prerequisiti:
ncat-nmap
pacchetto (dovrebbe essere installato per impostazione predefinita)- Un duplicato funzionale del server1 portale su server2
- Root o
sudo
accesso ai server 1 e 2 per modifiche al firewall
Se hai superato questi ostacoli, è ora di fare in modo che questo cambiamento avvenga.
L'attuazione
Configurazione di ncat
in questo modo fa uso di named pipe, che è un modo efficiente per creare questo collegamento di comunicazione bidirezionale scrivendo e leggendo da un file nella tua home directory. Esistono diversi modi per farlo, ma userò quello che funziona meglio per questo tipo di port forwarding.
Crea la pipe con nome
Creare la named pipe è facile usando mkfifo
comando.
$ mkfifo svr1_to_svr2
$ file svr1_to_svr2
svr1_to_svr2: fifo (named pipe)
Ho usato il file
comando per dimostrare che il file è presente ed è una pipe denominata. Questo comando non è necessario per il funzionamento del servizio. Ho chiamato il file svr1_to_svr2
, ma puoi usare qualsiasi nome tu voglia. Ho scelto questo nome perché sto inoltrando da server1 al server2 .
Crea il servizio di inoltro
Formalmente, questo si chiamava impostazione di un inoltro Listener-to-Client , ma ha più senso se ci pensi in termini di firewall, da cui il mio nome e la mia descrizione "avanti".
$ ncat -k -l 8088 < svr1_to_svr2 | ncat 192.168.1.60 80 > svr1_to_svr2 &
L'esecuzione di questo comando ti riporta al prompt perché hai messo il servizio in background con &
. Come puoi vedere, la named pipe e il servizio sono entrambi creati come utente standard. Ho discusso le ragioni di questa restrizione nel mio precedente articolo, Il comando ncat è uno strumento di sicurezza problematico per gli amministratori di sistema Linux.
Ripartizione dei comandi
La prima parte del comando, ncat -k -l 8088
, imposta il listener per le connessioni che normalmente riceverebbero risposta dal servizio Apache su server1 . Quel servizio è offline, quindi crei un listener per rispondere a tali richieste. Il -k
l'opzione è la funzione keep-alive, il che significa che può servire più richieste. Il -l
è l'opzione di ascolto. Port 8088
è la porta che vuoi imitare, che è quella del portale clienti.
La seconda parte, a destra dell'operatore pipe (|
), accetta e inoltra le richieste a 192.168.1.60 sulla porta 80. La named pipe (svr1_to_svr2
) gestisce i dati in entrata e in uscita.
L'utilizzo
Ora che hai impostato il relè, è facile da usare. Punta il browser all'host originale e al portale del cliente, che è http://server1:8088
. Questo reindirizza automaticamente il tuo browser al server2 sulla porta 80. Il tuo browser mostra ancora l'URL e la porta originali.
Ho riscontrato che troppe richieste ripetitive possono causare il fallimento di questo servizio con un messaggio di pipe interrotta su server1 . Questo non sempre uccide il servizio, ma può. Il mio suggerimento è di impostare uno script per controllare l'forward
comando e, se non esiste, riavviarlo. Non puoi verificare l'esistenza di svr1_to_svr2
file perché esiste sempre. Ricorda, l'hai creato con mkfifo
comando.
L'avvertenza
Lo svantaggio di questo ncat
la capacità è che un utente può inoltrare il traffico al proprio sito duplicato e raccogliere nomi utente e password. L'attore malintenzionato dovrebbe uccidere l'attuale port listener/servizio Web per farlo funzionare, ma è possibile farlo anche senza l'accesso come root. Gli amministratori di sistema devono mantenere la vigilanza attraverso il monitoraggio e gli avvisi per evitare questo tipo di scappatoia di sicurezza.
La conclusione
Il ncat
comando ha così tanti usi che richiede un articolo per caratteristica per descriverli. Questo articolo ti ha introdotto al concetto di inoltro da listener a client, o inoltro del servizio, come lo chiamo io. È utile per brevi periodi di manutenzione, ma non dovrebbe essere utilizzato per reindirizzamenti permanenti. Per quelli, dovresti modificare le regole NAT del DNS e del firewall aziendale per inviare le richieste alle loro nuove destinazioni. Dovresti ricordarti di disattivare qualsiasi ncat
ascoltatori quando hai finito con loro in quanto aprono un sistema al compromesso. Non creare mai questi servizi con l'account utente root.
[ Rendi la gestione della tua rete più semplice che mai con Automazione della rete per tutti, un libro gratuito di Red Hat. ]