Browse Source

Refactor articles

master
Quentin 4 months ago
parent
commit
98c12bdc43
Signed by: quentin GPG Key ID: A98E9B769E4FF428
  1. 1
      Gemfile
  2. 45
      _config.yml
  3. 8
      _layouts/default.html
  4. BIN
      _posts/.2018-04-22-bzhctf18.md.swp
  5. 11
      _posts/2012-05-06-rsoudre-vos-problmes-de-connexion-internet.md
  6. 5
      _posts/2013-01-08-tout-sur-les-serveurs-teeworlds-partie-1.markdown
  7. 4
      _posts/2013-07-11-installer-icescrum-7.markdown
  8. 12
      _posts/2013-07-25-utiliser-casperjs.markdown
  9. 6
      _posts/2014-04-30-l2tp.markdown
  10. 6
      _posts/2014-10-15-web.markdown
  11. 5
      _posts/2015-10-02-ansible.markdown
  12. 22
      _posts/2015-10-09-dns.markdown
  13. 39
      _posts/2015-10-13-h5ai-cve-postmortem.markdown
  14. 3
      _posts/2016-01-15-arrivee-au-canada.md
  15. 3
      _posts/2016-01-17-premiers-jours-a-montreal.md
  16. 5
      _posts/2016-04-19-quelques-bugs-etonnants.md
  17. 89
      _posts/2016-05-19-prenons-du-recul.md
  18. 18
      _posts/2016-06-10-la-radioactivite.md
  19. 14
      _posts/2016-06-10-sait-on-encore-construire-une-centrale-nucleaire.md
  20. 3
      _posts/2016-07-01-val-d-or.markdown
  21. 38
      _posts/2016-07-02-jenkins-pipeline.markdown
  22. 84
      _posts/2016-12-17-iperf.md
  23. 101
      _posts/2016-12-18-tignes.md
  24. 6
      _posts/2017-01-04-cloner-vers-un-disque-plus-petit.md
  25. 4
      _posts/2017-01-22-json.md
  26. 7
      _posts/2017-02-09-docker-swarm.md
  27. 5
      _posts/2017-02-10-dhcp-gateways.md
  28. 21
      _posts/2017-02-12-commandes-utiles.md
  29. 7
      _posts/2017-02-25-battlenet-probleme-transfert-donnees.md
  30. 100
      _posts/2017-05-03-liveusb.md
  31. 61
      _posts/2017-05-08-backups.md
  32. 21
      _posts/2017-06-25-ndh.md
  33. 54
      _posts/2017-08-22-hardening-lxc-containers.md
  34. 2
      _posts/2017-11-25-upgrade-fedora-online.md
  35. 3
      _posts/2017-11-28-affichages-inertes.md
  36. 2
      _posts/2018-01-15-recharger-carte-korrigo-avec-fedora.md
  37. 3
      _posts/2018-04-22-bzhctf18.md
  38. 16
      _posts/2018-05-20-build-a-rpm-package-and-publish-it-on-copr.md
  39. 3
      _posts/2018-07-01-ndh16.md
  40. 3
      _posts/2019-02-10-manette-xbox-reparation.md
  41. 3
      _posts/2019-05-31-installer-cura-4.md
  42. 5
      _posts/2019-08-06-protocole-shoutcast.md
  43. 5
      _posts/2019-09-04-comprendre-et-installer-ubuntu.md
  44. 9
      _posts/2020-06-20-freeture-sur-la-ligne.md
  45. 4
      _posts/2021-03-05-latex-dvi-integrer-image.md
  46. 4
      _posts/2021-07-12-chroniques-administration-synapse.md
  47. 1
      assets/css/style.css
  48. BIN
      assets/video/tignes-01.mp4
  49. BIN
      assets/video/tignes-01.png
  50. BIN
      assets/video/tignes-01.webm
  51. BIN
      assets/video/tignes-02.mp4
  52. BIN
      assets/video/tignes-02.png
  53. BIN
      assets/video/tignes-02.webm
  54. BIN
      assets/video/tignes-03.mp4
  55. BIN
      assets/video/tignes-03.png
  56. BIN
      assets/video/tignes-03.webm
  57. BIN
      assets/video/tignes-04.mp4
  58. BIN
      assets/video/tignes-04.png
  59. BIN
      assets/video/tignes-04.webm
  60. 83
      index.html

1
Gemfile

@ -1,7 +1,6 @@
source 'https://rubygems.org'
gem 'jekyll-sitemap'
gem 'jekyll', ">=4.2.0"
gem 'jekyll-paginate'
gem 'rouge'
gem 'redcarpet'
gem 'racc'

45
_config.yml

@ -1,40 +1,23 @@
name: "Quentin Dufour"
description: "Use toasters to decentralize the net"
meta_description: "Quentin Dufour. Use toasters to decentralize the net"
shareurl: "https://quentin.dufour.io"
baseurl: "/"
aboutPage: true
author: 'Quentin Dufour'
url: 'https://quentin.dufour.io'
description: "Blog d'un ingénieur en informatique et libriste convaincu, avec du code, du linux, du système et du réseau."
markdown: kramdown
highlighter: rouge
paginate: 20
domain_name: 'https://quentin.dufour.io'
url: 'https://quentin.dufour.io'
# Details for the RSS feed generator
url: 'https://quentin.dufour.io'
author: 'Quentin Dufour'
authorTwitter: 'superboum'
permalink: /blog/:year-:month-:day/:title/
defaults:
-
scope:
path: "" # empty string for all files
type: pages
values:
layout: default
-
scope:
path: "" # empty string for all files
type: posts
values:
layout: post
- scope:
path: "" # empty string for all files
type: pages
values:
layout: default
- scope:
path: "" # empty string for all files
type: posts
values:
layout: post
plugins:
- jekyll-sitemap
- jekyll-paginate
- jekyll-sitemap

8
_layouts/default.html

