GNU/Linux >> Tutoriels Linux >  >> Linux

Administrateurs système Linux :Comprendre la puissance de ncat pour éviter les risques de sécurité accidentels

Le ncat La commande fait partie de la suite nmap et a été écrite spécifiquement pour elle. C'est vrai que ncat a autant d'utilisations que le célèbre couteau suisse, mais il peut être tout aussi dangereux lorsqu'il est mal utilisé ou lorsqu'il est utilisé par des acteurs malveillants. L'une de ses forces est que ncat peut être à la fois client et serveur. Cet article se concentre sur un aspect de cette relation. Je vous montre comment ouvrir un shell bash à l'écoute avec ncat accessible à tous avec ncat en tant que client. Dans mon article, Dépannage Linux :Configuration d'un écouteur TCP avec ncat, je décris comment configurer ncat en tant qu'écouteur ou serveur qui écoute sur un port spécifique. Cet exemple est similaire, mais je pense que vous serez impressionné par la puissance pure de ncat vous donne. Cela devrait aussi vous effrayer, beaucoup.

Installer ncat

Vérifiez votre système sous /usr/bin d'abord pour voir si vous devez installer ncat . Il est généralement inclus dans toute distribution basée sur Red Hat Enterprise Linux. Si vous trouvez que vous devez l'installer, le nom du package est nmap-ncat . Vous pouvez soit installer ncat par lui-même ou installez nmap et le nmap-ncat package s'installe en tant que dépendance.

Utiliser ncat

N'émettez pas ncat commandes en tant que root, en particulier pour les exemples de cet article. Cela permettra à quiconque d'avoir un accès root à votre système sans authentification. Tout utilisateur peut émettre ncat commandes, ce qui est l'une de ses caractéristiques ainsi que l'un de ses dangers. Je vous suggère de créer un compte de service et de travailler avec ncat en utilisant ce compte. Croyez-moi, j'ai entendu tous les arguments pour et contre les comptes de service, mais une fois que vous voyez ncat en action, vous souhaiterez utiliser le compte de service pour les interactions avec celui-ci.

Fournir un shell bash

C'est la partie amusante (et dangereuse) de l'utilisation de ncat . Basculez l'utilisateur vers votre nouveau compte de service. J'ai nommé le mien timide .

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

Maintenant que vous avez changé de compte d'utilisateur, il est temps d'ouvrir ce shell. Il donne un accès non authentifié à votre système via un shell principalement interactif. Vous verrez ce que je veux dire par "principalement" interactif une fois que vous vous connecterez. Cette commande suivante utilise ncat pour exécuter un shell bash qui écoute sur un port TCP. Pour cet exemple, j'utilise le port 9922 sur le serveur 1 (192.168.1.50). Le -l L'option configure un port d'écoute. Le -k option est un indicateur keepalive, qui maintient le socket. Si vous n'émettez pas le -k option, le socket meurt après la déconnexion de la session et aucune autre connexion ne peut être établie.

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

Le -e L'option exécute la commande entre guillemets, qui dans notre cas est le shell bash (/bin/bash ). J'utilise l'esperluette (& ) après la commande pour libérer mon invite et mettre le ncat auditeur en mode arrière-plan. Si vous n'utilisez pas le & , alors votre terminal "se bloquera" et ne vous permettra pas d'interagir avec lui. Si cela ne vous pose pas de problème, laissez-le tel quel.

Délivrance du netstat La commande indique que l'écouteur est en place.

[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 ~]$

Pour vous connecter au port d'écoute à partir d'un système distant, vous devez également ouvrir une exception dans le pare-feu basé sur l'hôte pour le port 9922.

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

