亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Maison Tutoriel système Linux Transfert de port SFTP: activer la fonctionnalité supprimée

Transfert de port SFTP: activer la fonctionnalité supprimée

Mar 17, 2025 am 09:43 AM

Transfert de port SFTP: activer la fonctionnalité supprimée

introduction

Le protocole SSH prend en charge trois grandes catégories d'activités de serveur distantes: a) l'exécution de la commande (y compris le shell de connexion), b) le transfert et le fonctionnement du réseau, et c) le transfert de fichiers.

Les responsables OpenSSH ont déterminé que SFTP et SCP n'ont aucun objectif juridique pour le transfert de port (via les options -l et -r). Pendant le transfert de fichiers à l'aide de ces utilitaires, un drapeau qui désactive explicitement ces fonctionnalités est transmis inconditionnellement à l'exécutable de l'enfant SSH.

Certains utilisateurs peuvent en effet avoir besoin de ces fonctionnalités. Un sous-ensemble évident est les testeurs de pénétration dont la tache consiste à vérifier que cette fonctionnalité est explicitement désactivée sur un serveur SFTP public.

Voici deux techniques pour activer ces fonctionnalités supprimées en modifiant la cha?ne du binaire SFTP elle-même, ou en redirigeant à travers un shell qui peut facilement modifier la ligne de commande. Selon les fonctionnalités de la plate-forme, l'une ou l'autre technologie peut être nécessaire pour atteindre cet objectif.

Supprimer les détails

Premièrement, il est important de trouver le processus d'intérêt en cours d'exécution. La fonction de shell ci-dessous affichera le PID qui correspond au motif de shell (notez que ce n'est pas une expression régulière). Cela s'exécute sous Debian Dash (et la plupart des autres coquilles courantes) et s'appuie sur l'option PS de BSD:

 <code>pps () { local a= b= c= IFS=$'\r'; ps ax | while read -ra do [ "$b" ] || c=1; for b; do case "$a" in *"$b"*) c=1;; esac; done; [ "$c" ] && printf '%s\n' "$a" && c=; done; }</code>

Démarrez une session SFTP traditionnelle pour vérifier les processus qui y sont associés:

 <code>$ id uid=1001(aturing) gid=1001(aturing) groups=1001(aturing)... $ sftp aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>

Nous supposons que l'utilisateur UNIX local ci-dessus a le même compte d'utilisateur sur le serveur SFTP distant.

Une fois la session exécutée, une recherche de processus locale pour le nom d'utilisateur affichera le processus SSH de l'enfant généré par SFTP:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 9666 pts/0 S 0:00 sftp aturing@sftp.victimandum.com 9667 pts/0 S 0:00 /usr/bin/ssh -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings yes -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>

Le paramètre ClearallForwardings Oui supprimera toute tentative de transfert sans prendre aucune mesure pour la casser.

Les drapeaux de transfert de port -l et -r n'existent pas comme options valides pour la ligne de commande SFTP, mais nous pouvons utiliser l'option -s pour les déclencher explicitement pour spécifier un gestionnaire SSH personnalisé, dans ce cas le serveur de messagerie:

 <code>$ cat portssh #!/bin/sh exec ssh -L2525:smtp.victimandum.com:25 "$@"</code>

Si la suppression de transfert n'est pas en place, cet appel SFTP est suffisant pour établir une connexion de transfert:

 <code>$ sftp -S ./portssh -oClearAllForwardings\ no aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>

Vous pouvez maintenant voir des tentatives de transfert dans le processus SSH de l'enfant:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 9897 pts/0 S 0:00 sftp -S ./portssh -oClearAllForwardings no aturing@sftp.victimandum.com 9898 pts/0 S 0:00 ssh -L2525:smtp.victimandum.com:25 -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings yes -o ClearAllForwardings no -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>

Cependant, tenter de contacter le serveur de messagerie distant via le port de transfert local est infructueux en raison d'une remplacement explicite:

 <code>$ nc localhost 2525 $</code>

Cette suppression inconditionnelle est visible dans le code source:

 <code>$ sed -n /X11/,/Forwardings/p openssh-8.7p1/sftp.c addargs(&args, "-oForwardX11 no"); addargs(&args, "-oPermitLocalCommand no"); addargs(&args, "-oClearAllForwardings yes");</code>

Ces cha?nes statiques sont également visibles dans les fichiers binaires compilés:

 <code>$ strings /usr/bin/sftp | grep [-]o[CFP] -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings yes -oForwardAgent no -oPort %d</code>

