5. La solution non sécurisée : percer en utilisant telnet

5.1. Principe

Si vous ne pouvez faire que du telnet (à cause d’un proxy telnet), cette solution pourrait bien vous convenir.

Le programme de perçage de pare-feu, fwprc, utilisera un proxy tty, cotty, qui ouvre deux dispositifs pseudo-tty, lance des commandes sur chacun des esclaves de ces dispositifs, et copie systématiquement chaque caractère que l’on sort sur le tty qui sert d’entrée pour l’autre commande. Une commande sera une connexion telnet vers le site serveur, et l’autre sera le pppd. pppd peut alors ouvrir et contrôler la session telnet avec un script de chat comme d’habitude.

En fait, si votre proxy telnet permet une connexion vers un port arbitraire, et si vous pouvez lancer un démon de manière sûre sur l’hôte serveur (avec relance planifiée [cron] en cas de plantage), vous feriez mieux d’écrire un programme qui connectera juste un port côté client au port côté serveur par le proxy, afin de pouvoir utiliser la solution sécurisée ci-dessus, en utilisant éventuellement une variante de

ssh -t -o "ProxyCommand ..."
(Soumettez moi une solution et je l’intégrerai volontiers à la distribution fwprc).

Remarque : si vous devez utiliser la solution non sécurisée basée sur le telnet, assurez vous que, dans votre session cible, il ne se trouve rien de confidentiel ou qui ne doive être bidouillé, puisque le mot de passe sera envoyé en clair sur internet. Si c’est à votre portée, un système ne demandant le mot de passe qu’une seule fois, ou un système de cryptographie explicite augmentera votre sécurité, ce qui, toutefois, rendra les scripts de connexion automatique bien plus complexes.

5.2. fwprc

J’ai écrit un script qui décrit de façon très détaillée comment percer les pare-feu, fwprc, disponible sur mon site, avec également cotty (qui est requis à partir de la version 0.2 de fwprc). Au moment où j’ai écrit ces lignes, la version la plus avancée de fwprc est 0.3e et pour cotty 0.4c.

Le nom « fwprc » est volontairement illisible et imprononçable, afin d’embrouiller votre administrateur système incompétent et paranoïaque sans doute responsable de ce pare-feu qui vous casse les pieds (bien sûr il peut y avoir des pare-feu légitimes également, et parfois même, ils sont indispensables ; la sécurité n’est qu’un problème de configuration correcte). Si vous devez le lire à voix haute, prononcez le de la pire façon possible et imaginable.

GRAND CONCOURS ! Envoyez moi un fichier audio avec un enregistrement audio numérique de votre prononciation de « fwprc ». Le prix pour la prononciation la plus mauvaise est une mise à niveau gratuite et le nom du gagnant sur la page du fwprc 1.0!

J’ai testé le programme sur différentes configurations, en le configurant avec des fichiers ressources. Mais bien entendu, selon la loi de l’emmerdement maximum, ça plantera pour vous. N’hésitez pas à proposer les améliorations qui faciliteront la vie de ceux qui configureront après vous.

5.3. .fwprcrc

fwprc peut être personnalisé grâce au fichier .fwprcrc fait pour être le même des deux côtés du pare-feu. Avoir plusieurs configurations de rechange parmi lesquelles choisir est certes possible (par exemple, moi je le fais), et on laisse ça comme exercice pour le lecteur.

Pour commencer, copiez la section appropriée de fwprc (l’avant-dernière) dans un fichier nommé .fwprcrc dans votre répertoire home. Remplacez ensuite les valeurs des variables par des trucs qui correspondent à votre configuration. Enfin, copiez le sur l’autre hôte et testez.

Le comportement par défaut est d’utiliser pppd sur le client, et slirp sur le serveur. Pour modifier ceci, vous pouvez redéfinir la fonction appropriée dans votre .fwprcrc avec une ligne telle que :

remote_IP_emu () { remote_pppd }

Notez que SLiRP™ est plus sûr que pppd, et plus facile d’accès, puisqu’il ne requiert pas d’être root sur la machine serveur, et n’a pas besoin d’une configuration supplémentaire du pare-feu pour empêcher les connexions du monde extérieur sur le réseau derrière un pare-feu. La fonctionnalité de base dans SLiRP™ fonctionne plutôt bien, mais je n’ai pas réussi à faire marcher certains des plus qu’il est censé proposer (tel que le contrôle du temps d’exécution). Bien entendu, puisqu’il s’agit d’un logiciel libre, n’hésitez pas à aller dans la source pour carrément implémenter ou réparer n’importe quel dispositif dont vous aurez besoin.