GNU/Linux >> Linux Esercitazione >  >> Linux

Configurazione dei reindirizzamenti delle porte in Linux con ncat

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:

  1. ncat-nmap pacchetto (dovrebbe essere installato per impostazione predefinita)
  2. Un duplicato funzionale del server1 portale su server2
  3. 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. ]


Linux
  1. Comando Tee Linux con esempi

  2. Tutorial sui comandi del servizio Linux per principianti (con esempi)

  3. Comando testa di Linux con esempi

  4. Risoluzione dei problemi di Linux:configurazione di un listener TCP con ncat

  5. Comando JQ in Linux con esempi

Echo Command in Linux con esempi

Comando IP Linux con esempi

Comando Tr in Linux con esempi

15 Comando Linux ps con esempi

Comando CD Linux con esempi

Comando Linux chkconfig con esempi