Voyez-vous la sécurité intégrée ici ? C'est l'exception du pare-feu que j'ai dû créer en utilisant mon compte et sudo . Si vous avez un pare-feu basé sur l'hôte ou IPTables en cours d'exécution (et vous feriez mieux de l'avoir), alors ce service ne fonctionnera pas tant que vous n'aurez pas autorisé ce port, ce qui signifie qu'aucun utilisateur ordinaire ne peut faire fonctionner cela sans accès administratif. Sinon, les utilisateurs formés à ncat ouvriraient des ports partout et vous rendraient fous dans le processus. Sans parler des problèmes de sécurité que vous auriez. Je m'égare.

Accéder au shell depuis un système distant

Vous pouvez maintenant accéder au shell bash à partir d'un système distant sur le port 9922.

[ken@server2 ~]$ ncat 192.168.1.50 9922

Depuis serveur2 , lancez le ncat commande avec l'adresse IP cible de server1 et le port d'écoute 9922. Une fois que vous êtes connecté, rien ne se passe, du moins vous pourriez le croire, car le terminal semble en quelque sorte se bloquer. Mais ce qui se passe réellement, c'est que vous communiquez avec le socket brut et que, par conséquent, vous ne verrez pas d'invite. Prouvez-le en émettant le who commande.

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

Vous pouvez émettre n'importe quelle commande que vous souhaitez que l'utilisateur timide a accès à. Si vous émettez une commande qui nécessite un accès root, vous ne verrez probablement pas de réponse. Le terminal semblera rester dans l'état "bloqué". Votre réponse apparaîtra réellement sur le terminal de server1 . Par exemple, si vous lancez la commande suivante :

firewall-cmd --list-all

Vous ne voyez rien sur server2 l'écran. Sur serveur1 l'écran de , ce qui suit apparaît :

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

Pour se déconnecter du serveur2 dans le shell clandestin de , appuyez sur Ctrl+C combinaison et votre invite locale revient.

N'essayez pas cela au travail

Juste pour le plaisir, ou si vous ne me croyez pas, tuez le ncat actuel processus à l'aide de votre compte de service ou en tant que root. Relancez ensuite la même commande en tant qu'utilisateur root pour exécuter ce shell bash en tant que root. Connectez-vous à nouveau à partir d'un système distant et relancez cette commande de pare-feu. Cette fois, vous verrez les résultats. Vous pouvez émettre n'importe quelle commande en tant qu'utilisateur root, c'est pourquoi vous ne souhaitez jamais configurer ce type de service en tant qu'utilisateur root.

Et maintenant vous voyez le vrai danger d'utiliser ncat en tant que racine. Les acteurs malveillants installeront un tel shell sur un port clandestin qui est manqué par une analyse de port et auront un accès root complet sans authentification.

Récapitulez

Le très utile et potentiellement très dangereux ncat le commandement est votre meilleur ami et votre pire ennemi. Comme tous les autres outils de la remise, il n'a d'autre intention que celle que vous lui donnez. Vous devriez étudier le ncat commande, ses utilisations et ses limites dans votre environnement. N'oubliez pas de tuer tous les ncat processus que vous ne souhaitez pas exécuter en continu une fois que vous en avez terminé et supprimez l'exception du pare-feu qui autorise son accès. N'oubliez pas non plus qu'avec une grande puissance vient la capacité de vraiment gâcher les choses.

[ Vous voulez tester vos compétences d'administrateur système ? Faites une évaluation des compétences aujourd'hui. ]


Linux
  1. Comment changer le port SSH sous Linux

  2. Configuration des redirections de port sous Linux avec ncat

  3. Administrateurs système Linux :Comprendre la puissance de ncat pour éviter les risques de sécurité accidentels

  4. 13 tutoriels de sécurité Linux

  5. Linux USB :allumer et éteindre l'alimentation ?

Comment envoyer un ping à un numéro de port sous Linux

Utilisation du transfert de port SSH comme outil de sécurité sous Linux

90 commandes Linux fréquemment utilisées par les administrateurs système Linux

Ouvrir un port sous Linux

Sécurité Linux contre Windows

5 meilleures pratiques de sécurité Linux SSH pour sécuriser vos systèmes