Transfert de port ssh

Bonjour,

Ce post sera la description succinte d’une possibilité qu’SSH offre
et dont je n’avais pas connaissance plus tôt.
Elle m’a suffisament plu pour que je vienne vous en parler ici.

Elle permet de sécuriser l’utilisation de protocoles qui ne sont pas intrinséquement sûrs.

Avant toute chose, il faut savoir que cela ne peut fonctionner
qu’avec des protocoles TCP, pour en avoir une liste :$ grep tcp /etc/services |lessOn voit qu’il y en a déjà pas mal.

Ici on parlera d’accès à un serveur mail et en particulier l’accès aux démons pop3d et smtpd
qui peuvent s’y trouver.

[quote=“il”]il y a déjà les protocoles pop3s et smtps pour ça ![/quote]C’est vrai, mais plutôt que de configurer des certificats d’authentification pour tout ce monde là, je réutilise le mécanisme d’authentification de ssh que j’avais déjà configuré.

Sur la machine cliente, les logiciels utilisés seront msmtp et fetchmail,
sur le serveur, le démon popa3d et postfix.

Configuration sur le serveur :

  • popa3d : rien du tout ( je n’ai pas trouvé de fichier de conf )
  • postfix : en plus de la conf faîte pour renseigner le nom de domaine, etc …
    ajouter : smtp_sasl_security_options = noanonymous
    au main.cf dans /etc/postfix, normalement ça active l’authenfication en clair,
    mais dans notre cas ssh chiffrera tout.

Sur le client :

Nous allons maintenant faire le transfert de port proprement dit,
les ports nous intéressant sur le serveur sont les ports 25 ( smtp ) et 110 ( pop3 )
J’ai choisi de les lier à “n° de port + 2000” sur la machine cliente.
Je pars du principe que vous avez le même nom d’utilisateur sur les deux machines
et que vous n’avez pas changé le port par défaut dans /etc/ssh/sshd_config sur le serveur.

Ces deux commandes, en plus de lier les ports comme désiré, ouvre aussi une session ssh,
si c’est possible de lier les ports sans ouvrir de session j’aimerais bien qu’on me le dise.

edit : Bon, c’est possible de transférer les ports sans ouvrir de session en ajoutant les options -N et -f à -L.

[quote=“Freeduc-Sup”]-N # Ne pas exécuter de commande distante
-f # Excute le programme en tâche de fond[/quote]
Les deux sont indispensables car si on utilise -f tout seul, ssh se plaint de ne pas avoir reçu de commande et ne part pas en tâche de fond.

Pour transférer un port sans ouvrir de session, les commandes deviennent donc :$ ssh -NfL 2025:localhost:25 nom_de_domaine_du_serveur_mail $ ssh -NfL 2110:localhost:110 nom_de_domaine_du_serveur_mail

Maintenant plus qu’à configurer les clients pour qu’ils s’adaptent aux règles.

Dans le ~/.fetchmailrc, une entrée avec : poll localhost with protocol pop3 port 2110 username votre_nom_d'utilisateur password votre_mot_de_passe
Dans le ~/.msmtprc, on modifie avec :host localhost port 2025 from user@domain user votre_nom_d'utilisateur password mot_de_passeà la place des paramètres précédents correspondant.

Rien d’autre à modifier nulle part.

À noter qu’il existe la contrepartie -R à -L dans le cas où le tunnel
est lancé à partir du serveur plutôt qu’à partir du client.

Bon, comme d’habitude, si on veux en discuter, on va dans Pause Café …
discussion-sur-t-a-transfert-de-port-ssh-t30867.html