Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> networking >> Voice Over IP >> .

Script Shell per generare che ascolta una porta su Internet?

Un semplice script di shell non può ascoltare una porta su Internet. Gli script shell sono per il controllo dell'esecuzione dei comandi; Non hanno le funzionalità di rete integrate per gestire le connessioni in arrivo. È necessario un programma di server di rete (come `netcat`,` soct` o un server Web dedicato come Apache o Nginx) per questo. Lo script shell verrà solo * avviato * e forse * gestirà * il processo del server.

Ecco alcuni esempi, ognuno con importanti considerazioni sulla sicurezza:

Esempio 1:utilizzando netcat (altamente insicuro per l'uso della produzione)

Questo esempio utilizza `netcat` per ascoltare una porta. non lo usi in un ambiente di produzione senza significativi miglioramenti della sicurezza. Netcat offre una sicurezza minima ed è facilmente vulnerabile agli attacchi.

`` `Bash

#!/bin/bash

porta =8080

Echo "Ascoltare sulla porta $ port ..."

nc -lvp $ port

`` `

* `nc -lvp $ port` :Questo è il comando principale.

* `-l`:ascolta le connessioni in arrivo.

* `-v`:modalità verbosa (mostra i dettagli della connessione).

* `-p $ Port`:specifica il numero di porta.

per renderlo leggermente più sicuro (ma ancora non pronto per la produzione): È possibile aggiungere una regola del firewall per consentire solo connessioni da specifici indirizzi IP. Tuttavia, anche questo è inadeguato per una soluzione robusta.

Esempio 2:usando SOCAT (leggermente migliore, ma ha ancora bisogno di più sicurezza)

`SOCAT` è un'utilità più versatile della riga di comando di` netcat`, consentendo più opzioni di configurazione. Ancora una volta, non è adatto alla produzione senza significativi miglioramenti di sicurezza.

`` `Bash

#!/bin/bash

porta =8080

Echo "Ascoltare sulla porta $ port ..."

SOCAT TCP-Listen:$ Port, Fork Exec:Connection "Echo" ricevuto! "'

`` `

* `SOCAT TCP-Listen:$ Port, Fork Exec:'Echo" Connection ricevuta! "'`:questo ascolta sulla porta specificata e falsi un nuovo processo per ciascuna connessione. La connessione `Exec:'Echo" ricevuta! "'` È un semplice comando eseguito per ogni connessione. Sostituisci questo con la gestione dei comandi desiderata.

Importanti considerazioni sulla sicurezza:

* Firewall: È necessario configurare il tuo firewall (ad esempio, `iptables` su Linux) per consentire solo connessioni alla porta specificata da indirizzi IP o reti attendibili. Altrimenti, il tuo server sarà aperto agli attacchi di chiunque su Internet.

* Autenticazione e autorizzazione: Questi esempi mancano di autenticazione o autorizzazione. Chiunque può connettersi. Per qualsiasi cosa oltre a semplici test, sono necessari meccanismi di autenticazione adeguati (ad es. Protezione con password, crittografia SSL/TLS).

* Convalida input: Se il server elabora qualsiasi input dai client, è necessario convalidarlo accuratamente per prevenire gli attacchi di iniezione (come l'iniezione di comandi o l'iniezione SQL).

* Gestione degli errori: Gli script mancano di una robusta gestione degli errori. Gli script pronti per la produzione devono gestire errori con grazia.

* Gestione del processo: Prendi in considerazione l'utilizzo di un supervisore di processo (come SystemD o Supervisord) per gestire il processo del server e assicurarti che si riavvia automaticamente se si blocca.

Per gli ambienti di produzione: Utilizzare un solido server Web come Apache o NGINX con appropriate configurazioni di sicurezza (SSL/TLS, autenticazione, firewall, convalida di input, ecc.). Questi server sono progettati per un funzionamento sicuro e affidabile. Questi esempi sono solo a scopo educativo e non dovrebbero essere utilizzati in produzione senza miglioramenti significativi della loro sicurezza.

 

networking © www.354353.com