GNU/Linux >> Tutoriels Linux >  >> Linux

Examen de plusieurs ports lors de l'exécution de NetCat (nc)

J'utilise -w 1 ci-dessous pour limiter les délais d'attente à 1 seconde. J'utilise aussi -v pour les raisons évoquées dans les commentaires. J'ai utilisé -n refuser les retards pour les recherches DNS inversées...

[[email protected] ~]$ for i in $(echo "172.16.1.1,172.16.1.5"|tr "," "\n"); do echo -e "22\n80\n443\n8080" | xargs -i nc -w 1 -zvn $i {}; done
(UNKNOWN) [172.16.1.1] 22 (ssh) open
(UNKNOWN) [172.16.1.1] 80 (www) : Connection timed out
(UNKNOWN) [172.16.1.1] 443 (https) open
(UNKNOWN) [172.16.1.1] 8080 (http-alt) : Connection timed out
(UNKNOWN) [172.16.1.5] 22 (ssh) open
(UNKNOWN) [172.16.1.5] 80 (www) open
(UNKNOWN) [172.16.1.5] 443 (https) open
(UNKNOWN) [172.16.1.5] 8080 (http-alt) : Connection refused
[[email protected] ~]$

Si vous aimez GNU Parallel autant que moi, essayez ceci :

parallel nc -vz host ::: 22 80 443 8080

Exemple de résultat :

Connection to foo.example.com 22 port [tcp/ssh] succeeded!
nc: connect to foo.example.com port 80 (tcp) failed: Connection refused
nc: connect to foo.example.com port 443 (tcp) failed: Connection refused
nc: connect to foo.example.com port 8080 (tcp) failed: Connection refused

Cette méthode est également plus rapide dans certains cas car elle teste la connexion à des ports en parallèle et non en série. Plus précisément, ce serait là que l'hôte distant (ou le pare-feu intermédiaire) rejette vos paquets pour rester furtif (par opposition à une connexion réussie ou à un rejet forcé).

Astuce : dans la plupart des distributions Linux, vous pouvez installer parallel depuis votre gestionnaire de paquets.

Mise à jour : Avec parallel , cela se généralise très bien pour couvrir un cas souvent nécessaire de plusieurs hôtes x plusieurs ports. L'exemple suivant utilise parallel pour itérer sur le produit croisé, vous n'avez donc pas besoin d'écrire de boucles imbriquées.

parallel nc -vz ::: host1 host2 host3 ::: 22 80 443 8080

Sortie :

Connection to host1 22 port [tcp/ssh] succeeded!
Connection to host1 80 port [tcp/http] succeeded!
Connection to host1 443 port [tcp/https] succeeded!
nc: connect to host1 port 8080 (tcp) failed: Connection refused
Connection to host2 22 port [tcp/ssh] succeeded!
nc: connect to host2 port 80 (tcp) failed: Connection refused
nc: connect to host2 port 443 (tcp) failed: Connection refused
nc: connect to host2 port 8080 (tcp) failed: Connection refused
Connection to host3 22 port [tcp/ssh] succeeded!
nc: connect to host3 port 80 (tcp) failed: Connection refused
nc: connect to host3 port 8080 (tcp) failed: Connection refused
nc: connect to host3 port 443 (tcp) failed: Connection refused

Tout comme l'exemple précédent, parallel exécute les tests de connexion en parallèle. Notez que le parallélisme par défaut est le nombre de threads de votre système, mais peut être remplacé facilement avec le -j passer à n'importe quelle valeur. Vous pourriez facilement vous en sortir avec parallel -j 50 ... ou même plus, car le test des sockets n'est pas une tâche gourmande en CPU.


Linux
  1. Tester les services réseau avec Netcat

  2. Comment ajouter ou supprimer des ports lorsque firewalld est désactivé

  3. Vérifiez quels ports et processus sont en cours d'exécution dans Ubuntu

  4. Meilleures pratiques lors de l'exécution de Node.js avec le port 80 (Ubuntu / Linode)

  5. Connexion refusée à MongoDB errno 111

14 ports réseau courants que vous devez connaître

Comment faire une analyse de port sous Linux

Comment utiliser Netcat pour analyser les ports ouverts sous Linux

.bash_profile n'est pas fourni lors de l'exécution de Su ?

Ouvrir un port sous Linux

Comportement étrange de l'historique bash lors de l'exécution de plusieurs sessions