@ -2,11 +2,11 @@
<html lang="fr">
<head>
<meta charset="utf-8"/>
<title>Quentin Dufour</title>
<title>{{ site.name }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="Quentin Dufour">
<meta name="description" content="Quentin Dufour, blog d'un ingénieur en informatique et libriste convaincu, avec du code, du linux, du système et du réseau.">
<link rel="alternate" type="application/rss+xml" title="Quentin Dufour" href="/feed.xml">
<meta name="author" content="{{ site.author }}">
<meta name="description" content="{{ site.name }}. {{ site.description }}">
<link rel="alternate" type="application/rss+xml" title="{{ site.name }}" href="/feed.xml">
<link rel="stylesheet" href="/assets/css/style.css">
<link rel="stylesheet" href="/assets/css/typo.css">
<link rel="shortcut icon" href="/assets/images/favicon.ico">

BIN
_posts/.2018-04-22-bzhctf18.md.swp

Binary file not shown.

11
_posts/2012-05-06-rsoudre-vos-problmes-de-connexion-internet.md

@ -2,11 +2,10 @@
layout: post
slug: resoudre-vos-problemes-de-connexion-internet
status: published
title: Résoudre vos problèmes de connexion internet
title: Optimiser son ADSL
description: Prise téléphone, condensateur et court-circuits
disqus: true
categories:
- internet
category: operation
tags:
---
@ -14,16 +13,16 @@ tags:
<p>Vous avez des problèmes avec votre connexion internet, divers bugs, du genre :
"ma box plante", "Je perds ma connexion internet tous les soirs" ou encore "Mon débit est limité".
Vous n'êtes pas le seul, j'ai également vécu cette situation. Voilà quelques solutions qui vous aideront (peut-être).</p>
<h3>Ma connexion internet n'est pas stable</h3>
<h2>Ma connexion internet n'est pas stable</h2>
<p>Vous perdez régulièrement votre connexion internet ? Le soir en particulier ? Il s'agit de pertes de synchronisations. Ces dernières proviennent en général de la mauvaise qualité de réception du signal. Soit de votre installation personnelle, soit de l'installation France Telecom. Dans le deuxième cas il ne reste pas grand chose à faire.</p>
<p>Il est préférable de brancher votre routeur sur la prise téléphonique principale de votre maison et de limiter au maximum les dérivations qui partent de cette dernière qui pourraient la parasiter.</p>
<p>Vérifiez d'abord votre prise téléphonique. Est-elle oxydée à l'intérieur ? Et les branchements fait dessus sont-ils correctement réalisés ? Votre prise ne nécessite que deux fils de branché, le blanc et le gris. Faites attention aux branchements qui en partent. Vous pouvez essayer en ne laissant que ces deux fils branchés.</p>
[![Schéma prise téléphonique](/assets/images/posts/telephone-01.png)](/assets/images/posts/telephone-01.png)
*Source : [Cablage prise de téléphone en T - josdblog](http://gurau-audibert.hd.free.fr/josdblog/2012/06/cablage-prise-telephone-en-t/)*
<p>Faites attention à l'âge de votre prise, car les contacts entre la prise et la fiche sont très mauvais. Les connecteurs de la prise femelle sont trop souples, et si il ne sont pas absolument neufs et pas oxydés, vous tenez surement la cause de vos déconnexions intempestives !</p>
<h3>Mon débit est limité (abonnés Orange uniquement)</h3>
<h2>Mon débit est limité (abonnés Orange uniquement)</h2>
<p>Si votre débit est inférieur à celui auquel vous êtes éligible, il est peut-être bridé par un DLM (Dynamic Line Management) mis en place automatiquement par Orange. Ce dernier mesure la qualité de votre ligne, et si il considère qu'elle n'est pas assez stable, il bride le débit de votre ligne (entre autre). Si vous considérez que vous n'en avez pas besoin, vous pouvez formuler une demande afin que ce bridage soit retiré <a href="http://assistance.orange.fr/contact_dlm.php">à partir de ce formulaire.</a></p>
<h3>Compléments et sources</h3>
<h2>Compléments et sources</h2>
<a href="http://telephoniste.free.fr/circuits/priseT/">Informations sur les prises téléphoniques</a><br/>
<a href="http://assistance.orange.fr/vos-questions-sur-le-dlm-4312.php">Explication du DLM par Orange</a>

5
_posts/2013-01-08-tout-sur-les-serveurs-teeworlds-partie-1.markdown

@ -2,11 +2,10 @@
layout: post
slug: tout-sur-les-serveurs-teeworlds-partie-1
status: published
title: Créer un serveur Teeworlds (partie 1)
title: Créer un serveur Teeworlds
description: Un serveur Teeworlds basique
disqus: true
categories:
- reseau
category: operation
tags:
- teeworlds
- jeu

4
_posts/2013-07-11-installer-icescrum-7.markdown

@ -4,9 +4,7 @@ slug: installer-icescrum-7
status: published
title: Installer Icescrum
description: Gestion de projet agile self-hosted
disqus: true
categories:
- web
category: operation
tags:
- projet
- developpement

12
_posts/2013-07-25-utiliser-casperjs.markdown

@ -2,11 +2,9 @@
layout: post
slug: utiliser-casperjs
status: published
title: CasperJS
title: Aperçu de CasperJS
description: Du test fonctionnel au web scraping
disqus: true
categories:
- web
category: developpement
tags:
- projet
- developpement
@ -33,11 +31,11 @@ casper.run(function() {
```
##Fonction 1
## Fonction 1
Ce script se charge de se rendre sur la page de connexion, vérifie le titre de la page puis entre un identifiant et un mot de passe et enfin valide.
##Fonction 2
## Fonction 2
La seconde fonction vérifie que la page contient bien ce qui est attendu après la connexion. Ici, un titre h1 contenant le texte Tableau de bord.
##Fonction 3
## Fonction 3
Enfin cette dernière fonction indique que le test est fini. Elle affiche les statistiques sur le test.

6
_posts/2014-04-30-l2tp.markdown

@ -2,11 +2,9 @@
layout: post
slug: l2tp
status: published
title: Tunnel L2TP
title: L2TP sur Linux
description: Créer un tunnel avec la commande ip
disqus: true
categories:
- linux
category: operation
tags:
- projet
---

6
_posts/2014-10-15-web.markdown

@ -2,11 +2,9 @@
layout: post
slug: web
status: published
title: L'histoire des technos du web en 2 minutes
title: Un historique du web
description: Aperçu rapide des lib et frameworks web
disqus: true
categories:
- web
category: developpement
tags:
---

5
_posts/2015-10-02-ansible.markdown

@ -2,11 +2,10 @@
layout: post
slug: ansible
status: published
title: Automatisez votre déploiement avec Ansible
title: Automatiser avec Ansible
description: Un fichier pour les gouverner tous
disqus: true
categories:
- web
category: developpement
tags:
---

22
_posts/2015-10-09-dns.markdown

@ -1,22 +0,0 @@
---
layout: post
slug: dns
status: draft
title: Comprendre et utiliser les noms de domaine
description: Donnez un petit nom à votre adresse IP
categories:
disqus: true
tags:
---
Les noms de domaine, ou domain name sont utilisés de manière intensive sur internet. Ils sont définit à travers le protocole DNS, pour Domain Name System.
## À quoi ça sert ?
## Comment ça fonctionne ?
## Et concrètement, comment ça marche ?
## Mon adresse IP change tout le temps !

39
_posts/2015-10-13-h5ai-cve-postmortem.markdown

@ -1,12 +1,11 @@
---
layout: post
slug: h5ai-cve-postmortem
status: draft
sitemap: false
title: Faille dans h5ai, mon postmortem
status: published
sitemap: true
title: Une CVE dans h5ai
description: Et maintenant l'attaque à l'indonésienne.
categories:
- sys
category: securite
tags:
---
@ -20,19 +19,7 @@ J'ai découvert l'intrusion dans les règles de l'art : en me rendant sur l'inde
![Capture d'écran](/assets/images/posts/h5ai-index.png)
Je me connecte donc rapidement en SSH sur mon serveur, pour voir l'étendu des dégats. Nous sommes alors le vendredi 9 octobre. Les fichiers sont là depuis 24 septembre, soit 15 jours. Mazette, ça fait un bout de temps que personne n'est venu ici. Je désactive PHP (`sudo service php5-fpm stop`), m'empresse de regarder les logs nginx, de copier tout les fichiers incriminés dans un dossier ailleurs et de mettre à jour h5ai.
Voilà les fichiers et dossiers que j'ai identifié comme malicieux :
```
drwxr-xr-x 2 www-data www-data 4,0K sept. 24 04:31 dm
drwxr-xr-x 2 www-data www-data 80K sept. 24 04:31 DM
-rw-r--r-- 1 www-data www-data 2,1K sept. 24 04:53 index.html
-rw-r--r-- 1 www-data www-data 105K sept. 24 04:54 pro_mailer.php
-rw-r--r-- 1 www-data www-data 122K sept. 24 04:31 we.php
```
Dans dm et DM se trouvent des liens symboliques cassés. Il serait intéressant d'étudier le fonctionnement de we.php pour comprendre leur utilité. index.html est la page de revendication, we.php est une interface web (non protégée) pour controler le serveur, et pro_mailer.php est utilisé pour envoyer facilement du spam.
Je me connecte donc rapidement en SSH sur mon serveur, pour voir l'étendu des dégats. Nous sommes alors le vendredi 9 octobre. Les fichiers sont là depuis 24 septembre, soit 15 jours. Mazette, ça fait un bout de temps que personne n'est venu ici. Je désactive PHP (`sudo service php5-fpm stop`), m'empresse de regarder les logs nginx, de copier tout les fichiers incriminés dans un dossier ailleurs et de mettre à jour h5ai. J'ai pu identifier plusieurs fichiers et dossiers malveillants dans mon racine web.
## Informations sur la CVE
@ -52,9 +39,9 @@ Après cet épisode, on peut trouver un message bien discret sur le site de h5ai
Pour ceux qui seraient intéressé par l'exploit, vous pouvez en trouver un sur [Exploit-DB](https://www.exploit-db.com/exploits/38256/). (Bien évidemment il est a utiliser uniquement pour tester votre installation...)
## Le fichier we.php
## Un RAT PHP
Le fichier we.php contient une interface, permettant de prendre le contrôle du serveur, et de nombreux outils. On citera, entre autres, la possibilité de naviguer dans les fichiers du serveur, d'executer des commandes, d'automatiser l'ajout d'un compte dans un Wordpress ou un Joomla, etc.
Le RAT PHP contient une interface, permettant de prendre le contrôle du serveur, et de nombreux outils. On citera, entre autres, la possibilité de naviguer dans les fichiers du serveur, d'executer des commandes, d'automatiser l'ajout d'un compte dans un Wordpress ou un Joomla, etc.
On notera que le code n'est pas directement en clair dans le fichier, il est compressé en gzip puis converti en base 64. L'ensemble est ensuite décodé puis passé dans un eval qui va interpréter le code.
@ -62,9 +49,9 @@ On notera que le code n'est pas directement en clair dans le fichier, il est com
On remarquera que la "team" qui a réalisé ce logiciel est indonésienne et se nomme "D'MASTERPIECE".
## Le fichier pro_mailer.php
## Le mailer
Le fichier pro_mailer.php quant à lui n'est pas obfusqué. Il est d'ailleurs écrit dans un PHP plus propre (en utilisant des classes). On remarquera le soin apporté au design...
Le fichier PHP du mailer quant à lui n'est pas obfusqué. Il est d'ailleurs écrit dans un PHP plus propre (en utilisant des classes). On remarquera le soin apporté au design...
![Capture d'écran](/assets/images/posts/h5ai-pm.png)
@ -72,13 +59,13 @@ Son seul objectif est d'utiliser le serveur email de la cible pour envoyer des e
## Retour sur l'attaque
Afin d'accéder au serveur, nos pirates revendiquant le nom de "Dragon Net" ont exploité la faille de sécurité dans h5ai pour envoyé trois fichiers : index.html (leur revendication), we.php et pro_mailer.php.
Afin d'accéder au serveur, nos pirates revendiquant le nom de "Dragon Net" ont exploité la faille de sécurité dans h5ai pour s'en servir comme base avancée pour des attaques (mailer et RAT).
Ils ont ensuite utilisé we.php pour fouiller dans les fichiers du site et uploadé différents fichiers, entre autre un `.ssh/known_hosts` (mais c'est tout côté SSH).
Ils ont ensuite utilisé le RAT pour fouiller dans les fichiers du site et uploadé différents fichiers, entre autre un `.ssh/known_hosts` (mais c'est tout côté SSH).
Ils se targuent de se contenter de publier leurs revendications. Et en effet, ils semblent n'avoir rien fait d'autre. Cependant, on peut supposer que leur intentions ne sont pas aussi louables qu'ils le prétendent : pourquoi ne pas avoir directement envoyé leur fichier index.html ? we.php et pro_mailer.php sont inutiles dans notre cas...
Sur leur défaçage, ils se targuent de se contenter de publier leurs revendications. Et en effet, ils semblent n'avoir rien fait d'autre. Cependant, on peut supposer que leur intentions ne sont pas aussi louables qu'ils le prétendent : pourquoi ne pas avoir directement envoyé leur fichier index.html ? Le RAT et le mailer semblent avoir été inutiles dans notre cas...
On notera d'ailleurs que la team ayant réalisé l'attaque n'est pas la même que celle qui a créé le fichier we.php ou encore pro_mailer.php. Il y a un marché pour tout...
On notera d'ailleurs que la team ayant réalisé l'attaque n'est pas la même que celle qui a créé les outils. Il y a un marché pour tout...
Faute d'informations supplémentaires je suppose qu'ils ont prévu ces fichiers "au cas où" ils aient besoin d'un serveur.

3
_posts/2016-01-15-arrivee-au-canada.md

@ -4,8 +4,7 @@ slug: arrivee-au-canada
status: published
title: Arrivée au Canada
description: Et départ de France
disqus: true
categories: canada, voyage
category: divers
tags:
---

3
_posts/2016-01-17-premiers-jours-a-montreal.md

@ -4,8 +4,7 @@ slug: premiers-jours-a-montreal
status: published
title: Premiers jours à Montréal
description: Avec un soupçon de jet lag
categories: canada, voyage
disqus: true
category: divers
tags:
---

5
_posts/2016-04-19-quelques-bugs-etonnants.md

@ -2,10 +2,9 @@
layout: post
slug: quelques-bugs-etonnants
status: published
title: Quelques bugs étonnants
title: Florilège de bugs
description: Et l'histoire qui va avec !
disqus: true
categories: linux
category: operation
tags:
---

89
_posts/2016-05-19-prenons-du-recul.md

@ -1,89 +0,0 @@
---
layout: post
slug: prenons-du-recul
status: draft
sitemap: false
title: Prenons du recul
disqus: true
description: État d'urgence, manifestations, violences policières et casseurs
categories:
- politique
tags:
---
Aujourd'hui, la France va mal, plus mal que jamais. Attentats, puis état d'urgence. D'abord temporaire, puis renouvelé une fois, deux fois, et peut-être la pour longtemps. Après tout, le plan vigipirate n'a jamais disparu, lui. Le chômage monte, on propose une réforme du code du travail, des manifestations éclatent, des rassemblements se créer. On ne comprend pas, ils n'ont pas de chef. Et puis ce sont des casseurs qui ne respectent rien.
Cette petite musique des "catastrophes" quotidiennes on l'entend tous les jours sur TF1, France 2, France 3, BFM... Rien ne semble pouvoir les arrêter. Enfin si, on vous propose des solutions rassurantes. Plus de sécurité, plus de surveillance et plus de répression. Alors qu'attendons-nous ? A moins que...
## A moins que les manifestations dégénèrent quand on le décide
Comme introduction, je vais commencer avec les vidéastes de "Osons Causer". Ils se sont fait connaitre sur Youtube, et sont engagés dans le mouvement Nuit Debout. La vidéo suivante résume rapidement les paragraphes qui suivent :
<iframe width="560" height="315" src="https://www.youtube.com/embed/2aaZ3pDbd9c?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
Sur Mediapart, il a été relevé plusieurs fois que les décisions prises à Rennes étaient incohérentes et menées à des débordements :
> « C’est l’État qui organise l’escalade, juge un syndicaliste de Sud Santé, et ce par l’usage général et immodéré de la force. Sans raison, sur des gens tombés à terre. À l’hôpital de Rennes, on a eu un afflux de personnes blessées au visage. Et il y a une masse de gens qui ne veulent pas déposer plainte contre la police. »
Source : [Il faut interdire à Bernard Cazeneuve de se manifester - Mediapart](https://www.mediapart.fr/journal/france/160516/il-faut-interdire-bernard-cazeneuve-de-se-manifester?page_article=2)
Alexandre Langlois, secrétaire général de la CGT Police quant à lui annonce via des propos recueillis sur le site Reporterre :
> Les ordres ne sont pas toujours adaptés, poursuit M. Langlois : « Encercler une foule, ça ne devrait plus exister. C’est dans les manuels et même les livres d’histoire : toutes les manifestations qui ont dérapé, c’est à cause de nasses dont les gens ne pouvaient plus sortir. » Mais là encore, la responsabilité des policiers est limitée, juge le syndicaliste, car « les collègues sur le terrain n’ont pas de vision d’ensemble. Si les donneurs d’ordres leur demandent de bloquer une rue, ils ne savent pas si toutes les autres rues sont bloquées. »
Source : [Le dialogue inattendu entre policiers et manifestants de nuit debout - Reporterre](http://reporterre.net/Le-dialogue-inattendu-entre-policiers-et-manifestants-de-Nuit-debout)
On ne pourra s'empêcher au [triste épisode la station de métro Charonne](https://fr.wikipedia.org/wiki/Affaire_de_la_station_de_m%C3%A9tro_Charonne), qui s'est déroulée le 8 février 1962. Les policiers avaient alors encerclés les manifestants, qui ont alors essayés de se réfugier dans les stations de métro. 8 personnes y ont trouvé la mort.
Pour approfondir le sujet, Mediapart a organisé un débat sur les violences policières, avec entre autre des manifestants, des journalistes de Mediapart, et le secrétaire général de la CGT Police :
<iframe width="560" height="315" src="https://www.youtube.com/embed/-wKG-YqHFHo?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
## A moins qu'on laisse faire les casseurs
On entend beaucoup parler des casseurs, et on aime faire l'amalgame avec les casseurs. Oui, mais ce n'est pas si simple...
> Pour Alexandre Langlois, si on trouve « toujours des gens irresponsables », les principaux coupables sont « les donneurs d’ordres ». « Les groupes violents sont clairement identifiés avant les manifestations. Pourtant, rien n’est fait, dénonce-t-il. Parfois, nous voyons des manifestants s’équiper de casques et d’armes juste devant nous, et aucun ordre n’arrive. Le 8 avril, on a poussé la compagnie de CRS pour que des personnes violentes puissent rejoindre la place. Évidemment, le soir même, c’est parti en vrac. Après, tout ceci est instrumentalisé au niveau politique.
Source : [Le dialogue inattendu entre policiers et manifestants de nuit debout - Reporterre](http://reporterre.net/Le-dialogue-inattendu-entre-policiers-et-manifestants-de-Nuit-debout)
Au delà de la CGT, le syndicat majoritaire chez les forces de l'ordre, Alliance se pose des questions sur la gestion des évènements. Ce dernier étant pourtant connu pour être à droite, voire extrème droite.
> Même le syndicat de police Alliance, qui appelle à manifester mercredi 18 mai place de la République « contre la haine anti-flics », commence à s’interroger sur les desseins de Bernard Cazeneuve. « L’État doit prendre ses responsabilités, ne pas nous laisser attendre des heures face à des casseurs identifiés, expliquait il y a quelques jours sur France Info le responsable de ce syndicat, Jean-Claude Delage. Je pense que ça vise aussi à discréditer le mouvement social et syndical parce qu’évidemment, lorsque des syndicalistes manifestent contre un texte et qu’il y a des casseurs qui cassent tout dans le quartier, que les riverains sont exaspérés et que la police ne peut pas rapidement intervenir, eh bien, ça discrédite aussi quelque part le mouvement social. »
Source : [Il faut interdire à Bernard Cazeneuve de se manifester - Mediapart](https://www.mediapart.fr/journal/france/160516/il-faut-interdire-bernard-cazeneuve-de-se-manifester)
Ce à quoi Mediapart proposera comme analyse :
> Le ministre de l’intérieur peut en faire un calcul politique de court terme : « criminaliser » un large mouvement social en réduisant des dizaines de milliers de manifestants à quelques centaines de « casseurs », et décourager les opposants. Cela peut hypnotiser les journaux télévisés quelque temps… Mais à terme, ce pouvoir prend un risque majeur : celui d’un accident grave.
Source : [Il faut interdire à Bernard Cazeneuve de se manifester - Mediapart](https://www.mediapart.fr/journal/france/160516/il-faut-interdire-bernard-cazeneuve-de-se-manifester)
## A moins qu'on se trompe de problème
Sur France Inter, la chroniqueuse Nicole Ferroni partage les différences de motivations entre un comissaire de police et un policier, ainsi que la précarité de ces derniers.
> Après tout, c'est comme si on interviewait un ministre pour savoir si un français va bien. Ah on me dit que c'est ce que l'on fait déjà...
<iframe width="560" height="315" src="https://www.youtube.com/embed/Ruq7yGopPm8?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
## A moins que l'état d'urgence ne protège pas ceux que l'on imagine
A travers leur épisode intitulé "L'état d'urgence, plus c'est long, moins c'est bon", Datagueule, émission diffusée sur France 4, dresse un bilan de l'état d'urgence. Ainsi, la plus part des perquisitions et arrestations ont été réalisées dans les premiers jours. Peu ont abouti, et depuis, elles semblent plus servir à passer des décrets arbitrairement. On notera par exemple l'interdiction de vente d'alcool dans certaines régions à une heure donnée, ou encore l'assignation à résidence de certains militants écologistes pendant la COP21.
<iframe width="560" height="315" src="https://www.youtube.com/embed/uq72XHngz9M?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
La quadrature du net, association ayant pour but de défendre les libertés des citoyens, a d'ailleurs [recensé toutes les dérives liées à l'état d'urgence](https://wiki.laquadrature.net/%C3%89tat_urgence/Recensement).
## En conclusion
Il est très tentant de tirer des conclusions hâtives, ce à quoi je ne me livrerai pas. Mais on peut sans nul doute se dire que certains casseurs ont pu se livrer à leurs actes car on ne les a pas empêché. Et que certains débordements ont eu lieu car les ordres données ont provoqué des réactions connues depuis longtemps auprès de la foule. Enfin, certaines bavures policières pourraient être dues à un manque de formation et épuisement des policiers. A cela vient s'ajouter des assignations à résidence et des perquisitions qui n'ont pas de lien manifeste avec l'état d'urgence qui l'autorise. C'est à partir de ces faits, qu'on peut légitimement s'interroger sur les objectifs des donneurs d'ordres. Se poser la question, c'est déjà voir les choses autrement...
## A propos des sources
Relancé en 2007, Reporterre est un journal en ligne sur l'écologie, créé par Hervé Kempf, ancien journaliste de Courrier International, Le Monde et la Recherche.
Mediapart est un journal en ligne fondé par Edwy Plenel en 2008, qui était rédacteur en chef du Monde de 1996 à 2004. Mediapart a notamment publié les enquêtes sur Woerth-Bettencourt, Cahuzac ou plus récemment Denis Beaupin.
France Inter, du groupe radio france est une radio française, et France 4 du groupe France Television est une chaine de télévision.

18
_posts/2016-06-10-la-radioactivite.md

@ -1,18 +0,0 @@
---
layout: post
slug: la-radioactivite
status: draft
sitemap: false
title: La radioactivité
disqus: true
description: Ça se mange ?
categories:
- physique
tags:
---
Ce billet à pour but d'expliquer simplement et sans partie prenante ce qu'est la radioactivité. </br>
Est-ce que c'est bio ?
Est-ce dangereux ?
Est-ce que ça se mange ?
A quoi ça sert ?

14
_posts/2016-06-10-sait-on-encore-construire-une-centrale-nucleaire.md

@ -1,14 +0,0 @@
---
layout: post
slug: sait-on-encore-construire-une-centrale-nucleaire
status: draft
sitemap: false
title: Sait on encore construire une centrale nucléaire ?
description: Et plus particulièrement un EPR ?
disqus: true
categories:
- physique
tags:
---
Cet article n'a pas pour but de relancer le débat sur le nucléaire mais plus à s'intéresser à son fonctionnement et son état actuel.

3
_posts/2016-07-01-val-d-or.markdown

@ -5,8 +5,7 @@ status: published
title: Excursion à Val d'Or
description: Val d'Or est une petite ville minière du Québec
disqus: true
categories:
- voyage
category: divers
tags:
---

38
_posts/2016-07-02-jenkins-pipeline.markdown

@ -1,38 +0,0 @@
---
layout: post
slug: jenkins-pipeline
status: draft
title: Introduction aux pipelines Jenkins 2.0
description: Ou comment automatiser la compilation de votre application à son déploiement.
disqus: true
categories:
- jenkins
tags:
- continuous delivery
- continuous integration
- jenkins
- pipeline
- jenkinsfile
---
## Pourquoi
Eviter l'effet it works on my machines.
## Comment
Continuous Integration / Continuous Delivery
## Blue Ocean
## Le module Pipeline
Anciennement Workflow Plugin
## Construisons notre premier pipeline
## Les ressources existantes
* [Continuous Delivery et Pipeline sur Wikipedia](https://en.wikipedia.org/wiki/Continuous_delivery)
* [Tutoriel pipelines Jenkins](https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md)
* c

84
_posts/2016-12-17-iperf.md

@ -1,84 +0,0 @@
---
layout: post
slug: iperf
status: draft
sitemap: false
title: iperf
disqus: true
description: iperf
categories:
- monitoring
tags:
---
# Monitorer votre connexion internet (1/?)
## Connexion internet grand public : que mesurer ?
Nous dirons qu'il y a trois points intéressants à mesurer quand il s'agit d'une connexion internet :
* La disponibilité (est-ce qu'internet marche)
* La bande passante (est-ce que je peux transférer beaucoup de données en un temps donné)
* La latence (est-ce que je peux transférer des données rapidement)
Evidemment, il y a d'autres points plus ou moins liés qui sont aussi de bons indicateurs mais que je considère plus secondaire comme le drop de paquets, la marge aux bruits, etc.
## La bande passante
Dans cet article, on va s'intéresser uniquement à mesurer la bande passante disponible.
J'aborderai peut-être les autres points dans un article à part.
La bande passante est toujours le premier élément que l'on mesure sur une connexion internet.
J'imagine que vous avez déjà du utiliser [speedtest](https://speedtest.net) ou le dernier né, l'outil de [netflix](https://fast.com).
Bien que ces outils donnent une bonne idée de la vitesse de la connexion, il est possible d'aller plus loin.
Le principal problème est qu'on effectue une mesure à un instant donné sur un serveur donné.
Un des reproche souvent fait aussi et que les opérateurs pourraient prioritiser le traffic allant vers ces outils de mesure pour tromper les chiffres.
On est aussi tributaire du protocole HTTP qui peut-être prioritisé ou non selon les règles de ce dernier opérateur.
De plus, le fournisseur d'accès passe des accords de peering. Ainsi, si certains accords sont insuffisants, certains sites peuvent être pénalisés.
On a donc tout intérêt de faire des tests sur plusieurs serveurs.
Ensuite l'utilisation du réseau varie en fonction de l'heure de la journée, du jour de la semaine et même de la période de l'année. Faites un test à 5 heure de matin ou à 20h le soir, je parie que vous verrez la différence. Il faudrait donc faire des tests réfulièrements.
On ajoutera aussi que le problème peut venir du réseau local. Un réseau wifi saturé, un routeur de mauvaise qualité, un CPL cassé ou je ne sais quel autre problème.
Enfin les autres utilisateurs peuvent perturber le test en utilisant le réseau en même temps.
En conclusion, nous allons étudier des solutions pour augmenter au maximum la qualité de nos tests à partir des contraintes :
* Faire des mesures à travers le temps
* Faire des mesures sur plusieurs serveurs
* Avoir un témoin sur le réseau local
* Limiter ou annuler l'impact des autres utilisateurs
## Un script + un cron
Pour commencer, on peut juste utiliser curl pour télécharger des ISO sur des miroirs un peu partout et logger ça dans un fichier.
Voici un exemple avec l'ISO de free :
```
curl free dl iso
```
ping.online.net
## iperf
## script python rrdtool
## munin
* plugin existant
* modification
* tests
## limites
* dégrade la qualité de la connexion
* peut etre basse a cause d'autres utilisateurs
* peut etre du au réseau interne
## solutions
* QoS

101
_posts/2016-12-18-tignes.md

@ -1,101 +0,0 @@
---
layout: post
slug: tignes
status: draft
sitemap: false
title: Tignes - Journal de bord
disqus: true
description: Tignes
categories:
- vacances
tags:
---
## Dimanche : Arrivée à Tignes
C'est vers 15h que nous arrivons à Tignes La Bressière, la partie basse de Tignes. Nous découvrons un petit village fort jolie.
[![Le village](/assets/images/posts/tignes-01.jpg)](/assets/images/posts/tignes-01.jpg)
Après avoir acheté notre forfait et nous être installé à l'hôtel, Erwan et moi décidons de faire une petite randonnée juste le temps de prendre la montagne en photo.
[![La montagne](/assets/images/posts/tignes-02.jpg)](/assets/images/posts/tignes-02.jpg)
## Lundi : Première journée sous le brouillard
[![Vue de la station](/assets/images/posts/tignes-03.jpg)](/assets/images/posts/tignes-03.jpg)
Il a neigé cette nuit, et quelques flocons sont tombés en continue toute la journée. Il a fait froid et il y avait du vent. La visibilité dans le bas de la station n'était pas mauvaise mais dès que l'on montait, c'était autre chose...
<video style="width: 100%" autoplay muted loop poster="/assets/video/tignes-02.png">
<source src="/assets/video/tignes-02.webm" type="video/webm" />
<source src="/assets/video/tignes-02.mp4" type="video/mp4" />
</video>
Au final, la neige n'était pas trop mauvaise et il n'y avait pas trop de monde. Toute la station n'était pas encore ouverte. Nous en avons cependant profité pour aller jusqu'à *Val Claret* et monter dans le funiculaire de *La Grande Motte* qui nous a emmené jusqu'à plus de 3 000 mètres d'altitude.
<video style="width: 100%" autoplay muted loop poster="/assets/video/tignes-01.png">
<source src="/assets/video/tignes-01.webm" type="video/webm" />
<source src="/assets/video/tignes-01.mp4" type="video/mp4" />
</video>
Et pour finir Erwan et moi (derrière le masque et la cagoule) bravant les éléments pour prendre cette photo/vidéo.
## Mardi : Tignes, toujours
Aujourd'hui impossible d'aller à *Val d'Isère*. À cause du vent, beaucoup de remontés sont fermées. D'ailleurs, nous devons prendre un premier télésiège à pied ce matin puis une navette pour pouvoir rejoindre les pistes à Tignes 2100.
Heureusement le brouillard s'est levé et il fait plus chaud que hier. On peut enfin commencer à admirer le paysage.
[![Vue de la Tignes 2100](/assets/images/posts/tignes-04.jpg)](/assets/images/posts/tignes-04.jpg)
En début d'après-midi nous trouvons un versant avec un peu de soleil.
[![Depuis le télésiège](/assets/images/posts/tignes-05.jpg)](/assets/images/posts/tignes-05.jpg)
Nous n'étions pas les seul à avoir eu la même idée. J'ai quand même pris le temps de poser mon téléphone pour filmer le paysage...
<video style="width: 100%" autoplay muted loop poster="/assets/video/tignes-03.png">
<source src="/assets/video/tignes-03.webm" type="video/webm" />
<source src="/assets/video/tignes-03.mp4" type="video/mp4" />
</video>
## Mercredi : Val d'Isère
Aujourd'hui nous avons pu nous rendre à Val d'Isère, et même jusqu'à son extremité *Le Fornet*. Sur le plan suivant (possibilité de cliquer dessus pour agrandir), on peut voir en bas à droite *Tignes Les Brévières* d'où nous sommes partis et *Le Fornet* tout à gauche où nous avons mangé de midi.
[![Plan des pistes](/assets/images/posts/tignes-08.jpg)](/assets/images/posts/tignes-08.jpg)
Nous avons pu constater que le public cible était assez aisé à *Val d'Isère*, encore plus qu'à *Tignes* : Wifi gratuit partout, même à 3500 mètres, sièges des télécabines en cuir, etc.
Du haut de *Val d'Isère* on avait une belle vue sur la vallée.
[![En haut de Val d'Isère](/assets/images/posts/tignes-06.jpg)](/assets/images/posts/tignes-06.jpg)
Il a commencé à neiger à midi, voici une photo du bas des pistes du *Fornet* où nous avons dégusté un hotdog savoyard pour pas trop cher.
[![Le Fornet](/assets/images/posts/tignes-07.jpg)](/assets/images/posts/tignes-07.jpg)
On ne pouvait pas aller plus loin, nous sommes donc repartis vers *Les Brévières* après qu'Erwan ai pu faire son hors piste. Tout de même.
## Jeudi : Du haut de la Grande Motte à 3456 mètres d'altitude
<video style="width: 100%" autoplay muted loop poster="/assets/video/tignes-04.png">
<source src="/assets/video/tignes-04.webm" type="video/webm" />
<source src="/assets/video/tignes-04.mp4" type="video/mp4" />
</video>
Aujourd'hui nous avons pu monter sur le glacier de Tignes, au plus haut de la station à 3456 mètres, sur *La Grande Motte*. Avant d'en arriver là, il faut un funiculaire et un vieux téléphérique.
[![Du haut de la Grande Motte](/assets/images/posts/tignes-10.jpg)](/assets/images/posts/tignes-10.jpg)
Nous avons pu nous arrêter pour profiter du paysage. Il parait même qu'on peut voir le *Mont Blanc* d'ici.
La descente se fait sur un glacier, pas de différence au premier coup d'oeil mais impossible de s'éloigner des pistes à causes des crevasses.
[![Une piste](/assets/images/posts/tignes-09.jpg)](/assets/images/posts/tignes-09.jpg)
Nous profitons de la vue dégagée et du retour sur la montagne pour s'éloigner un peu de pistes. Tout au fond, la Grande Motte où nous étions un peu avant.
La suite demain...

6
_posts/2017-01-04-cloner-vers-un-disque-plus-petit.md

@ -2,12 +2,10 @@
layout: post
slug: cloner-vers-un-disque-plus-petit
status: published
title: Cloner un disque vers un support plus petit
title: Migrer vers un disque plus petit
description: Migrer vers un SSD sans tout réinstaller
disqus: true
categories:
- systeme
- linux
category: operation
tags:
---

4
_posts/2017-01-22-json.md

@ -4,9 +4,7 @@ slug: json
status: published
title: JSON simplement
description: Simplifiez-vous la vie
disqus: true
categories:
- code
category: developpement
tags:
---

7
_posts/2017-02-09-docker-swarm.md

@ -2,12 +2,9 @@
layout: post
slug: decouverte-docker-swarm
status: published
title: Découverte de Docker Swarm
title: Docker Swarm
description: Toujours plus de Docker
disqus: true
categories:
- systeme
- linux
category: operation
tags:
---

5
_posts/2017-02-10-dhcp-gateways.md

@ -4,10 +4,7 @@ slug: passerelles-et-dhcp
status: published
title: DHCP et la gestion des passerelles
description: DHCP DISCOVER
disqus: true
categories:
- systeme
- linux
category: operation
tags:
---

21
_posts/2017-02-12-commandes-utiles.md

@ -1,21 +0,0 @@
---
layout: post
slug: commandes-utiles
status: draft
title: Commandes utiles
description: Mon couteau suisse
disqus: true
categories:
- systeme
- linux
tags:
---
## Tunnel SSH
```
(nathalie)
ssh -N quentin@havelock.machine.deuxfleurs.fr -p110 -L 3389:192.168.1.101:3389
(maude)
ssh -N quentin@havelock.machine.deuxfleurs.fr -p110 -L 3389:192.168.1.76:3389
```

7
_posts/2017-02-25-battlenet-probleme-transfert-donnees.md

@ -2,12 +2,9 @@
layout: post
slug: battlenet-probleme-transfert-donnees
status: published
title: "Battle.net : problème de transfert de données"
title: "Debugguer Battle.net"
description: Et quelques outils de debuggage Windows
disqus: true
categories:
- jeux
- windows
category: operation
tags:
---

100
_posts/2017-05-03-liveusb.md

@ -1,100 +0,0 @@
---
layout: post
slug: liveusb
status: draft
sitemap: false
title: todo
description: todo
categories:
- linux
tags:
---
```bash
sudo dnf install debootstrap
sudo debootstrap --arch=amd64 zesty live/
sudo mount --bind /dev live/dev
sudo vim live/etc/apt/sources.list # ajouter universe multiverse
# Chroot inside
sudo chroot live/
mount none -t proc /proc
mount none -t sysfs /sys
mount none -t devpts /dev/pts
# Install
sudo apt install \
xubuntu-desktop \
ubuntu-minimal \
linux-generic \
live-boot \
language-pack-fr \
arduino \
inkscape \
blender \
freecad \
openscad \
git \
kicad \
gimp \
git
passwd
adduser fabriqueurs
usermod -a -G dialout fabriqueurs
vim /etc/lightdm/lightdm.conf.d/01_autologin.conf
vim /etc/default/keyboard
dpkg-reconfigure locales
dpkg-reconfigure keyboard-configuration
su fabriqueurs
git clone https://github.com/jmoenig/Snap--Build-Your-Own-Blocks
# Télécharger repetier
# Extraire dans /home/fabriqueurs
# Executer ./installDependenciesDebian
# Cleaning
rm /var/lib/dbus/machine-id
apt clean
umount /proc /sys /dev/pts
# Create USB
mkdir -p binary/live binary/isolinux
cp live/boot/vmlinuz* binary/live/vmlinuz
cp live/boot/initrd* binary/live/initrd
mksquashfs ./live ./binary/live/filesystem.squashfs -comp xz -e boot
cp /usr/share/syslinux/isolinux.bin ./binary/isolinux/
cp /usr/share/syslinux/menu.c32 ./binary/isolinux/
cp /usr/share/syslinux/ldlinux.c32 ./binary/isolinux/
cp /usr/share/syslinux/libutil.c32 ./binary/isolinux/
vim ./binary/isolinux/isolinux.cfg
xorriso -as mkisofs \
-o output.iso \
-isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \
-c isolinux/boot.cat \
-b isolinux/isolinux.bin \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-eltorito-alt-boot \
-e boot/grub/efi.img \
-no-emul-boot \
-isohybrid-gpt-basdat \
./binary
```
On peut créer l'ISO à l'aide de xorriso ou genisoimage ou mkisofs
Utiliser virtualbox et pas qemu pour tester l'ISO
On a copié .disk, boot et EFI depuis l'ISO d'ubuntu sans comprendre.
https://help.ubuntu.com/community/LiveCDCustomizationFromScratch
https://l3net.wordpress.com/2013/09/21/how-to-build-a-debian-livecd/
http://www.syslinux.org/wiki/index.php?title=Isohybrid

61
_posts/2017-05-08-backups.md

@ -1,61 +0,0 @@
---
layout: post
slug: todo
status: draft
sitemap: false
title: todo
description: todo
categories:
- linux
tags:
---
HP DDS 4
Digital Data Storage
Monter le système fuse Seafile :
```bash
./seaf-fuse.sh start /mnt/seafile
```
Sauvegarde :
```bash
mt -f /dev/st0 rewind
tar -czf /dev/st0 /mnt/seafile/xxx@xxx.xx/
```
Informations :
```bash
mt -f /dev/st0 status
mt -f /dev/st0 tell
tar -tzf /dev/st0
```
Liste des fichiers
```
tar -tzf /dev/st0
```
Restauration
```bash
mt -f /dev/st0 rewind
tar -xzf /dev/st0 /tmp/
```
Efface :
```bash
mt -f /dev/st0 erase
```
* https://manual.seafile.com/extension/fuse.html
* https://www.cyberciti.biz/faq/linux-tape-backup-with-mt-and-tar-command-howto/
* https://www.cyberciti.biz/hardware/unix-linux-basic-tape-management-commands/

21
_posts/2017-06-25-ndh.md

@ -5,9 +5,7 @@ status: published
sitemap: true
title: Write-Up Wargame Nuit du Hack XV
description: Les méfaits de The Magic Modbus
disqus: true
categories:
- securite
category: securite
tags:
---
@ -25,11 +23,10 @@ Vous trouverez l'explication d'autres challenges par d'autres membres de mon éq
[![Logo The Magic Modbus](/assets/images/posts/ndh-magic-modbus.png)](/assets/images/posts/ndh-magic-modbus.png)
## Challenges Intrinsec
Au moment de l'écriture de ce Write-Up, il est encore possible d'accéder aux [challenges Intrinsec](https://ndh.intrinsec.com/challenges)
## Intrinsec : Escape from pyjail to MARS
### Escape from pyjail to MARS
Au moment de l'écriture de ce Write-Up, il est encore possible d'accéder aux [challenges Intrinsec](https://ndh.intrinsec.com/challenges)
On commence le challenge par la ligne suivante, une connexion TCP sur le port 8001 sur un serveur d'Intrinsec :
@ -161,7 +158,7 @@ Description : MARS is a lightweight interactive development environment (IDE) fo
En exécutant notre code dans cet environnement de développement, on peut récupérer le flag pour remporter l'épreuve.
### Modbus
## Intrinsec : Modbus
Pour Modbus, nous avons également une adresse et un port TCP :
@ -196,9 +193,7 @@ with ModbusClient('ndh.intrinsec.com', 5020) as client:
Le flag était donc stocké dans un *input register*, peu importe *l'unit* et il fallait récupérer les valeurs depuis 0, jusqu'à 21. Ensuite on convertit le tableau de bytes en tableau de char que l'on transforme en string.
## Challenges officiels
### So so funny
## NDH : So so funny
Ce challenge nous a donné plus de fil à retordre que prévu. Nous partions d'un PDF sur Kev Adams.
@ -225,7 +220,7 @@ Le flag final est donc le hash sha1 avec `ndh2k17_` devant :
ndh2k17_3d723704f9c1aa8d3ff8b6bcb71c0fa2558f47e2
```
### So easy
## NDH : So easy
Pour ce challenge, nous partions de l'image suivante :
@ -243,7 +238,7 @@ Ensuite, on peut soit baisser son écran pour lire le texte, soit redimensionner
[![Étape finale](/assets/images/posts/ndh-chall_soeasy-final.png)](/assets/images/posts/ndh-chall_soeasy-final.png)
### jam
## NDH : jam
Le challenge commence par le téléchargement d'un fichier binaire inconnu qui se nomme chall. On commence par essayer de deviner ce que c'est :
@ -290,7 +285,7 @@ rec_type('./chall_fs')
Nous trouvons bien un seul fichier qui contient une image PNG et cette image contient le flag que nous cherchons.
### Cul air code
## NDH : Cul air code
Ce challenge commence avec une image :

54
_posts/2017-08-22-hardening-lxc-containers.md

@ -1,23 +1,17 @@
---
layout: post
slug: hardening-lxc-containers-running-systemd
status: draft
status: published
sitemap: true
title: Hardening LXC containers running systemd
title: Some LXC hardening
description: An epic trying to drop CAP\_SYS\_ADMIN
disqus: false
categories:
category: developpement
tags:
- security
- linux
- containers
---
![A real container](/assets/images/posts/harden-container.jpg)
<div style="font-size: 12px; text-align:center; margin-top:-20px">
*A container. Photo by [Mr. Rollers](https://www.flickr.com/photos/mr-rollers/32972266123/). CC BY-NC-ND 2.0*
</div>
Hardening Linux Containers, and more especially [LXC containers](https://linuxcontainers.org/fr/lxc/introduction/), is needed to prevent a malicious user to escape your container. However, even hardened, a container can't be considered totally safe today. You can consider this article as part of a [defence in depth strategy](https://en.wikipedia.org/wiki/Defense_in_depth_(computing)). But before starting, we need to understand how containers work under the hood.
As said by Jessie Frazelle in her blog post [Setting the Record Straight: containers vs. Zones vs. Jails vs. VMs](https://blog.jessfraz.com/post/containers-zones-jails-vms/), containers in Linux are not a top level design like Zone in Solaris and Jails in BSD.
@ -32,11 +26,6 @@ If you feel a bit lost with all these terms, a good start is the reading of this
## Creating a standard LXC container
![A factory](/assets/images/posts/harden-factory.jpg)
<div style="font-size: 12px; text-align:center; margin-top:-20px">
*A factory building containers ? Photo by [Thomas Berg](https://www.flickr.com/photos/decafinata/1989725289/). CC BY-SA 2.0*
</div>
Before starting, you'll need a very recent version of LXC, at least lxc-2.0.9 (not yet released as of this writing). Fortunately, you can compile it from its master branch. We'll see later why we need a such recent version.
Here is a quick reminder on how to compile LXC:
@ -65,11 +54,6 @@ It will launch your container in foreground (so you'll be able to see systemd lo
## Capabilities: split the root
![Puzzle](/assets/images/posts/harden-puzzle.jpg)
<div style="font-size: 12px; text-align:center; margin-top:-20px">
*The great puzzle of root. Photo by [Kevin Dooley](https://www.flickr.com/photos/pagedooley/14555354976). CC BY 2.0.*
</div>
Historically, there is a huge difference between the root user (with uid 0) which bypass any access control and the other users of the system which must pass every control. So, if you want to send an ICMP request via the `ping` command for example, you must run the command as root (with the magic of [setuid](https://en.wikipedia.org/wiki/Setuid) to enable non privileged users to launch it). As the command is launched as root for everyone, ping can load a kernel module, change the time on your system, erase every files, etc. That's dangerous, particularly if someone find a vulnerability in your command and use it to do a [privilege escalation](https://en.wikipedia.org/wiki/Privilege_escalation).
A good idea would be to only allow the ping command to execute actions related to network as root, not everything. You can do that by using capabilities, by giving the `CAP_NET_RAW` capability to your ping command.
@ -173,11 +157,6 @@ You can find the whole capability list in the dedicated man page [capabilities(7
## cgroups: group your processes
![Lions](/assets/images/posts/harden-lions.jpg)
<div style="font-size: 12px; text-align:center; margin-top:-20px">
*A cgroup of lions with parents and children. Photo by [Joel Herzog](https://unsplash.com/@joel_herzog). Unsplash license.*
</div>
[Wikipedia](https://en.wikipedia.org/wiki/Cgroups) proposes the following definition:
> cgroups is a Linux kernel feature that limits, accounts for, and isolates the resource usage (CPU, memory, disk I/O, network, etc.) of a collection of processes.
@ -187,8 +166,6 @@ It might not be totally clear at the first read, but cgroups are two differents
1. A method to create groups of processus
2. A method to apply limitation, accounting, etc. on these groups
<span></span>
If you want to read more on this, the article [Control Groups vs. Control Groups](http://0pointer.de/blog/projects/cgroups-vs-cgroups.html) by Lennart Poettering explains how systemd uses cgroups and why the distinction is crucial.
## Namespaces: isolate your system resources
@ -197,29 +174,4 @@ Michael Kerrisk wrote an interesting [serie of articles about namespaces](https:
> The purpose of each namespace is to wrap a particular global system resource in an abstraction that makes it appear to the processes within the namespace that they have their own isolated instance of the global resource.
At first glance, namespaces handle could appear trivial in LXC: every available namespaces are used and that's all.
The reality is more complex.
## Seccomp: filter your syscalls
![Barriers](/assets/images/posts/harden-barrier.jpg)
<div style="font-size: 12px; text-align:center; margin-top:-20px">
*The seccomp barrier protects the access to the kernel. Photo by [Mike Wilson](https://unsplash.com/@mkwlsn). Unsplash license.*
</div>
## LSM: mandatory access control
![Top Secret](/assets/images/posts/harden-secret.jpg)
<div style="font-size: 12px; text-align:center; margin-top:-20px">
*Back to the origin. Photo by [Michelangelo Carrieri](https://www.flickr.com/photos/malakhkelevra/4951863053). CC BY-ND 2.0*
</div>
## Other
### prlimit
### /dev
### The bridge
ethtable

2
_posts/2017-11-25-upgrade-fedora-online.md

@ -6,7 +6,7 @@ sitemap: true
title: Upgrade Fedora online
description: How to efficiently destroy your distribution
disqus: false
categories:
category: operation
tags:
- linux
- fedora

3
_posts/2017-11-28-affichages-inertes.md

@ -5,8 +5,7 @@ status: published
sitemap: true
title: Affichages inertes
description: Le rétro c'est chic
disqus: false
categories:
category: divers
tags:
- electronique
---

2
_posts/2018-01-15-recharger-carte-korrigo-avec-fedora.md

@ -6,7 +6,7 @@ sitemap: true
title: Recharger sa carte Korrigo sur Fedora
description: C'est possible !
disqus: false
categories:
category: operation
tags:
- fedora
---

3
_posts/2018-04-22-bzhctf18.md

@ -5,8 +5,7 @@ status: published
sitemap: true
title: Write-Up BreizhCTF 2018
description: Garanti 100% sans Go
categories:
- securite
category: securite
tags:
---

16
_posts/2018-05-20-build-a-rpm-package-and-publish-it-on-copr.md

@ -3,19 +3,19 @@ layout: post
slug: build-a-rpm-package-and-publish-it-on-copr
status: published
sitemap: true
title: Build a RPM package and publish it on Copr
title: Publish on Copr
description: They said it was easy
categories:
- linux
category: developpement
tags:
- fedora
- copr
- rpm
- en
---
*Disclaimer: I'm not a linux packaging expert, some parts could be considered as bad practises. Moreover, there are billions different ways of building packages. I am proposing only one in this article.*
### Setup
## Setup
First of all, we will need some tools to build packages:
@ -81,7 +81,7 @@ rm -rf %{buildroot}
So, now we must fill this file. You can use the Fedora Packaging Guidelines guide to find help for the different macro (lines starting with a percent). You can also take some inspiration from existing `.spec` files like [meshlab.spec](https://src.fedoraproject.org/rpms/meshlab/blob/master/f/meshlab.spec) or [chez-scheme.spec](https://github.com/superboum/rpm/blob/master/chez-scheme/chez-scheme.spec).
### Sources and patches
## Sources and patches
We will consider the case where a source tarball is provided, but you need to patch it.
You can easily retrieve a tarball from any github or gitlab project, for a given release, like:
@ -149,7 +149,7 @@ Unfortunately, they are not very flexible. rpkg and fedpkg never download the so
So, we will need an home made solution.
### make srpm
## make srpm
Fortunately, copr propose different solutions. One is to build your `.srpm` locally and send it to copr, but we can even avoid this step and only give a git repository to copr: we will build our own builder with a Makefile.
@ -193,7 +193,7 @@ rpm
You really have to put the Makefile here, otherwise copr will not find it.
### Use Copr
## Use Copr
Now you just need to commit + push your repository and use the [Copr web interface](http://copr.fedorainfracloud.org/) to create a new project, add a package and trigger a build !
@ -207,7 +207,7 @@ sudo dnf install chez-scheme
You can configure some webhooks to rebuild your packages for each git commit.
And that's all!
### Sources
## Sources
* [Fedora Packaging Guidelines](https://fedoraproject.org/wiki/Packaging:Guidelines)
* [Spectool](https://pagure.io/spectool)

3
_posts/2018-07-01-ndh16.md

@ -5,8 +5,7 @@ status: published
sitemap: true
title: Write-Up Wargame Nuit du Hack 16
description: Powershell et compagnie
categories:
- securite
category: securite
tags:
---

3
_posts/2019-02-10-manette-xbox-reparation.md

@ -5,8 +5,7 @@ status: published
sitemap: true
title: Réparation d'une manette Xbox One
description: La panne la plus bête du monde
categories:
- bricolage
category: divers
tags:
---

3
_posts/2019-05-31-installer-cura-4.md

@ -5,8 +5,7 @@ status: published
sitemap: true
title: Utiliser une Alfawise U30 depuis Fedora
description: Pour des impressions 3D libres
categories:
- bricolage
category: operation
tags:
---

5
_posts/2019-08-06-protocole-shoutcast.md

@ -3,10 +3,9 @@ layout: post
slug: le-protocole-shoutcast-au-scalpel
status: published
sitemap: true
title: Le protocole Shoutcast au scalpel
title: Disséquer le protocole Shoutcast
description: Découpage de flux HTTP
categories:
- network
category: developpement
tags:
---

5
_posts/2019-09-04-comprendre-et-installer-ubuntu.md

@ -3,10 +3,9 @@ layout: post
slug: vous-avez-dit-os
status: published
sitemap: true
title: "Vous avez dit OS ?"
title: Le concept d'OS
description: Comprenez votre ordinateur
categories:
- system
category: developpement
tags:
---

9
_posts/2020-06-20-freeture-sur-la-ligne.md

@ -1,9 +0,0 @@
---
layout: post
slug: freeture-sur-la-ligne
status: draft
sitemap: false
title: "Freeture sur la ligne"
description: L'internet des campagnes
---

4
_posts/2021-03-05-latex-dvi-integrer-image.md

@ -3,9 +3,9 @@ layout: post
slug: latex-dvi-integrer-image
status: published
sitemap: true
title: Intégrer des images dans des documents LaTeX supportant une sortie DVI-Tex
title: Latex, DVI et images
description: Grâce à ImageMagick
categories:
category: developpement
tags:
---

4
_posts/2021-07-12-chroniques-administration-synapse.md

@ -1,11 +1,11 @@
---
layout: post
slug: chroniques-administration-synapse
status: draft
status: published
sitemap: false
title: Chroniques d'administration de Synapse
description: Pour l'instant tout va bien, pour l'instant tout...
categories:
category: operation
tags:
---

1
assets/css/style.css

@ -16,6 +16,7 @@ body {
text-rendering: optimizeLegibility;
font-feature-settings: "kern", "liga", "dlig", "salt";
font-size: 2.4rem;
line-height: 1.7;
}
main > section, footer {

BIN
assets/video/tignes-01.mp4

Binary file not shown.

BIN
assets/video/tignes-01.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 KiB

BIN
assets/video/tignes-01.webm

Binary file not shown.

BIN
assets/video/tignes-02.mp4

Binary file not shown.

BIN
assets/video/tignes-02.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

BIN
assets/video/tignes-02.webm

Binary file not shown.

BIN
assets/video/tignes-03.mp4

Binary file not shown.

BIN
assets/video/tignes-03.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 KiB

BIN
assets/video/tignes-03.webm

Binary file not shown.

BIN
assets/video/tignes-04.mp4

Binary file not shown.

BIN
assets/video/tignes-04.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 KiB

BIN
assets/video/tignes-04.webm

Binary file not shown.

83
index.html

@ -1,5 +1,9 @@
<header>
<h1>Quentin Dufour</h1>
---
layout: default
---
<header>
<h1>{{ site.name }}</h1>
</header>
<main>
@ -36,30 +40,61 @@
<section id="posts">
<h2>J'écris sur</h2>
<section>
<h3>Comment fabriquer du logiciel</h3>
<nav class="list">
<h3>le développement et la conception</h3>
<div class="list">
<ul>
<li>
<a href="/feed.xml">Flux RSS</a>
</li>
<li>
<a href="https://git.deuxfleurs.fr">Git</a> (<a href="/ssh.keys">SSH</a>)
</li>
<li>
<a href="/cv.pdf">CV</a>
</li>
<li>
<a href="mailto:quentin+web@dufour.io">Email</a> (<a href="/pgp.pem">PGP</a>)
</li>
<li>
<a href="https://matrix.to/#/@quentin:deuxfleurs.fr">Matrix</a>
</li>
{% for post in site.categories.developpement %}
{% if post.status == "published" %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
</nav>
</section>
<h3>Comment opérer des ordinateurs</h3>
<h3>Comment sécuriser le numérique</h3>
<h3>D'autres choses</h3>
</div>
</section>
<section>
<h3>l'exploitation et le debug</h3>
<div class="list">
<ul>
{% for post in site.categories.operation %}
{% if post.status == "published" %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
</section>
<section>
<h3>la sécurité</h3>
<div class="list">
<ul>
{% for post in site.categories.securite %}
{% if post.status == "published" %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
</section>
<section>
<h3>D'autres choses</h3>
<div class="list">
<ul>
{% for post in site.categories.divers %}
{% if post.status == "published" %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
</section>