123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803 |
- <!doctype html><!-- This is a valid HTML5 document. -->
- <!-- Screen readers, SEO, extensions and so on. -->
- <html lang=fr>
- <!-- Has to be within the first 1024 bytes, hence before the <title>
- See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
- <meta charset=utf-8>
- <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
- <!-- The viewport meta is quite crowded and we are responsible for that.
- See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
- <meta name=viewport content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
- <!-- Required to make a valid HTML5 document. -->
- <title>Censure administrative du Web en France, un premier regard technique (archive) — David Larlet</title>
- <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
- <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
- <link rel="manifest" href="/manifest.json">
- <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
- <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
- <meta name="apple-mobile-web-app-title" content="David Larlet">
- <meta name="application-name" content="David Larlet">
- <meta name="msapplication-TileColor" content="#da532c">
- <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
- <meta name="theme-color" content="#f0f0ea">
- <!-- That good ol' feed, subscribe :p. -->
- <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
-
- <meta name="robots" content="noindex, nofollow">
- <meta content="origin-when-cross-origin" name="referrer">
- <!-- Canonical URL for SEO purposes -->
- <link rel="canonical" href="http://www.bortzmeyer.org/censure-francaise.html">
-
- <style>
- /* http://meyerweb.com/eric/tools/css/reset/ */
- html, body, div, span,
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
- a, abbr, address, big, cite, code,
- del, dfn, em, img, ins,
- small, strike, strong, tt, var,
- dl, dt, dd, ol, ul, li,
- fieldset, form, label, legend,
- table, caption, tbody, tfoot, thead, tr, th, td,
- article, aside, canvas, details, embed,
- figure, figcaption, footer, header, hgroup,
- menu, nav, output, ruby, section, summary,
- time, mark, audio, video {
- margin: 0;
- padding: 0;
- border: 0;
- font-size: 100%;
- font: inherit;
- vertical-align: baseline;
- }
- /* HTML5 display-role reset for older browsers */
- article, aside, details, figcaption, figure,
- footer, header, hgroup, menu, nav, section { display: block; }
- body { line-height: 1; }
- blockquote, q { quotes: none; }
- blockquote:before, blockquote:after,
- q:before, q:after {
- content: '';
- content: none;
- }
- table {
- border-collapse: collapse;
- border-spacing: 0;
- }
-
- /* http://practicaltypography.com/equity.html */
- /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
- /* https://www.filamentgroup.com/lab/js-web-fonts.html */
- @font-face {
- font-family: 'EquityTextB';
- src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
- url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
- font-weight: 300;
- font-style: normal;
- font-display: swap;
- }
- @font-face {
- font-family: 'EquityTextB';
- src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
- url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
- font-weight: 300;
- font-style: italic;
- font-display: swap;
- }
- @font-face {
- font-family: 'EquityTextB';
- src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
- url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
- font-weight: 700;
- font-style: normal;
- font-display: swap;
- }
-
- @font-face {
- font-family: 'ConcourseT3';
- src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
- url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
- font-weight: 300;
- font-style: normal;
- font-display: swap;
- }
-
-
- /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
- body {
- /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
- font-family: "EquityTextB", Palatino, serif;
- background-color: #f0f0ea;
- color: #07486c;
- font-kerning: normal;
- -moz-osx-font-smoothing: grayscale;
- -webkit-font-smoothing: subpixel-antialiased;
- text-rendering: optimizeLegibility;
- font-variant-ligatures: common-ligatures contextual;
- font-feature-settings: "kern", "liga", "clig", "calt";
- }
- pre, code, kbd, samp, var, tt {
- font-family: 'TriplicateT4c', monospace;
- }
- em {
- font-style: italic;
- color: #323a45;
- }
- strong {
- font-weight: bold;
- color: black;
- }
- nav {
- background-color: #323a45;
- color: #f0f0ea;
- display: flex;
- justify-content: space-around;
- padding: 1rem .5rem;
- }
- nav:last-child {
- border-bottom: 1vh solid #2d7474;
- }
- nav a {
- color: #f0f0ea;
- }
- nav abbr {
- border-bottom: 1px dotted white;
- }
-
- h1 {
- border-top: 1vh solid #2d7474;
- border-bottom: .2vh dotted #2d7474;
- background-color: #e3e1e1;
- color: #323a45;
- text-align: center;
- padding: 5rem 0 4rem 0;
- width: 100%;
- font-family: 'ConcourseT3';
- display: flex;
- flex-direction: column;
- }
- h1.single {
- padding-bottom: 10rem;
- }
- h1 span {
- position: absolute;
- top: 1vh;
- left: 20%;
- line-height: 0;
- }
- h1 span a {
- line-height: 1.7;
- padding: 1rem 1.2rem .6rem 1.2rem;
- border-radius: 0 0 6% 6%;
- background: #2d7474;
- font-size: 1.3rem;
- color: white;
- text-decoration: none;
- }
- h2 {
- margin: 4rem 0 1rem;
- border-top: .2vh solid #2d7474;
- padding-top: 1vh;
- }
- h3 {
- text-align: center;
- margin: 3rem 0 .75em;
- }
- hr {
- height: .4rem;
- width: .4rem;
- border-radius: .4rem;
- background: #07486c;
- margin: 2.5rem auto;
- }
- time {
- display: bloc;
- margin-left: 0 !important;
- }
- ul, ol {
- margin: 2rem;
- }
- ul {
- list-style-type: square;
- }
- a {
- text-decoration-skip-ink: auto;
- text-decoration-thickness: 0.05em;
- text-underline-offset: 0.09em;
- }
- article {
- max-width: 50rem;
- display: flex;
- flex-direction: column;
- margin: 2rem auto;
- }
- article.single {
- border-top: .2vh dotted #2d7474;
- margin: -6rem auto 1rem auto;
- background: #f0f0ea;
- padding: 2rem;
- }
- article p:last-child {
- margin-bottom: 1rem;
- }
- p {
- padding: 0 .5rem;
- margin-left: 3rem;
- }
- p + p,
- figure + p {
- margin-top: 2rem;
- }
-
- blockquote {
- background-color: #e3e1e1;
- border-left: .5vw solid #2d7474;
- display: flex;
- flex-direction: column;
- align-items: center;
- padding: 1rem;
- margin: 1.5rem;
- }
- blockquote cite {
- font-style: italic;
- }
- blockquote p {
- margin-left: 0;
- }
-
- figure {
- border-top: .2vh solid #2d7474;
- background-color: #e3e1e1;
- text-align: center;
- padding: 1.5rem 0;
- margin: 1rem 0 0;
- font-size: 1.5rem;
- width: 100%;
- }
- figure img {
- max-width: 250px;
- max-height: 250px;
- border: .5vw solid #323a45;
- padding: 1px;
- }
- figcaption {
- padding: 1rem;
- line-height: 1.4;
- }
- aside {
- display: flex;
- flex-direction: column;
- background-color: #e3e1e1;
- padding: 1rem 0;
- border-bottom: .2vh solid #07486c;
- }
- aside p {
- max-width: 50rem;
- margin: 0 auto;
- }
-
- /* https://fvsch.com/code/css-locks/ */
- p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
- font-size: 1rem;
- line-height: calc( 1.5em + 0.2 * 1rem );
- }
- h1 {
- font-size: 1.9rem;
- line-height: calc( 1.2em + 0.2 * 1rem );
- }
- h2 {
- font-size: 1.6rem;
- line-height: calc( 1.3em + 0.2 * 1rem );
- }
- h3 {
- font-size: 1.35rem;
- line-height: calc( 1.4em + 0.2 * 1rem );
- }
- @media (min-width: 20em) {
- /* The (100vw - 20rem) / (50 - 20) part
- resolves to 0-1rem, depending on the
- viewport width (between 20em and 50em). */
- p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
- font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
- margin-left: 0;
- }
- h1 {
- font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
- }
- h2 {
- font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
- }
- h3 {
- font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
- }
- }
- @media (min-width: 50em) {
- /* The right part of the addition *must* be a
- rem value. In this example we *could* change
- the whole declaration to font-size:2.5rem,
- but if our baseline value was not expressed
- in rem we would have to use calc. */
- p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
- font-size: calc( 1rem + .6 * 1rem );
- line-height: 1.5em;
- }
- p, li, pre, details {
- margin-left: 3rem;
- }
- h1 {
- font-size: calc( 1.9rem + 1.5 * 1rem );
- line-height: 1.2em;
- }
- h2 {
- font-size: calc( 1.5rem + 1.5 * 1rem );
- line-height: 1.3em;
- }
- h3 {
- font-size: calc( 1.35rem + 1.5 * 1rem );
- line-height: 1.4em;
- }
- figure img {
- max-width: 500px;
- max-height: 500px;
- }
- }
-
- figure.unsquared {
- margin-bottom: 1.5rem;
- }
- figure.unsquared img {
- height: inherit;
- }
-
-
-
- @media print {
- body { font-size: 100%; }
- a:after { content: " (" attr(href) ")"; }
- a, a:link, a:visited, a:after {
- text-decoration: underline;
- text-shadow: none !important;
- background-image: none !important;
- background: white;
- color: black;
- }
- abbr[title] { border-bottom: 0; }
- abbr[title]:after { content: " (" attr(title) ")"; }
- img { page-break-inside: avoid; }
- @page { margin: 2cm .5cm; }
- h1, h2, h3 { page-break-after: avoid; }
- p3 { orphans: 3; widows: 3; }
- img {
- max-width: 250px !important;
- max-height: 250px !important;
- }
- nav, aside { display: none; }
- }
-
- ul.with_columns {
- column-count: 1;
- }
- @media (min-width: 20em) {
- ul.with_columns {
- column-count: 2;
- }
- }
- @media (min-width: 50em) {
- ul.with_columns {
- column-count: 3;
- }
- }
- ul.with_two_columns {
- column-count: 1;
- }
- @media (min-width: 20em) {
- ul.with_two_columns {
- column-count: 1;
- }
- }
- @media (min-width: 50em) {
- ul.with_two_columns {
- column-count: 2;
- }
- }
-
- .gallery {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-around;
- }
- .gallery figure img {
- margin-left: 1rem;
- margin-right: 1rem;
- }
- .gallery figure figcaption {
- font-family: 'ConcourseT3'
- }
-
- footer {
- font-family: 'ConcourseT3';
- display: flex;
- flex-direction: column;
- border-top: 3px solid white;
- padding: 4rem 0;
- background-color: #07486c;
- color: white;
- }
- footer > * {
- max-width: 50rem;
- margin: 0 auto;
- }
- footer a {
- color: #f1c40f;
- }
- footer .avatar {
- width: 200px;
- height: 200px;
- border-radius: 50%;
- float: left;
- -webkit-shape-outside: circle();
- shape-outside: circle();
- margin-right: 2rem;
- padding: 2px 5px 5px 2px;
- background: white;
- border-left: 1px solid #f1c40f;
- border-top: 1px solid #f1c40f;
- border-right: 5px solid #f1c40f;
- border-bottom: 5px solid #f1c40f;
- }
- </style>
-
- <h1>
- <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
- Censure administrative du Web en France, un premier regard technique (archive)
- <time>Pour la pérennité des contenus liés. Non-indexé, retrait sur simple email.</time>
- </h1>
- <section>
- <article>
- <h3><a href="http://www.bortzmeyer.org/censure-francaise.html">Source originale du contenu</a></h3>
- <div class="para"><p>Prenons l'exemple de <code>http://islamic-news.info/</code>
- dont, je suppose, d'après son nom de domaine, qu'il s'agit d'un site
- de propagande <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Islamisme" title="Consultez l'article "Islamisme" de l'encyclopédie libre Wikipedia">intégriste</a></b> (je n'ai pas pu le
- consulter, pas à cause de la censure française, facile à contourner,
- mais parce qu'il semble en panne). Si on essaie de le consulter depuis
- un <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Fournisseur%20d'acc%C3%A8s%20%C3%A0%20Internet" title="Consultez l'article "Fournisseur d'accès à Internet" de l'encyclopédie libre Wikipedia">FAI</a></b> français typique, on obtient à la place
- une page Web avec une main rouge menaçante (une référence historique
- <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/La%20Main%20rouge%20(groupe%20arm%C3%A9)" title="Consultez l'article "La Main rouge (groupe armé)" de l'encyclopédie libre Wikipedia">très
- malencontreuse</a></b>, pour une décision étatique, il aurait mieux valu utiliser une
- <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Main%20de%20justice" title="Consultez l'article "Main de justice" de l'encyclopédie libre Wikipedia">main de justice</a></b>) et un texte TOUT EN
- MAJUSCULES « VOUS AVEZ ÉTÉ REDIRIGÉ
- VERS CE SITE OFFICIEL
- CAR VOTRE ORDINATEUR
- ALLAIT SE CONNECTER
- À UNE PAGE DONT
- LE CONTENU PROVOQUE
- À DES ACTES
- DE TERRORISME
- OU FAIT PUBLIQUEMENT
- L'APOLOGIE
- D'ACTES DE TERRORISME ». Comment est-ce réalisé ?</p></div>
-
- <div class="para"><p>Les différents textes officiels sur ces mesures de censure
- n'imposaient pas aux FAI une technique particulière mais les
- conditions de mise en œuvre (liste noire de <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Nom%20de%20domaine" title="Consultez l'article "Nom de domaine" de l'encyclopédie libre Wikipedia">noms de
- domaine</a></b> « Les adresses électroniques figurant sur la liste [noire] comportent soit un nom de domaine (DNS), soit un nom d'hôte caractérisé par un nom de domaine précédé d'un nom de serveur », obligation de rediriger vers « CE SITE OFFICIEL »
- situé au <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Minist%C3%A8re%20de%20l'Int%C3%A9rieur%20(France)" title="Consultez l'article "Ministère de l'Intérieur (France)" de l'encyclopédie libre Wikipedia">ministère de l'Intérieur</a></b>), fait que la
- solution la plus simple est de mettre en place un résolveur <a href="dns-menteur.html" title="Consultez ce blog à propos de "dns-menteur"">DNS menteur</a>. Ce résolveur est la machine
- qui répond normalement aux requêtes <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Domain%20Name%20System" title="Consultez l'article "Domain Name System" de l'encyclopédie libre Wikipedia">DNS</a></b> de
- l'utilisateur, en lui donnant l'<b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/adresse%20IP" title="Consultez l'article "adresse IP" de l'encyclopédie libre Wikipedia">adresse IP</a></b> du
- serveur à contacter. (Au passage, une explication plus grand public du
- DNS avait été faite <a href="http://owni.fr/2012/07/05/internet-par-la-racine/">par Andréa
- Fradin</a>.)
- Essayons avec <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Dig%20(programme%20informatique)" title="Consultez l'article "Dig (programme informatique)" de l'encyclopédie libre Wikipedia">dig</a></b> depuis une machine au
- <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Japon" title="Consultez l'article "Japon" de l'encyclopédie libre Wikipedia">Japon</a></b>, pour voir la vraie adresse IP :
- </p><pre>
- % dig +short A islamic-news.info
- 37.59.14.72
- </pre><p>
- Et depuis un FAI français (<b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Free%20(entreprise)" title="Consultez l'article "Free (entreprise)" de l'encyclopédie libre Wikipedia">Free</a></b>, mais on verra
- plus loin qu'il n'est pas le seul) :
- </p><pre>
- % dig +short A islamic-news.info
- 90.85.16.52
- </pre><p>
- L'adresse obtenue est différente, il y a bien un résolveur DNS menteur. Si on utilise un résolveur DNS
- public comme <a href="google-dns.html" title="Consultez ce blog à propos de "google-dns"">Google Public DNS</a>, on a
- également la vraie adresse IP :
- </p><pre>
- % dig @8.8.4.4 +short A islamic-news.info
- 37.59.14.72
- </pre><p>
- Est-ce bien ce trompeur <code>90.85.16.52</code> qui est le
- site officiel servant la « main rouge » ? Testons-le en
- <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Hypertext%20Transfer%20Protocol" title="Consultez l'article "Hypertext Transfer Protocol" de l'encyclopédie libre Wikipedia">HTTP</a></b>. Il y a plusieurs méthodes pour cela mais
- j'ai utilisé une des plus simples, mettre dans mon fichier local
- <code>/etc/hosts</code> l'adresse de ce site pour un nom
- bidon :
- </p><pre>
- % cat /etc/hosts
- ...
- 90.85.16.52 front-liberation-potamocheres.example
- </pre><p>
- Et, en visitant
- <code>http://front-liberation-potamocheres.example/</code>,
- j'ai bien la page à la main rouge. On peut bien sûr tester
- directement <code>http://90.85.16.52/</code> mais des astuces
- techniques utilisées par le ministère font que cela ne marche pas
- toujours si le champ <code>Host:</code> indique une adresse IP, et qu'on récupère parfois un 403
- <i class="foreign" xml:lang="en">Forbidden</i>. Si vous ne voulez pas modifier votre
- <code>/etc/hosts</code> comme moi, vous pouvez vous servir des
- noms créés par Pierre Beyssac, <code><a href="http://interieur0.eu.org/"><code>http://interieur0.eu.org/</code></a></code>, <code><a href="http://interieur1.eu.org/"><code>http://interieur1.eu.org/</code></a></code> ou <code><a href="http://interieur2.eu.org/"><code>http://interieur2.eu.org/</code></a></code>.</p></div>
-
- <div class="para"><p>Si vous voulez tester avec d'autres
- noms de domaine censurés, vous pouvez essayer
- <code>jihadmin.com</code>,
- <code>is0lamnation.blogspot.fr</code>,
- <code>mujahida89.wordpress.com</code>, ou
- <code>alhayatmedia.wordpress.com</code> (sans que j'en
- recommande leur contenu, œuvre des crapules intégristes !).</p></div>
-
- <div class="para"><p>Notez que cela veut dire que le ministère de l'Intérieur est au
- courant de mon intérêt pour <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Potamoch%C3%A8re" title="Consultez l'article "Potamochère" de l'encyclopédie libre Wikipedia">cet
- animal</a></b> : avec ce système, l'utilisateur est redirigé,
- <b class="emphasis">à son insu</b>, vers un
- serveur Web du ministère de l'Intérieur, qui aura accès, via le champ HTTP
- <code>Host:</code> (<a href="7230.html" class="rfc" title="Consultez l'analyse du RFC 7230">RFC 7230</a>, section 5.4) au nom originellement demandé. Lourde responsabilité pour le FAI
- qui, en configurant son résolveur DNS pour rediriger, fait cette
- redirection, il envoie ses clients vers un site qui saura si on aime
- les potamochères, le djihad ou les photos pédophiles.</p></div>
-
- <div class="para"><p>Voici, vue avec <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Wireshark" title="Consultez l'article "Wireshark" de l'encyclopédie libre Wikipedia">tshark</a></b>, la
- requête HTTP qu'envoie votre machine au serveur géré par le ministère
- de l'Intérieur, où on voit bien le champ <code>Host</code> :
- </p><pre>
- Internet Protocol Version 4, Src: 192.168.2.1 (192.168.2.1), Dst: 90.85.16.52 (90.85.16.52)
- Transmission Control Protocol, Src Port: 56532 (56532), Dst Port: http (80), Seq: 450, Ack: 311, Len: 468
- Hypertext Transfer Protocol
- GET / HTTP/1.0\r\n
- Host: front-liberation-potamocheres.example\r\n
- User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.4.0\r\n
- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
- Accept-Language: en-US,en;q=0.5\r\n
- Accept-Encoding: gzip, deflate\r\n
- Pragma: no-cache\r\n
- Connection: keep-alive\r\n
- \r\n
- [Full request URI: http://front-liberation-potamocheres.example/]
- </pre><p>
- On voit également que <b class="emphasis">votre</b> adresse IP source
- apparait mais on y voit moins (c'est dans le reste de la connexion)
- que votre navigateur Web envoie également bien d'autres informations
- qui peuvent vous identifier, et qui sont peut-être également
- journalisées. (Voir le <a href="https://panopticlick.eff.org/">Panopticlick</a> pour une
- impressionnante démonstration.)
- Donc, ce « SITE OFFICIEL » part d'une bonne intention (rendre la
- censure explicite, comme <a href="censure-a-dubai.html" title="Consultez ce blog à propos de "censure-a-dubai"">à Dubaï</a>)
- mais a des conséquences très dangereuses. Pour s'amuser un peu, dans
- ce monde de brutes, on peut d'ailleurs utiliser cette propriété pour
- envoyer un message bien senti à ceux qui lisent ces <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Historique%20(informatique)" title="Consultez l'article "Historique (informatique)" de l'encyclopédie libre Wikipedia">journaux</a></b>, avec
- <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/cURL" title="Consultez l'article "cURL" de l'encyclopédie libre Wikipedia">curl</a></b> (attention, cela se fera avec
- <b class="emphasis">votre</b> <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/adresse%20IP" title="Consultez l'article "adresse IP" de l'encyclopédie libre Wikipedia">adresse IP</a></b> : le but
- est de prendre position, pas de se cacher) :
- </p><pre>
- % curl -o /dev/null -H "Host: Halte a la censure administrative du Web" \
- -H "X-Charlie: Je suis Charlie" \
- http://90.85.16.52/\?$RANDOM
- </pre></div>
-
- <div class="para"><p>Une solution technique pour éviter que vos utilisateurs soient
- redirigés à leur insu vers un serveur HTTP qui va noter leur adresse
- et peut-être d'autres informations, est de bloquer les accès à ce
- serveur. Une requête <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/whois" title="Consultez l'article "whois" de l'encyclopédie libre Wikipedia">whois</a></b> montre que ce
- serveur est dans la plage <code>90.85.16.32/27</code> (notez
- que rien n'indique de lien avec le ministère de l'Intérieur, on a
- juste un nom, à <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Metz" title="Consultez l'article "Metz" de l'encyclopédie libre Wikipedia">Metz</a></b>). Pour bloquer cette
- plage, si on utilise <a href="filtrage-avec-shorewall.html" title="Consultez ce blog à propos de "filtrage-avec-shorewall"">Shorewall</a>, ce sera dans
- <code>/etc/shorewall/blacklist</code> quelque
- chose comme :
- </p><pre>
- # 2015-03-16: may do logging of visitors (French censorship system)
- 90.85.16.32/27
- </pre><p>
- Si vous utilisez directement <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Netfilter" title="Consultez l'article "Netfilter" de l'encyclopédie libre Wikipedia">Netfilter</a></b>, ce sera
- une commande du genre :
- </p><pre>
- # iptables --insert OUTPUT --destination 90.85.16.32/27 --jump REJECT
- </pre></div>
-
- <div class="para"><p>Notez que la <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Commission%20nationale%20de%20l'informatique%20et%20des%20libert%C3%A9s" title="Consultez l'article "Commission nationale de l'informatique et des libertés" de l'encyclopédie libre Wikipedia">CNIL</a></b> avait formulé <a href="http://legifrance.gouv.fr/affichTexte.do;jsessionid=?cidTexte=JORFTEXT000030236542&dateTexte=&oldAction=dernierJO&categorieLien=id">un
- avis sur ce point</a>, et noté que « [les textes officiels ne] permet ni la collecte ni l'exploitation, par l'<b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Office%20central%20de%20lutte%20contre%20la%20criminalit%C3%A9%20li%C3%A9e%20aux%20technologies%20de%20l'information%20et%20de%20la%20communication" title="Consultez l'article "Office central de lutte contre la criminalité liée aux technologies de l'information et de la communication" de l'encyclopédie libre Wikipedia">OCLCTIC</a></b>, des données
- de connexion des internautes qui seraient redirigés vers la page
- d'information du ministère de l'intérieur. Elle [la CNIL] rappelle que si des
- traitements de données à caractère personnel spécifiques étaient
- alimentés par ces données, ils devraient être soumis à l'examen
- préalable de la commission. » Bref, la CNIL ne se mouille pas. Pas
- d'avis concret, du genre « l'adresse
- IP source et le champ <code>Host:</code> ne devront
- <b class="emphasis">pas</b> être journalisés", ce qui serait la moindre
- des choses, et laisserait quand même le ministère de l'Intérieur faire des
- statistiques sur le nombre de visiteurs des sites censurés. (Note
- technique au passage, si vous utilisez <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Apache%20HTTP%20Server" title="Consultez l'article "Apache HTTP Server" de l'encyclopédie libre Wikipedia">Apache</a></b>,
- la directive pour journaliser l'adresse IP source est
- <code>%h</code> - ou <code>%a</code> - et celle pour le champ
- <code>Host:</code> est <code>%v</code>. Ce sont ces deux
- directives qu'il faudrait retirer du <code>LogFormat</code> du ministère
- pour ne pas fliquer les utilisateurs. Cf. <a href="http://httpd.apache.org/docs/2.2/fr/mod/mod_log_config.html#logformat">la
- documentation d'Apache</a>.)</p></div>
-
- <div class="para"><p>Le décret cité au début comprend plusieurs motifs de censure, et on
- note que l'hébergeur a prévu des sites Web différents, avec des
- messages différents, selon le motif. Comparez les messages en <a href="http://90.85.16.52/"><code>http://90.85.16.52/</code></a> (terrorisme), <a href="http://90.85.16.51/"><code>http://90.85.16.51/</code></a> (pédophilie) et <a href="http://90.85.16.50/"><code>http://90.85.16.50/</code></a> (le reste, non spécifié).</p></div>
-
- <div class="para"><p>Continuons avec d'autres détails techniques : le « SITE OFFICIEL »
- est sans doute en place depuis très peu de temps car <a href="dnsdb.html" title="Consultez ce blog à propos de "dnsdb"">DNSDB</a> (qui n'est <b class="emphasis">pas</b> temps réel,
- loin de là), n'a pas encore vu de noms se résolvant en
- <code>90.85.16.52</code> (DNSDB permet de chercher par le
- contenu de la réponse DNS, pas juste par le nom demandé). Il est vrai
- que DNSDB a probablement peu ou pas de capteurs en France (je n'ai rien vu
- non plus sur les bases équivalentes comme <a href="passivedns-cn.html" title="Consultez ce blog à propos de "passivedns-cn"">PassiveDNS.cn</a>.)</p></div>
-
- <div class="para"><p>Quant au type de serveur <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/HTTP" title="Consultez l'article "HTTP" de l'encyclopédie libre Wikipedia">HTTP</a></b> utilisé, il
- prétend être un <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/nginx" title="Consultez l'article "nginx" de l'encyclopédie libre Wikipedia">nginx</a></b> (dans l'en-tête HTTP
- <code>Server:</code>) mais il ressemble plutôt à un
- <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Apache" title="Consultez l'article "Apache" de l'encyclopédie libre Wikipedia">Apache</a></b> : le message d'erreur en cas d'accès
- refusé (testez <code>http://90.85.16.51/server-status</code>)
- et le fait que les <i class="foreign" xml:lang="en">Etags</i> ont le <a href="http://stackoverflow.com/a/44939/15625">format Apache</a> à
- trois champs, pas le <a href="http://trac.nginx.org/nginx/browser/nginx/src/http/ngx_http_core_module.c?rev=942283a53c289397131c9c2d1e0909af869fd4a4#L1802">format
- nginx à deux champs</a> (analyse faite par Kim-Minh Kaplan, merci).</p></div>
-
- <p><div class="para"><p>Quelle est l'ampleur du déploiement de ces DNS menteurs ? Pour
- cela, on va utiliser les <a href="https://atlas.ripe.net/">sondes
- Atlas</a>, petits ordinateurs placés un peu partout, et
- interrogeables via <a href="atlas-udm.html" title="Consultez ce blog à propos de "atlas-udm"">leur API</a>. Avec le programme <a href="https://github.com/RIPE-Atlas-Community/ripe-atlas-community-contrib/blob/master/resolve-name.py">resolve-name.py</a>,
- on va interroger les résolveurs DNS des sondes Atlas allemandes, pour
- commencer :
- </p><pre>
- % python resolve-name.py --country=DE islamic-news.info
- Measurement #1895738 for islamic-news.info/A uses 499 probes
- Probe 4407 failed (trailing junk)
- [] : 16 occurrences
- [37.59.14.72] : 677 occurrences
- Test done at 2015-03-15T16:03:37Z
- </pre><p>
- Toutes (sauf quelques-unes qui n'ont pas pu résoudre du tout le nom)
- trouvent la bonne adresse. (Il y a davantage de résultats que de
- sondes car chaque sonde fait plusieurs essais.) Essayons en France :
- </p><pre>
- % python resolve-name.py --country=FR islamic-news.info
- Measurement #1895736 for islamic-news.info/A uses 498 probes <br />
- [] : 22 occurrences
- [90.85.16.52] : 346 occurrences
- [37.59.14.72] : 403 occurrences
- Test done at 2015-03-15T15:39:15Z
- </pre><p>
- À peu près la moitié des sondes Atlas en France voient la
- censure. Notez que les sondes Atlas ne sont pas du tout
- représentatives : installées par des volontaires, sans doute dans des
- réseaux plus <i class="foreign" xml:lang="en"><b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Geek" title="Consultez l'article "Geek" de l'encyclopédie libre Wikipedia">geeks</a></b></i> que la
- moyenne, elles ont plus de chances d'avoir un résolveur local non
- menteur (voir plus loin, pour cette solution anti-censure).</p></div>
- <div class="para"><p>Par défaut, ce programme fait des requêtes de type
- <code>A</code> (demande d'une adresse
- <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/IPv4" title="Consultez l'article "IPv4" de l'encyclopédie libre Wikipedia">IPv4</a></b>). On peut lui demander ce qu'il en est
- pour les <code>AAAA</code> (demande d'une adresse
- <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/IPv6" title="Consultez l'article "IPv6" de l'encyclopédie libre Wikipedia">IPv6</a></b>). Normalement, il ne devrait pas y avoir
- de réponse (le nom n'a pas d'adresse IPv6 associé) mais un FAI a
- trouvé le moyen de mentir pour IPv6 et quel mensonge :
- </p><pre>
- % python resolve-name.py -t AAAA -c FR islamic-news.info
- Measurement #1895755 for islamic-news.info/AAAA uses 498 probes
- [] : 586 occurrences
- [::1] : 191 occurrences
- Test done at 2015-03-15T20:25:57Z
- </pre><p>
- Il renvoie, non pas vers la page du gouvernement, mais vers la machine locale...
- </p></div>
- <div class="para"><p>Et si on regarde par <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Autonomous%20System" title="Consultez l'article "Autonomous System" de l'encyclopédie libre Wikipedia">AS</a></b> et plus par pays :
- </p><pre>
- % python resolve-name.py --as=3215 islamic-news.info
- Measurement #1895737 for islamic-news.info/A uses 133 probes
- [90.85.16.52] : 189 occurrences
- [37.59.14.72] : 32 occurrences
- Test done at 2015-03-15T15:59:52Z</p>
- <p>% python resolve-name.py --as=20766 islamic-news.info <br />
- Measurement #1895739 for islamic-news.info/A uses 4 probes
- [37.59.14.72] : 5 occurrences
- Test done at 2015-03-15T16:06:34Z
- </pre><p>
- Le premier AS est celui d'<b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Orange%20(entreprise)" title="Consultez l'article "Orange (entreprise)" de l'encyclopédie libre Wikipedia">Orange</a></b>, où il semble
- que la majorité des sondes voient le résolveur légal. Le second est
- celui de <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Gitoyen" title="Consultez l'article "Gitoyen" de l'encyclopédie libre Wikipedia">Gitoyen</a></b>, dont les clients (comme
- <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/French%20Data%20Network" title="Consultez l'article "French Data Network" de l'encyclopédie libre Wikipedia">FDN</a></b>) ont plus de chances d'utiliser un
- résolveur non-menteur. (Notez toutefois que le faible nombre de sondes
- doit rendre prudent dans l'analyse.)</p></div>
- <div class="para"><p>Et <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Domain%20Name%20System%20Security%20Extensions" title="Consultez l'article "Domain Name System Security Extensions" de l'encyclopédie libre Wikipedia">DNSSEC</a></b> ? Est-ce qu'il résoudrait ce
- problème ? Non, car la validation est faite dans le résolveur. S'il
- est menteur, le fait de valider ne changera rien. Seul avantage, les gens qui valident avec DNSSEC ne verront pas la page
- d'information du ministère de l’intérieur (et ne seront pas
- enregistrés par ledit ministère) puisque le mensonge dans
- le résolveur entraînera une erreur (<code>SERVFAIL</code> :
- <code>Server Failure</code>) sur les domaines signés (ce qui
- n'est de toute façon pas le cas de <code>islamic-news.info</code>).</p></div>
- <div class="para"><p>À propos de <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/cryptographie" title="Consultez l'article "cryptographie" de l'encyclopédie libre Wikipedia">cryptographie</a></b>, notez que le site
- vers lequel on est redirigé n'a <b class="emphasis">pas</b>
- <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/HTTPS" title="Consultez l'article "HTTPS" de l'encyclopédie libre Wikipedia">HTTPS</a></b>. Cela veut dire que le djihadiste ou le
- pédophile prudent, qui n'utilise que HTTPS, ne verra jamais la jolie
- main rouge (juste un <i class="foreign" xml:lang="en">timeout</i>).</p></div>
- <div class="para"><p>Quelles solutions sont disponibles si on veut quand même voir la
- propagande <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Djihadisme" title="Consultez l'article "Djihadisme" de l'encyclopédie libre Wikipedia">djihadiste</a></b> ? La seule solution
- propre techniquement est d'avoir <a href="son-propre-resolveur-dns.html" title="Consultez ce blog à propos de "son-propre-resolveur-dns"">son propre résolveur DNS</a>. En
- attendant, on peut utiliser un résolveur non-menteur (en supposant
- qu'il ne soit pas <a href="turquie-dns-frnog.html" title="Consultez ce blog à propos de "turquie-dns-frnog"">détourné</a> et que le <a href="port53-filtre.html" title="Consultez ce blog à propos de "port53-filtre"">port 53</a> ne soit pas filtré). Dans tous les cas, il
- est sûr que la <a href="resolution-de-demain.html" title="Consultez ce blog à propos de "resolution-de-demain"">stabilité et la
- sécurité de l'Internet</a> vont en souffrir. Sinon, on peut aussi
- s'auto-radicaliser un peu plus et franchement passer à
- <b><a class="wikipedia" hreflang="fr" href="http://fr.wikipedia.org/wiki/Tor%20(r%C3%A9seau)" title="Consultez l'article "Tor (réseau)" de l'encyclopédie libre Wikipedia">Tor</a></b> pour naviguer sur le Web.</p></div></p>
- </article>
- </section>
-
-
- <nav id="jumpto">
- <p>
- <a href="/david/blog/">Accueil du blog</a> |
- <a href="http://www.bortzmeyer.org/censure-francaise.html">Source originale</a> |
- <a href="/david/stream/2019/">Accueil du flux</a>
- </p>
- </nav>
-
- <footer>
- <div>
- <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
- <p>
- Bonjour/Hi!
- Je suis <a href="/david/" title="Profil public">David Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
- Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
- </p>
- <p>
- Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
- </p>
-
- <p>
- Voici quelques articles choisis :
- <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
- <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
- <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
- <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
- <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
- <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
- <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
- <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
- <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
- <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
- <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
- <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
- <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
- <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
- <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
- et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
- </p>
- <p>
- On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
- </p>
- <p>
- Je ne traque pas ta navigation mais mon
- <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
- conserve des logs d’accès.
- </p>
- </div>
- </footer>
- <script type="text/javascript">
- ;(_ => {
- const jumper = document.getElementById('jumper')
- jumper.addEventListener('click', e => {
- e.preventDefault()
- const anchor = e.target.getAttribute('href')
- const targetEl = document.getElementById(anchor.substring(1))
- targetEl.scrollIntoView({behavior: 'smooth'})
- })
- })()
- </script>
|