Enfin, la documentation indique clairement que cette suppression est intentionnelle et donne des raisons raisonnables:

 <code>$ man ssh_config | sed -n /ClearAllForwardings/,/default/p ClearAllForwardings Specifies that all local, remote, and dynamic port forwardings specified in the configuration files or on the command line be cleared. This option is primarily useful when used from the ssh(1) command line to clear port forwardings set in configura‐ tion files, and is automatically set by scp(1) and sftp(1). The argument must be yes or no (the default).</code>

Modifier les cha?nes compilées

Pour ceux qui souhaitent désactiver la configuration de oui par défaut ClearallForwardings, une option consiste à utiliser SED pour modifier directement les cha?nes dans le binaire SFTP (en supposant que le SED de la plate-forme est en satelière binaire):

 <code>$ sed 's/AllForwardings yes/AllForwardings no /' sftp.noclearforward</code>

Cette modification directe est beaucoup plus facile que la compilation de nouveaux fichiers binaires.

Nous pouvons confirmer que la cha?ne a été modifiée avec succès:

 <code>$ strings ./sftp.noclearforward | grep [-]o[CFP] -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no -oPort %d</code>

Bien que le contenu et la somme de contr?le du SFTP modifié soient différents, tout Linux BuildID SHA1 existant restera le même (mais ne soumettez pas les billets d'assistance lors de l'utilisation de SFTP modifiée):

 <code>$ file /usr/bin/sftp ./sftp.noclearforward /usr/bin/sftp: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=d7e77e24d5fac0fdc89e62a4c9c656091f2c4a33, for GNU/Linux 3.2.0, stripped ./sftp.noclearforward: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=d7e77e24d5fac0fdc89e62a4c9c656091f2c4a33, for GNU/Linux 3.2.0, stripped $ sha1sum /usr/bin/sftp ./sftp.noclearforward d8bdaf0b4642b9c324f9c2e0aeee2d9578fbe383 /usr/bin/sftp b12dda8ecfd7bd2847919b5531aea7c03364c123 ./sftp.noclearforward $ sha256sum /usr/bin/sftp ./sftp.noclearforward 986eecdfc654c9b3ff3fd0dce59690d47cf56be96a4b98a04a3682aef95d3f52 /usr/bin/sftp c8f99ce33fc129250c11dc6dbb8a01112e01124e470a92d0acefb955fd17d670 ./sftp.noclearforward</code>

Vous pouvez appeler le binaire SFTP modifié pour activer le transfert de port:

 <code>$ chmod 755 sftp.noclearforward $ ./sftp.noclearforward -S ./portssh aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>

Vous pouvez maintenant voir les paramètres modifiés dans le processus de l'enfant:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 9991 pts/0 S 0:00 ./sftp.noclearforward -S ./portssh aturing@sftp.victimandum.com 9992 pts/0 S 0:00 ssh -L2525:smtp.victimandum.com:25 -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>

Cette fonction est activée et exécutée sur un serveur distant et peut vérifier les connexions dans un shell séparé:

 <code>$ nc localhost 2525 220 smtp.victimandum.com Microsoft ESMTP MAIL Service, Version: 1.2.3456.78901 ready at Sun, 1 Jan 2023 01:23:45 -0100 ^C</code>

Lorsque le transfert est désactivé sur le serveur, le client recevra une notification indiquant cet état lorsque la connexion tentera:

 <code>channel 3: open failed: administratively prohibited: open failed</code>

L'administrateur SFTP a attribué un compte non fiable devrait être susceptible de vérifier que la configuration du serveur désactive explicitement le transfert et l'exécution des commandes.

Au-delà de la coque POSIX

Bien que les normes DASH et POSIX fournissent un ensemble - afin de réinitialiser les paramètres de ligne de commande, des fonctionnalités plus avancées sont fournies dans Bash et KSH93:

 <code>$ cat ynargs #!/bin/bash echo "${@//yes/no}"</code>

Le test rapide confirme l'édition réussie:

 <code>$ ./ynargs -oForwardX11 no -oPermitLocalCommand yes -oClearAllForwardings yes -oForwardAgent no -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no</code>

