This file is indexed.

/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 (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&ccedil;aise r&eacute;alis&eacute;e par Eric
Dumas, <code>dumas@freenix.fr</code>,
<code>dumas@Linux.EU.Org</code>, 1er Juillet 1997). Ce document
d&eacute;crit comme utiliser Term pour traverser un Firewall
Internet, ce que vous n'&ecirc;tes pas suppos&eacute; pouvoir
faire.</em>
<hr>
<h2><a name="s1">1. Avertissements (Important !)</a></h2>
<p>Je d&eacute;cline sur le pr&eacute;sent document toute
responsabilit&eacute; d'une quelconque application de ce qui va
suivre. Si cela &eacute;choue de n'importe quelle mani&egrave;re,
c'est votre probl&egrave;me. Ce n'est pas ma faute. Si vous ne
comprenez pas les risques qui d&eacute;coulent de cette
m&eacute;thode, ne l'utilisez pas. Si vous employez cette
m&eacute;thode et que cela permet &agrave; des pirates vicieux de
p&eacute;n&eacute;trer dans votre syst&egrave;me informatique et
que cela vous co&ucirc;te votre travail et &agrave; 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&eacute;s par leurs auteurs respectifs. Les documents
Linux HOWTO peuvent &ecirc;tre reproduits et diffus&eacute;s
totalement ou en partie, sous n'importe quel support physique ou
&eacute;lectronique du moment ou la notice l&eacute;gale se trouve
sur toute copie. Les diffusions commerciales sont autoris&eacute;es
et encourag&eacute;es. Toutefois, l'auteur souhaiterait &ecirc;tre
tenu au courant de telles diffusions.</p>
<p>Toute traduction, travail d&eacute;riv&eacute; contenant
n'importe quel document HOWTO Linux doit &ecirc;tre convert par
cette note l&eacute;gale. Ainsi, vous ne pouvez pas cr&eacute;er un
document d&eacute;riv&eacute; d'un HOWTO et ajouter des
restrictions sur sa diffusion. Des exceptions &agrave; ces
r&egrave;gles peuvent &ecirc;tre &eacute;ventuellement
accept&eacute;es dans certaines conditions. Contactez le
coordinateur des HOWTO &agrave; l'adresse qui suit.</p>
<p>En r&eacute;sumant, nous souhaitons favoriser la
diss&eacute;mination de ces informations <em>via</em> le maximum de
moyens de communications. Toutefois, nous souhaitons garder un
copyright sur ces documents et souhaiterions &ecirc;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 &agrave; gregh@sunsite.unc.edu par
courrier &eacute;lectronique ou par t&eacute;l&eacute;phone au 1
404 853 9989.</p>
<h2><a name="s3">3. Introduction</a></h2>
<p>Le programme <code>term</code> est normalement utilis&eacute;
sur une ligne s&eacute;rie ou modem, pour permettre &agrave;
plusieurs services machine-&agrave;-machine de communiquer
gr&acirc;ce &agrave; cette simple connexion s&eacute;rie.
Toutefois, il est assez utile quelquefois d'&eacute;tablir une
connexion entre deux machines communiquant par <code>telnet</code>
avec <code>term</code>.</p>
<p>L'utilisation la plus int&eacute;ressante r&eacute;side dans la
connexion de deux machines s&eacute;par&eacute;es par des
<i>firewalls</i> ou par des serveurs <i>socks</i>. Les
<i>firewalls</i> permettent l'&eacute;tablissement de connexions
&agrave; travers eux-m&ecirc;mes, typiquement en utilisant le
protocole <i>socks</i>. Ce dernier permet aux machines du
r&eacute;seau interne de se connecter &agrave; l'ext&eacute;rieur,
et oblige les utilisateurs ext&eacute;rieurs &agrave; 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&eacute;rieure
et un serveur ext&eacute;rieur. Mais, en configurant une connexion
<code>term</code>, ces restrictions peuvent &ecirc;tre
contourn&eacute;es assez facilement, au niveau de
l'utilisateur.</p>
<h2><a name="s4">4. Mise en oeuvre g&eacute;n&eacute;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&eacute; 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 &agrave;
<code>term</code>.</p>
<h2><a name="s5">5. Proc&eacute;dure
d&eacute;taill&eacute;e</a></h2>
<p>En d&eacute;tail, la marche &agrave; suivre est la suivante
:</p>
<ol>
<li>A partir d'une machine &agrave; l'int&eacute;rieur du
<i>firewall</i>, se connecter par <code>telnet</code> &agrave;
l'ext&eacute;rieur de celui-ci et s'y loger.</li>
<li>Sauf si vous &ecirc;tes sous <b>Linux</b> et que vous utilisez
le syst&egrave;me de fichiers <i>/proc</i> (voir ci-dessous),
v&eacute;rifiez que votre shell est du genre <code>sh</code>.
C.&agrave;.d. que votre shell par d&eacute;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&egrave;s s'&ecirc;tre log&eacute;, lancer la commande sur
la machine de l'ext&eacute;rieur : <code>term -r -n off
telnet</code>.</li>
</ol>
<p>Maintenant revenez &agrave; l'invite <code>telnet</code> sur la
machine locale, en utilisant le caract&egrave;re
d'&eacute;chappement <code>^]</code> (ou celui que vous voulez),
puis utilisez la commande de <code>telnet</code> pour
ex&eacute;cuter une commande shell <code>!</code> pour lancer
<code>term</code> :</p>
<pre>
telnet&gt; ! term -n on telnet &lt;&amp;3 &gt;&amp;3
</pre>
<p><i>Et voil&agrave; !!!</i> (Ndt : En fran&ccedil;ais dans le
texte).</p>
<p>(Si vous poss&eacute;dez une autre version de
<code>telnet</code>, vous risquez d'avoir &agrave; utiliser
d'autres descripteurs de fichiers que 3. C'est facile &agrave;
d&eacute;terminer en utilisant trace. Mais 3 semble fonctionner sur
tous les <code>telnet</code> de type bsd que j'ai test&eacute;s.
J'ai &eacute;galement essay&eacute; sous Sun OS 4.x et les
distributions <b>Linux</b> standard.)</p>
<p>Certains clients telnet ne poss&egrave;dent pas de
caract&egrave;re d'&eacute;chapement !. Par exemple, client telnet
diffus&eacute; avec la Slackware 3.0 en fait partie. Les sources de
ce client sont sens&eacute;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&egrave;re d'&eacute;chapement. Une
solution assez simple est de r&eacute;cup&eacute;rer ces sources et
de les recompiler. Je n'y suis malheureusement pas arriver. De
plus, si vous &ecirc;tes &agrave; l'int&eacute;rieur d'un firewall
socks, vous devrez avoir un client telnet &agrave; la SOCKS. J'ai
r&eacute;ussi &agrave; compiler un tel cient en utilisant
ftp://ftp.nec.com/pub/security/socks.cstc/socks.cstc.4.2.tar.gz ou
si vous &ecirc;tes &agrave; l'ext&eacute;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&eacute;c&eacute;dentes, vous pouvez mettre <code>telnet</code>
en sommeil avec <code>^]^z</code> , r&eacute;cup&eacute;rer son pid
et lancer :</p>
<pre>
   term -n on -v /proc/ &lt; telnetpid &gt; /fd/3 telnet
