/usr/share/doc/HOWTO/fr-html/Term-Firewall.html is in doc-linux-fr-html 2013.01-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>Mini-HOWTO Term-Firewall</title>
</head>
<body>
<h1>Mini-HOWTO Term-Firewall</h1>
<h2>Barak Pearlmutter,
<code>barak.pearlmutter@alumni.cs.cmu.edu</code></h2>
22 Mai 1996
<hr>
<em>(Version française réalisée par Eric
Dumas, <code>dumas@freenix.fr</code>,
<code>dumas@Linux.EU.Org</code>, 1er Juillet 1997). Ce document
décrit comme utiliser Term pour traverser un Firewall
Internet, ce que vous n'êtes pas supposé pouvoir
faire.</em>
<hr>
<h2><a name="s1">1. Avertissements (Important !)</a></h2>
<p>Je décline sur le présent document toute
responsabilité d'une quelconque application de ce qui va
suivre. Si cela échoue de n'importe quelle manière,
c'est votre problème. Ce n'est pas ma faute. Si vous ne
comprenez pas les risques qui découlent de cette
méthode, ne l'utilisez pas. Si vous employez cette
méthode et que cela permet à des pirates vicieux de
pénétrer dans votre système informatique et
que cela vous coûte votre travail et à votre
entreprise des millions de dollars, ce n'est que de votre faute. Ne
venez pas pleurer.</p>
<h2><a name="s2">2. Copyright</a></h2>
<p>Sauf contre-indication, les documents HOWTO Linux sont
copyrightés par leurs auteurs respectifs. Les documents
Linux HOWTO peuvent être reproduits et diffusés
totalement ou en partie, sous n'importe quel support physique ou
électronique du moment ou la notice légale se trouve
sur toute copie. Les diffusions commerciales sont autorisées
et encouragées. Toutefois, l'auteur souhaiterait être
tenu au courant de telles diffusions.</p>
<p>Toute traduction, travail dérivé contenant
n'importe quel document HOWTO Linux doit être convert par
cette note légale. Ainsi, vous ne pouvez pas créer un
document dérivé d'un HOWTO et ajouter des
restrictions sur sa diffusion. Des exceptions à ces
règles peuvent être éventuellement
acceptées dans certaines conditions. Contactez le
coordinateur des HOWTO à l'adresse qui suit.</p>
<p>En résumant, nous souhaitons favoriser la
dissémination de ces informations <em>via</em> le maximum de
moyens de communications. Toutefois, nous souhaitons garder un
copyright sur ces documents et souhaiterions être tenu au
courant de toute initiative de diffusion de ces documents.</p>
<p>Si vous avez des questions, contactez Greg Hankins, le
coordinateur des HOWTO Linux à gregh@sunsite.unc.edu par
courrier électronique ou par téléphone au 1
404 853 9989.</p>
<h2><a name="s3">3. Introduction</a></h2>
<p>Le programme <code>term</code> est normalement utilisé
sur une ligne série ou modem, pour permettre à
plusieurs services machine-à-machine de communiquer
grâce à cette simple connexion série.
Toutefois, il est assez utile quelquefois d'établir une
connexion entre deux machines communiquant par <code>telnet</code>
avec <code>term</code>.</p>
<p>L'utilisation la plus intéressante réside dans la
connexion de deux machines séparées par des
<i>firewalls</i> ou par des serveurs <i>socks</i>. Les
<i>firewalls</i> permettent l'établissement de connexions
à travers eux-mêmes, typiquement en utilisant le
protocole <i>socks</i>. Ce dernier permet aux machines du
réseau interne de se connecter à l'extérieur,
et oblige les utilisateurs extérieurs à se connecter
en premier sur la machine passerelle qui leur demande un mot de
passe. Ces <i>firewalls</i> rendent impossible, par exemple, la
communication entre un client X sur une machine intérieure
et un serveur extérieur. Mais, en configurant une connexion
<code>term</code>, ces restrictions peuvent être
contournées assez facilement, au niveau de
l'utilisateur.</p>
<h2><a name="s4">4. Mise en oeuvre générale</a></h2>
<p>Configurer une connexion <code>term</code> par-dessus une
session <code>telnet</code> se fait en deux phases.</p>
<p>Dans un premier temps, votre client habituel <code>telnet</code>
est utilisé pour configurer une connexion
<code>telnet</code> et pour se connecter. Ensuite, le client
<code>telnet</code> est mis en sommeil, et fait en sorte que la
connexion <code>telnet</code> soit transmise à
<code>term</code>.</p>
<h2><a name="s5">5. Procédure
détaillée</a></h2>
<p>En détail, la marche à suivre est la suivante
:</p>
<ol>
<li>A partir d'une machine à l'intérieur du
<i>firewall</i>, se connecter par <code>telnet</code> à
l'extérieur de celui-ci et s'y loger.</li>
<li>Sauf si vous êtes sous <b>Linux</b> et que vous utilisez
le système de fichiers <i>/proc</i> (voir ci-dessous),
vérifiez que votre shell est du genre <code>sh</code>.
C.à.d. que votre shell par défaut soit une variante
de <code>csh</code>. Appelez <code>telnet</code> par <code>(setenv
SHELL /bin/sh; telnet machine.la-bas.dehors)</code>.</li>
<li>Après s'être logé, lancer la commande sur
la machine de l'extérieur : <code>term -r -n off
telnet</code>.</li>
</ol>
<p>Maintenant revenez à l'invite <code>telnet</code> sur la
machine locale, en utilisant le caractère
d'échappement <code>^]</code> (ou celui que vous voulez),
puis utilisez la commande de <code>telnet</code> pour
exécuter une commande shell <code>!</code> pour lancer
<code>term</code> :</p>
<pre>
telnet> ! term -n on telnet <&3 >&3
</pre>
<p><i>Et voilà !!!</i> (Ndt : En français dans le
texte).</p>
<p>(Si vous possédez une autre version de
<code>telnet</code>, vous risquez d'avoir à utiliser
d'autres descripteurs de fichiers que 3. C'est facile à
déterminer en utilisant trace. Mais 3 semble fonctionner sur
tous les <code>telnet</code> de type bsd que j'ai testés.
J'ai également essayé sous Sun OS 4.x et les
distributions <b>Linux</b> standard.)</p>
<p>Certains clients telnet ne possèdent pas de
caractère d'échapement !. Par exemple, client telnet
diffusé avec la Slackware 3.0 en fait partie. Les sources de
ce client sont sensés provenir de
ftp://ftp.cdrom.com:/pub/linux/slackware-3.0/source/n/tcpip/NetKit-B-0.05.tar.gz,
paquetage qui contient le caractère d'échapement. Une
solution assez simple est de récupérer ces sources et
de les recompiler. Je n'y suis malheureusement pas arriver. De
plus, si vous êtes à l'intérieur d'un firewall
socks, vous devrez avoir un client telnet à la SOCKS. J'ai
réussi à compiler un tel cient en utilisant
ftp://ftp.nec.com/pub/security/socks.cstc/socks.cstc.4.2.tar.gz ou
si vous êtes à l'extérieur des USA,
ftp://ftp.nec.com/pub/security/socks.cstc/export.socks.cstc.4.2.tar.gz</p>
<p>Autrement, sous <b>Linux</b> version 1.2.13 ou
précédentes, vous pouvez mettre <code>telnet</code>
en sommeil avec <code>^]^z</code> , récupérer son pid
et lancer :</p>
<pre>
term -n on -v /proc/ < telnetpid > /fd/3 telnet
</pre>
<p>Cela ne fonctionne plus avec les noyaux 1.3 et supérieur,
qui ont vérouillé certaines failles de
sécurité pour éviter les accès à
des descripteurs de fichiers n'appartenant pas au
propriétaire du processus ou à ses fils.</p>
<h2><a name="s6">6. Sockets pour <code>term</code>
multiples</a></h2>
<p>C'est une bonne idée de donner un nom explicite à
la socket de <code>term</code>. C'est l'argument donné
à <code>telnet</code> dans la ligne de commande ci-dessus. A
moins que vous n'ayez la variable d'environnement TERMSERVER
positionnée à <code>telnet</code>, vous pouvez
appeler les clients avec le paramètre <code>-t</code>,
c'est-à-dire : <code>trsh -t telnet</code>.</p>
<h2><a name="s7">7. Le fichier d'initialisation
.term/termrc.telnet</a></h2>
<p>J'ai attendu que la ligne soit claire en utilisant un
vérficateur de ligne sur ce média. J'espérais
qu'il soit totalement transparent, mais cela semble impossible.
Toutefois, le seul caractère perturbant semble être le
255. Le fichier <code>/.term/termrc.telnet</code> que j'emploie (le
fichier <code>.telnet</code> est le nom de la connexion
<code>term</code>, cf. supra) contient :</p>
<pre>
baudrate off
escape 255
ignore 255
timeout 600
</pre>
<p>Il peut être amélioré en trichant, j'ai un
débit de seulement 30.000 cps (caractères par
secondes) pour une connexion longue distance à-travers un
<i>firewall</i> lent. FTP peut aller jusqu'à 100.000 cps en
suivant le même chemin. Une vitesse en bps (bits par seconde)
réaliste peut éviter quelques temps morts.</p>
<h2><a name="s8">8. Administration</a></h2>
<p>Manifestement, si vous attaquez de l'extérieur du
<i>firewall</i>, et que vous employez une carte avec un
identificateur sécurisé ou quelque chose de ce genre,
vous voudrez sûrement inverser les rôles des serveurs
de connexion et local (si vous ne comprennez pas ce que cela
signifie, vous n'êtes peut-être pas assez familier avec
<code>term</code> pour utiliser l'astuce décrite dans ce
document d'une manière responsable).</p>
<h2><a name="s9">9. Securité</a></h2>
<p>Ce n'est rien moins qu'une faille que la possibilité
d'avoir une connexion <code>telnet</code> détournée
sur une machine non sécurisée de l'extérieur.
Le premier risque supplémentaire provient des personnes
capables d'utiliser la socket <code>term</code> que vous avez
configurée sans que vous soyez au courant. Donc, soyez
prudents (personnellement, je fais cela sur une machine externe que
je sais être sécurisée. Pour être plus
précis, un portable sous <b>Linux</b> que j'administre
moi-même et qui n'accepte aucune connexion de
l'extérieur).</p>
<p>Une autre possibilité est d'ajouter <code>socket
off</code> dans <code>~/.term/termrc.telnet</code> ou ajouter
<code>-u off</code>. Cela évide que la socket soit
accessible du site distant, avec une perte de fonctionnalité
assez mineure.</p>
<h2><a name="s10">10. Mode <code>telnet</code></a></h2>
<p>Vérifiez que le démon <code>telnetd</code> distant
n'est pas dans un mauvais mode sept bits. Si c'est le cas, vous
devez l'indiquer à <code>term</code> lorsque vous le lancez
en ajoutant un <code>-a</code> sur la ligne de commande (j'emploie
de temps en temps un <code>^] telnet> set outbin</code> ou un
<code>set bin</code> ou bien, je lance <code>telnet</code> avec
l'option <i>-8</i> pour forcer la connexion en mode 8 bits).</p>
<h2><a name="s11">11. Bugs et mes souhaits concerant term</a></h2>
<p>Le programme de vérification de ligne a de temps en temps
quelques problèmes pour contrôler la connexion
<code>telnet</code>. Cela provient parfois du fait qu'il ne
vérifie pas le code de retour de l'appel
<code>read()</code>. Pour des connexions réseau, cet appel
peut retourner le code d'erreur -1 avec <i>EINTR</i> (interrompu)
ou <i>EAGAIN</i> (reéssayer). Manifestement, cela serait une
bonne chose que cela soit vérifié.</p>
<p>Un certain nombre de caractéristiques pourraient
faciliter l'utilisation de <code>term</code> sur
<code>telnet</code>. Cela provient essentiellement d'une
hypothèse qui a influencé le développement de
<code>term</code>, qui est que la connexion dispose d'une largeur
de bande faible, d'une latence réduite et qu'elle est
quelque peu bruitée.</p>
<p>Une connexion <code>telnet</code> possède en
général une bande passante assez importante, une
grande latence et qui contient peu d'erreurs. Cela signifie que la
connexion pourrait être mieux utilisée si :</p>
<ol>
<li>la taille maximale de la fenêtre était
augmentée, bien au-delà de la limite imposée
par la formule <i>N_PACKETS/2 = 16</i> de <code>term</code></li>
<li>une option pour désactiver l'envoi et la
vérification du <i>checksum</i> des paquets était
implémentée</li>
<li>de plus grands paquets étaient permis lorsque cela est
approprié.</li>
</ol>
<p>Egalement, pour améliorer la sécurité, il
serait sympathique d'avoir une option dans <code>term</code> pour
afficher la liste des connexions réalisées par la
socket dans un fichier ou sur stderr, ou bien dans les deux. Cela
permettrait de vérifier si une connexion <code>term</code> a
été corrompue par des pirates situés du
côté non sécurisé de la machine.</p>
<h2><a name="s12">12. Trucs qui semblent ne pas
fonctionner</a></h2>
<p>Quelques clients et serveurs <code>telnet</code> acceptent
d'encoder leurs communications pour tromper la surveillance sur
réseau. Malheureusement, la méthode employée
ci-dessus (en utilisant la connexion réseau que le client
<code>telnet</code> a configuré pendant que l'autre client
est en attente) ne fonctionne pas dans ce cas. Au lieu de cela, il
doit réellement traverser le client <code>telnet</code>,
donc ne peut réaliser l'encodage. Il semble qu'il faille
modifier que le client, pour y a jouter une commande qui lance un
processus avec leurs stdin et stdout connectés au
<code>telnet</code> en cours. Cela serait également utile
pour des processus de connexion automatiques, peut-être
quelqu'un l'a-t-il déjà fait.</p>
<h2><a name="s13">13. Sources</a></h2>
<p>J'ai légèrement consulté la
bibliothèque Term. Les détails ainsi que les patches
à SOCKS sont disponibles en les demandant à Steven
Danz (danz@wv.mentorg.com).</p>
<h2><a name="s14">14. Remerciement</a></h2>
<p>Mes remerciements à</p>
<ul>
<li>Gary Flake (flake@scr.siemens.com)</li>
<li>Bill Riemers (bcr@physics.purdue.edu)</li>
<li>Greg Louis (glouis@dynamicro.on.ca)</li>
</ul>
<h2><a name="s15">15. Copie supplémentaire des
avertissements -Lisez-le !</a></h2>
<p>Je décline sur le présent document toute
responsabilité d'une quelconque application de ce qui a
été exposé. Si cela échoue de n'importe
quelle manière, c'est votre problème. Ce n'est pas ma
faute. Si vous ne comprenez pas les risques qui découlent de
cette méthode, ne l'utilisez pas. Si l'emploi de cette
méthode permet à des pirates vicieux de
pénétrer dans votre système informatique et
que cela vous côte votre travail et à votre entreprise
des millions de dollars, ce n'est que de votre faute. Ne venez pas
pleurer.</p>
</body>
</html>
|