Notez que le $ ci-dessus {@ // ... / ...} n'est pas un POSIX valide et ne peut pas fonctionner dans Dash ou aucun shell (MKSH, OKSH) dérivé de PDKSH. De nombreuses plates-formes ne regroupent pas les coquilles avec cette fonctionnalité (comme Android et OpenBSD, bien qu'il existe des moyens de les ajouter);

Pour profiter de cette fonctionnalité avec un shell puissant, nous créons un répertoire, puis nous créons un wrapper SSH pour effacer les paramètres de problème:

 <code>$ cat ~/switcharoo/ssh #!/bin/bash exec /usr/bin/ssh "${@//yes/no}"</code>

Réglez ensuite le répertoire avant System SSH dans $ PATH:

 <code>$ export PATH=~/switcharoo:$PATH $ which ssh ~/switcharoo/ssh</code>

Ensuite, nous appelons le système SFTP dans cet environnement modifié:

 <code>$ /usr/bin/sftp -S ./portssh aturing@sftp.victimandum.com aturing@sftp.victimandum.com's password: Connected to sftp.victimandum.com. sftp></code>

Nous avons observé que le shell réinitialise les paramètres du problème:

 <code>$ pps aturing PID TTY STAT TIME COMMAND 10058 pts/0 S 0:00 /usr/bin/sftp -S ./portssh aturing@sftp.victimandum.com 10059 pts/0 S 0:00 /usr/bin/ssh -L2525:smtp.victimandum.com:25 -oForwardX11 no -oPermitLocalCommand no -oClearAllForwardings no -oForwardAgent no -l aturing -s -- sftp.victimandum.com sftp</code>

Reconfirmé la connexion locale au port de transfert:

 <code>$ nc localhost 2525 220 smtp.victimandum.com Microsoft ESMTP MAIL Service, Version: 1.2.3456.78901 ready at Sun, 1 Jan 2023 01:23:45 -0100 ^C</code>

En tant que démonstration finale, un échange SMTP complet peut être effectué en utilisant le script suivant:

 <code>$ cat awkmail #!/bin/gawk -f BEGIN { smtp="/inet/tcp/0/localhost/2525"; ORS="\r\n"; r=ARGV[1]; s=ARGV[2]; sbj=ARGV[3]; # /bin/awkmail to from subj 0) print |& smtp print "." |& smtp; smtp |& getline j; print j print "quit" |& smtp; smtp |& getline j; print j close(smtp) } # /inet/protocol/local-port/remote-host/remote-port</code>

Nous pouvons utiliser ce script pour envoyer notre propre courrier à un destinataire distant auquel le serveur SMTP cible peut accéder:

 <code>$ ./awkmail jatanasoff@victimandum.com aturning@localhost awkmail Queued mail for delivery</code>

Dans des environnements hautement contr?lés, la présence de ces fonctions n'est pas optimale.

Restrictions de serveur

Il est compréhensible que les administrateurs SFTP ne souhaitent pas permettre à leurs utilisateurs de créer des connexions TCP arbitraires à l'aide du serveur, ce qui peut mettre en danger les réseaux sensibles. Limiter cette activité est un cadre de sécurité prudent.

Une configuration restrictive commune consiste à ajouter des utilisateurs de SFTP non fiables à un groupe, puis à contraindre l'activité de ce groupe dans SSHD_Config:

 <code>Match Group sftponly ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no</code>

Cette configuration recommandée est généralement suffisante pour empêcher toutes les tentatives de transfert.

Il est recommandé d'ajouter une désactivation.

 <code>$ man sshd_config | sed -n /DisableForwarding/,/configurations/p DisableForwarding Disables all forwarding features, including X11, ssh-agent(1), TCP and StreamLocal. This option overrides all other forwarding- related options and may simplify restricted configurations.</code>

Ceci est laissé à l'administrateur pour la pratique.

en conclusion

Les paramètres du client SFTP trop stricts peuvent conduire à un certain degré de cécité de gestion des serveurs. Les restrictions du client SFTP sont facilement contournées par une variété de méthodes.

Pour les administrateurs du serveur SFTP, il est important de savoir où ils sont restreints et où ils sont restreints et ne comptent pas sur les clients pour protéger le serveur contre le contr?le arbitraire du TCP. Le client est contr?lé par l'utilisateur, et si la configuration est erronée, il est difficile d'implémenter les commandes TCP sur le serveur. Tout test doit être effectué sans transmission approfondie dans l'utilisateur SSH_Config, faites attention aux avertissements dans le document.

Bien que cette fonctionnalité puisse avoir un objectif juridique imaginable, les abus seront rares.

Ces problèmes ne sont pas nouveaux, car les variantes de Site Exec sont présentes dans FTP en texte clair depuis des décennies. SFTP n'est pas une alternative simple au transfert de fichiers en texte clair, il dispose également de nombreuses fonctionnalités faciles à utiliser.

Espérons que les administrateurs pourront utiliser ces méthodes pour vérifier la sécurité de leurs serveurs afin de ne pas être pris au dépourvu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1488
72
Comment résoudre les problèmes DNS sur une machine Linux? Comment résoudre les problèmes DNS sur une machine Linux? Jul 07, 2025 am 12:35 AM

Lorsque vous rencontrez des problèmes DNS, vérifiez d'abord le fichier /etc/resolv.conf pour voir si le serveur de nom correct est configuré; Deuxièmement, vous pouvez ajouter manuellement le DNS public tel que 8,8.8.8 pour les tests; Utilisez ensuite les commandes NSlookup et Dig pour vérifier si la résolution DNS est normale. Si ces outils ne sont pas installés, vous pouvez d'abord installer le package DnsUtils ou Bind-Utils; Vérifiez ensuite l'état du service et le fichier de configuration résolus SystemD /etc/systemd/resolved.conf, et définissez DNS et FallbackDNS au besoin et redémarrez le service; Enfin, vérifiez l'état de l'interface réseau et les règles du pare-feu, confirmez que le port 53 n'est pas

Comment débogueriez-vous un serveur lent ou qui a une utilisation élevée de la mémoire? Comment débogueriez-vous un serveur lent ou qui a une utilisation élevée de la mémoire? Jul 06, 2025 am 12:02 AM

Si vous constatez que le serveur s'exécute lentement ou que l'utilisation de la mémoire est trop élevée, vous devez vérifier la cause avant de fonctionner. Tout d'abord, vous devez vérifier l'utilisation des ressources système, utiliser les commandes TOP, HTOP, Free-H, IOSTAT, SS-ANTP et d'autres commandes pour vérifier les connexions CPU, mémoire, E / S de disque et réseau; Deuxièmement, analysez des problèmes de processus spécifiques et suivez le comportement des processus à haute occupation via des outils tels que PS, JSTACK, Strace; puis vérifier les journaux et surveiller les données, afficher les enregistrements OOM, les demandes d'exception, les requêtes lentes et autres indices; Enfin, le traitement ciblé est effectué en fonction de raisons courantes telles que les fuites de mémoire, l'épuisement des pools de connexion, les tempêtes de défaillance du cache et les conflits de taches de synchronisation, optimiser la logique du code, configurer un mécanisme de réessayer du délai de temps, ajouter des fusibles de limite actuelle et les ressources de mesure et d'évaluation régulièrement de la pression et d'évaluation.

Installez le guacamole pour l'accès à distance Linux / Windows dans Ubuntu Installez le guacamole pour l'accès à distance Linux / Windows dans Ubuntu Jul 08, 2025 am 09:58 AM

En tant qu'administrateur système, vous pouvez vous retrouver (aujourd'hui ou à l'avenir) dans un environnement où Windows et Linux coexistent. Ce n'est un secret pour personne que certaines grandes entreprises préfèrent (ou doivent) gérer certains de leurs services de production dans Windows Boxes et

Comment trouver mon adresse IP privée et publique dans Linux? Comment trouver mon adresse IP privée et publique dans Linux? Jul 09, 2025 am 12:37 AM

Dans Linux Systems, 1. Utilisez la commande IPA ou HostName-I pour afficher la propriété intellectuelle privée; 2. Utilisez curlifconfig.me ou curlipinfo.io/ip pour obtenir une adresse IP publique; 3. La version de bureau peut afficher IP privé via les paramètres système, et le navigateur peut accéder à des sites Web spécifiques pour afficher la propriété IP publique; 4. Les commandes communes peuvent être définies sous forme d'alias pour un appel rapide. Ces méthodes sont simples et pratiques, adaptées aux besoins de visualisation IP dans différents scénarios.

Comment installer Nodejs 14/16 & npm sur Rocky Linux 8 Comment installer Nodejs 14/16 & npm sur Rocky Linux 8 Jul 13, 2025 am 09:09 AM

Construit sur le moteur V8 de Chrome, Node.js est un environnement d'exécution JavaScript open source et axé sur les événements con?u pour la construction d'applications évolutives et les API backend. NodeJS est connu pour être léger et efficace en raison de son modèle d'E / S non bloquant et

Exigences du système pour installer Linux Exigences du système pour installer Linux Jul 20, 2025 am 03:49 AM

LinuxCanrunonModesthardwarewithSpecificminimumRequirements.A1GHZProcessor (x86orx86_64) est ensemble, avec-corecpureComend.r.R AmshouldBeatleast512MBForCommand-lineUseor2gbfordesktopenvironments.

20 commandes YUM pour la gestion des packages Linux 20 commandes YUM pour la gestion des packages Linux Jul 06, 2025 am 09:22 AM

Dans cet article, nous apprendrons à installer, à mettre à jour, à supprimer, à trouver des packages, à gérer les packages et les référentiels sur les systèmes Linux à l'aide de l'outil YUM (Yellowdog Updater Modified) développé par Redhat. Les exemples de commandes montrées dans cet article sont pratiques

Comment installer MySQL 8.0 sur Rocky Linux et Almalinux Comment installer MySQL 8.0 sur Rocky Linux et Almalinux Jul 12, 2025 am 09:21 AM

écrit en C, MySQL est une source ouverte, multiplateforme, et l'un des systèmes de gestion de base de données relationnels les plus utilisés (RDMS). Il fait partie intégrante de la pile de lampes et est un système de gestion de base de données populaire dans l'hébergement Web, l'analyse des données,

See all articles