{"id":4692,"date":"2024-10-30T14:00:00","date_gmt":"2024-10-30T13:00:00","guid":{"rendered":"https:\/\/www.unicoda.com\/?p=4692"},"modified":"2024-10-28T15:12:20","modified_gmt":"2024-10-28T14:12:20","slug":"contourner-le-filtrage-web-en-entreprise","status":"publish","type":"post","link":"https:\/\/www.unicoda.com\/?p=4692","title":{"rendered":"Contourner le filtrage web en entreprise"},"content":{"rendered":"\n<p>Je suis fatigu\u00e9 et irrit\u00e9 par les politiques de filtrage web des grandes entreprises qui, pour des raisons de s\u00e9curit\u00e9 ou par manque de confiance envers leurs employ\u00e9s, appliquent un filtrage bien trop agressif sur leur trafic web de sortie.<\/p>\n\n\n\n<p>J\u2019avais rencontr\u00e9 ce probl\u00e8me sur mon premier poste en sortant d\u2019\u00e9cole. Tous les employ\u00e9s \u00e9taient d\u2019ailleurs pris pour des \u00e9tudiants, puisque l\u2019entreprise utilisait des listes de filtrages en usage dans les universit\u00e9s fran\u00e7aises. Impossible donc de consulter la carte de l\u2019enseigne de restauration du coin (Jamais compris le gain de s\u00e9curit\u00e9). Plus emb\u00eatant \u00e9tait le blocage pur et simple de gist, ou d\u2019outils similaires &#8211; ce qui est quand m\u00eame fort dommage quand, au d\u00e9tour d\u2019une discussion web sur un probl\u00e8me technique, tout le monde pointe vers une solution \u00e0 laquelle vous n\u2019avez pas acc\u00e8s.<\/p>\n\n\n\n<p>Comme d\u2019habitude dans ces cas-l\u00e0, certains employ\u00e9s ont trouv\u00e9 une solution pour simplement pouvoir faire leur travail sans qu\u2019on leur mette constamment des b\u00e2tons dans les roues. A l\u2019\u00e9poque, l\u2019int\u00e9gralit\u00e9 de mon \u00e9quipe avait configur\u00e9 son poste de travail pour que le trafic passe par le m\u00eame proxy que celui utilis\u00e9 par les machines qui h\u00e9bergeaient nos environnements de d\u00e9veloppement et de test. Proxy qui \u00e9tait pas ou peu filtr\u00e9.<\/p>\n\n\n\n<p>Je pensais na\u00efvement qu&rsquo;en presque 10 ans, les choses s\u2019\u00e9taient am\u00e9lior\u00e9es, et pourtant, je suis \u00e0 nouveau confront\u00e9 aux m\u00eames probl\u00e8mes idiots. Un exemple parmi d\u2019autres: r\u00e9cemment, le syst\u00e8me de surveillance du trafic r\u00e9seau du client chez lequel j\u2019interviens a d\u00e9cid\u00e9 de bloquer le site web de npm, \u00e0 savoir <a href=\"https:\/\/www.npmjs.com\">https:\/\/www.npmjs.com<\/a>. Plus d\u2019acc\u00e8s \u00e0 la documentation (sauf \u00e0 trouver le d\u00e9p\u00f4t des sources). Termin\u00e9 la r\u00e9cup\u00e9ration des d\u00e9pendances en local\u2026 Le blocage fut heureusement de courte dur\u00e9e, mais bon, c\u2019est rapidement une journ\u00e9e de travail perdue pour les personnes concern\u00e9es.\u00a0<\/p>\n\n\n\n<p>Autre exemple, impossible de faire des recherches sur les technologies WebGL, et tout ce qui tourne autour des mod\u00e8les 3D dans le navigateur. Pourquoi donc, me direz-vous ? O\u00f9 est le danger ? Ce coup l\u00e0, le blocage est effectu\u00e9 car ces sujets sont assimil\u00e9s au domaine du jeu vid\u00e9o et donc bloqu\u00e9s de peur que les employ\u00e9es passent leur journ\u00e9e \u00e0 jouer. Bravo, vous venez par la m\u00eame occasion de vous assurer que l\u2019entreprise n\u2019innovera pas dans ce domaine, ou avec difficult\u00e9.<\/p>\n\n\n\n<p>En fait, le probl\u00e8me est en g\u00e9n\u00e9ral tellement courant, qu\u2019on finit par apprendre que pour pouvoir travailler, une \u00e9quipe enti\u00e8re s\u2019est fait installer une connexion internet domestique pour son propre usage.<\/p>\n\n\n\n<p>Revenons \u00e0 nos moutons, filtrage excessif du trafic web: ras-le-bol. Pas de droits d\u2019admin sur ma machine, et installations limit\u00e9es au catalogue de logiciels autoris\u00e9s&#8230; Je dispose par contre d\u2019une machine virtuelle chez l\u2019un des grands fournisseurs mondiaux de cloud (il faut bien trouver une mani\u00e8re de travailler quand tout est bloqu\u00e9). La solution: utiliser cette machine comme n\u0153ud de sortie pour mon trafic web.<\/p>\n\n\n\n<p>Pour ce faire, je dispose bien entendu d\u2019une entr\u00e9e dans mon fichier .ssh\/config, de la forme:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Host proxy\n  HostName &lt;ip_machine_distante>\n  User &lt;username>\n  IdentityFile &lt;chemin_vers_le_fichier_pem><\/code><\/pre>\n\n\n\n<p>A partir de l\u00e0, je vais donc lancer un proxy SOCKS via ssh avec la commande: <code>ssh proxy -N -D 9090<\/code>.<br>O\u00f9 <code>-N<\/code> pr\u00e9cise qu\u2019aucune commande ne sera ex\u00e9cut\u00e9e sur l\u2019h\u00f4te distant et <code>-D<\/code> pour utiliser, ici le port 9090, comme port sur la machine local exposant le proxy SOCKS.<br><br>Deuxi\u00e8me \u00e9tape: t\u00e9l\u00e9charger Firefox en version portable pour disposer d\u2019un navigateur sur lequel j&rsquo;ai la main sur la configuration des param\u00e8tres de proxy: <a href=\"https:\/\/portableapps.com\/apps\/internet\/firefox_portable\">https:\/\/portableapps.com\/apps\/internet\/firefox_portable<\/a> .<\/p>\n\n\n\n<p>Enfin, configurer notre Firefox en version portable pour utiliser notre proxy SOCKS. Dans la partie pr\u00e9f\u00e9rence, rechercher le terme proxy. Choisir ensuite \u201c<em>Manual proxy configuration<\/em>\u201d, et renseigner \u201c127.0.0.1\u201d dans \u201c<em>SOCKS Host<\/em>\u201d et \u201c9090\u201d dans \u201c<em>Port<\/em>\u201d. Conserver la case \u201c<em>SOCKS v5<\/em>\u201d coch\u00e9e et valider.<\/p>\n\n\n\n<p><span id=\"docs-internal-guid-10fe9933-7fff-f973-294a-b1081fa6b148\" style=\"font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;\"><span style=\"border:none;display:inline-block;overflow:hidden;width:602px;height:668px;\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"668\" style=\"margin-left:0px;margin-top:0px;\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfs7uNBMuVbJN2XAMmUAjuXsfuOE91syX4kX1i_9htGxgmi-F3pTWDN0LcBMZ0Cpi0LGoJDkLEFb4-k8Eimkaw4QWE7khgHTYyzuGArqhxkbhXZObIRVpnn1uUQzJ6usTh-hWn4l1zf8A-1jo9yMMSxJ-zB?key=fJwfBo6Y7ylHtRWCMastfw\"><\/span><\/span><\/p>\n\n\n\n<p>Enfin, v\u00e9rifier que l\u2019url pr\u00e9c\u00e9demment bloqu\u00e9e est accessible. <\/p>\n\n\n\n<p>Derni\u00e8re \u00e9tape, aller chercher un caf\u00e9 et le siroter en parcourant un web non filtr\u00e9. Hourra !<\/p>\n\n\n\n<p>Pour essayer de simplifier le lancement du proxy, j\u2019ai cr\u00e9\u00e9 2 scripts: <code>proxy.bat<\/code> et <code>start_proxy.sh<\/code>. <code>proxy.bat<\/code> me sert de point d\u2019entr\u00e9e pour lancer le script principal <code>start_proxy.sh<\/code> via git bash, simplement en cliquant sur le fichier dans l\u2019explorateur Windows.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"C:\\Program Files\\Git\\bin\\bash.exe\" --login -i -c \"C:\/Users\/&lt;username>\/APPS\/start_proxy.sh\"\n# pause<\/code><\/pre>\n\n\n\n<p>Le script<code> start_proxy.sh<\/code> est quant \u00e0 lui une copie inspir\u00e9e d\u2019un script partag\u00e9 au d\u00e9tour d\u2019un <a href=\"https:\/\/gist.github.com\/scy\/6781836?permalink_comment_id=2777535#gistcomment-2777535\">gist<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#! \/bin\/bash\n# Inspired by: https:\/\/gist.github.com\/scy\/6781836?permalink_comment_id=2777535#gistcomment-2777535\n\nset -eu\nSOCKS_PROXY_PORT=9090\nHOST=proxy\n\nsocket=$(mktemp -t deploy-ssh-socket.XXXXXX)\nrm ${socket} # delete socket file so path can be used by ssh\n\nexit_code=0\n\ncleanup () {\n    # Stop SSH port forwarding process, this function may be\n    # called twice, so only terminate port forwarding if the\n    # socket still exists\n    if &#91; -S ${socket} ]; then\n        echo\n        echo \"Sending exit signal to SSH process\"\n        ssh -S ${socket} -O exit ${HOST}\n    fi\n    exit $exit_code\n}\n\ntrap cleanup EXIT ERR INT TERM\n\necho \"Starting SOCKS proxy on port ${SOCKS_PROXY_PORT}\"\n# https:\/\/mpharrigan.com\/2016\/05\/17\/background-ssh.html\n# Start SSH port forwarding process\nssh -M -S ${socket} -fNT -o ExitOnForwardFailure=yes -D ${SOCKS_PROXY_PORT} ${HOST}\n\n# -f : Run in the background before command execution.\n# -N : Do not execute a remote command; this is useful for just forwarding ports.\n# -T : Disable pseudo-tty allocation.\n# -S &lt;socketname>: Use a control socket.\n# -M : Put control socket in master mode.\n# ExitOnForwardFailure : if set to \"yes\", the connection shall be terminated \n#   if ssh cannot set up all requested dynamic, tunnel, local, and remote port forwardings,\n#   (e.g. if either end is unable to bind and listen on a specified port).\n# -D &lt;port>: Port on which to expose on the local machine.\n\nssh -S ${socket} -O check ${HOST}\n# -O check,exit : Control command\n\n# launching a shell here causes the script to not exit and allows you\n#   to keep the forwarding running for as long as you want.\n#   I also like to customise the prompt to indicate that this isn't a normal shell.\n\nbash --rcfile &lt;(echo 'PS1=\"\\nwith-ports> \"')<\/code><\/pre>\n\n\n\n<p>Le tout fonctionne plut\u00f4t, avec parfois une perte de connexion en revenant de la pause d\u00e9jeuner, apr\u00e8s une interruption trop longue de la connexion internet, ou une p\u00e9riode d\u2019inactivit\u00e9. Dans cette situation, je ferme simplement la fen\u00eatre \u201ccmd\u201d o\u00f9 tournait le script, et je relance le tout par un double clic sur mon premier fichier.<\/p>\n\n\n\n<p>Simple, efficace et surtout fonctionnel.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je suis fatigu\u00e9 et irrit\u00e9 par les politiques de filtrage web des grandes entreprises qui, pour des raisons de s\u00e9curit\u00e9 ou par manque de confiance envers leurs employ\u00e9s, appliquent un filtrage bien trop agressif sur leur trafic web de sortie. J\u2019avais rencontr\u00e9 ce probl\u00e8me sur mon premier poste en sortant d\u2019\u00e9cole. Tous les employ\u00e9s \u00e9taient &hellip; <a href=\"https:\/\/www.unicoda.com\/?p=4692\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;Contourner le filtrage web en entreprise&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40],"tags":[608,607,80,606,609],"class_list":["post-4692","post","type-post","status-publish","format-standard","hentry","category-info","tag-entreprise","tag-filtrage","tag-proxy","tag-socks","tag-web"],"_links":{"self":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/4692","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4692"}],"version-history":[{"count":2,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/4692\/revisions"}],"predecessor-version":[{"id":4694,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/4692\/revisions\/4694"}],"wp:attachment":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4692"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4692"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4692"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}