</pre>
<p>Cela ne fonctionne plus avec les noyaux 1.3 et sup&eacute;rieur,
qui ont v&eacute;rouill&eacute; certaines failles de
s&eacute;curit&eacute; pour &eacute;viter les acc&egrave;s &agrave;
des descripteurs de fichiers n'appartenant pas au
propri&eacute;taire du processus ou &agrave; ses fils.</p>
<h2><a name="s6">6. Sockets pour <code>term</code>
multiples</a></h2>
<p>C'est une bonne id&eacute;e de donner un nom explicite &agrave;
la socket de <code>term</code>. C'est l'argument donn&eacute;
&agrave; <code>telnet</code> dans la ligne de commande ci-dessus. A
moins que vous n'ayez la variable d'environnement TERMSERVER
positionn&eacute;e &agrave; <code>telnet</code>, vous pouvez
appeler les clients avec le param&egrave;tre <code>-t</code>,
c'est-&agrave;-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&eacute;rficateur de ligne sur ce m&eacute;dia. J'esp&eacute;rais
qu'il soit totalement transparent, mais cela semble impossible.
Toutefois, le seul caract&egrave;re perturbant semble &ecirc;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 &ecirc;tre am&eacute;lior&eacute; en trichant, j'ai un
d&eacute;bit de seulement 30.000 cps (caract&egrave;res par
secondes) pour une connexion longue distance &agrave;-travers un
<i>firewall</i> lent. FTP peut aller jusqu'&agrave; 100.000 cps en
suivant le m&ecirc;me chemin. Une vitesse en bps (bits par seconde)
r&eacute;aliste peut &eacute;viter quelques temps morts.</p>
<h2><a name="s8">8. Administration</a></h2>
<p>Manifestement, si vous attaquez de l'ext&eacute;rieur du
<i>firewall</i>, et que vous employez une carte avec un
identificateur s&eacute;curis&eacute; ou quelque chose de ce genre,
vous voudrez s&ucirc;rement inverser les r&ocirc;les des serveurs
de connexion et local (si vous ne comprennez pas ce que cela
signifie, vous n'&ecirc;tes peut-&ecirc;tre pas assez familier avec
<code>term</code> pour utiliser l'astuce d&eacute;crite dans ce
document d'une mani&egrave;re responsable).</p>
<h2><a name="s9">9. Securit&eacute;</a></h2>
<p>Ce n'est rien moins qu'une faille que la possibilit&eacute;
d'avoir une connexion <code>telnet</code> d&eacute;tourn&eacute;e
sur une machine non s&eacute;curis&eacute;e de l'ext&eacute;rieur.
Le premier risque suppl&eacute;mentaire provient des personnes
capables d'utiliser la socket <code>term</code> que vous avez
configur&eacute;e sans que vous soyez au courant. Donc, soyez
prudents (personnellement, je fais cela sur une machine externe que
je sais &ecirc;tre s&eacute;curis&eacute;e. Pour &ecirc;tre plus
pr&eacute;cis, un portable sous <b>Linux</b> que j'administre
moi-m&ecirc;me et qui n'accepte aucune connexion de
l'ext&eacute;rieur).</p>
<p>Une autre possibilit&eacute; est d'ajouter <code>socket
off</code> dans <code>~/.term/termrc.telnet</code> ou ajouter
<code>-u off</code>. Cela &eacute;vide que la socket soit
accessible du site distant, avec une perte de fonctionnalit&eacute;
assez mineure.</p>
<h2><a name="s10">10. Mode <code>telnet</code></a></h2>
<p>V&eacute;rifiez que le d&eacute;mon <code>telnetd</code> distant
n'est pas dans un mauvais mode sept bits. Si c'est le cas, vous
devez l'indiquer &agrave; <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&gt; 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&eacute;rification de ligne a de temps en temps
quelques probl&egrave;mes pour contr&ocirc;ler la connexion
<code>telnet</code>. Cela provient parfois du fait qu'il ne
v&eacute;rifie pas le code de retour de l'appel
<code>read()</code>. Pour des connexions r&eacute;seau, cet appel
peut retourner le code d'erreur -1 avec <i>EINTR</i> (interrompu)
ou <i>EAGAIN</i> (re&eacute;ssayer). Manifestement, cela serait une
bonne chose que cela soit v&eacute;rifi&eacute;.</p>
<p>Un certain nombre de caract&eacute;ristiques pourraient
faciliter l'utilisation de <code>term</code> sur
<code>telnet</code>. Cela provient essentiellement d'une
hypoth&egrave;se qui a influenc&eacute; le d&eacute;veloppement de
<code>term</code>, qui est que la connexion dispose d'une largeur
de bande faible, d'une latence r&eacute;duite et qu'elle est
quelque peu bruit&eacute;e.</p>
<p>Une connexion <code>telnet</code> poss&egrave;de en
g&eacute;n&eacute;ral une bande passante assez importante, une
grande latence et qui contient peu d'erreurs. Cela signifie que la
connexion pourrait &ecirc;tre mieux utilis&eacute;e si :</p>
<ol>
<li>la taille maximale de la fen&ecirc;tre &eacute;tait
augment&eacute;e, bien au-del&agrave; de la limite impos&eacute;e
par la formule <i>N_PACKETS/2 = 16</i> de <code>term</code></li>
<li>une option pour d&eacute;sactiver l'envoi et la
v&eacute;rification du <i>checksum</i> des paquets &eacute;tait
impl&eacute;ment&eacute;e</li>
<li>de plus grands paquets &eacute;taient permis lorsque cela est
appropri&eacute;.</li>
</ol>
<p>Egalement, pour am&eacute;liorer la s&eacute;curit&eacute;, il
serait sympathique d'avoir une option dans <code>term</code> pour
afficher la liste des connexions r&eacute;alis&eacute;es par la
socket dans un fichier ou sur stderr, ou bien dans les deux. Cela
permettrait de v&eacute;rifier si une connexion <code>term</code> a
&eacute;t&eacute; corrompue par des pirates situ&eacute;s du
c&ocirc;t&eacute; non s&eacute;curis&eacute; 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&eacute;seau. Malheureusement, la m&eacute;thode employ&eacute;e
ci-dessus (en utilisant la connexion r&eacute;seau que le client
<code>telnet</code> a configur&eacute; pendant que l'autre client
est en attente) ne fonctionne pas dans ce cas. Au lieu de cela, il
doit r&eacute;ellement traverser le client <code>telnet</code>,
donc ne peut r&eacute;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&eacute;s au
<code>telnet</code> en cours. Cela serait &eacute;galement utile
pour des processus de connexion automatiques, peut-&ecirc;tre
quelqu'un l'a-t-il d&eacute;j&agrave; fait.</p>
<h2><a name="s13">13. Sources</a></h2>
<p>J'ai l&eacute;g&egrave;rement consult&eacute; la
biblioth&egrave;que Term. Les d&eacute;tails ainsi que les patches
&agrave; SOCKS sont disponibles en les demandant &agrave; Steven
Danz (danz@wv.mentorg.com).</p>
<h2><a name="s14">14. Remerciement</a></h2>
<p>Mes remerciements &agrave;</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&eacute;mentaire des
avertissements -Lisez-le !</a></h2>
<p>Je d&eacute;cline sur le pr&eacute;sent document toute
responsabilit&eacute; d'une quelconque application de ce qui a
&eacute;t&eacute; expos&eacute;. Si cela &eacute;choue de n'importe
quelle mani&egrave;re, c'est votre probl&egrave;me. Ce n'est pas ma
faute. Si vous ne comprenez pas les risques qui d&eacute;coulent de
cette m&eacute;thode, ne l'utilisez pas. Si l'emploi de cette
m&eacute;thode permet &agrave; des pirates vicieux de
p&eacute;n&eacute;trer dans votre syst&egrave;me informatique et
que cela vous c&ocirc;te votre travail et &agrave; votre entreprise
des millions de dollars, ce n'est que de votre faute. Ne venez pas
pleurer.</p>
</body>
</html>