Table des matières
- 2026:
- 2025:
4 billet(s) pour septembre 2026
| Notes HTTP Strict Transport Security - HSTS | 2026/09/18 11:04 | Jean-Baptiste |
| Notes GNU Linux GPU carte graphiques | 2026/09/08 15:49 | Jean-Baptiste |
| Notes GNU Linux graphique | 2026/09/08 15:42 | Jean-Baptiste |
| Notes urlencoding - passer des mots de passe en HTTPS | 2026/09/03 17:58 | Jean-Baptiste |
Memento OpenSSL
Source http://www.vincentliefooghe.net/node/113
Pour chiffrement de fichier voir scrypt
1 Si DSA :
openssl dsaparam -out dsaparam.pem 4096
2 Génération de la clef privée:
Si RSA
#openssl genrsa -des3 -out macle.key 2048 openssl genrsa -out macle.key 2048
Note : avec l'option -des3 openssl demande une passphrase
Si DSA
openssl gendsa -des3 -out macle.key dsaparam.pem
Si Elliptic Curve key
#openssl ecparam -genkey ....
N'oubliez pas de noter la pass phrase, elle sera utilisée par la suite
3 Génération d'un certificat auto-signé
openssl req -new -x509 -days 3650 -key macle.key -sha256 -extensions v3_ca -out macle.crt
Génération de la paire de certificat + clef en une seule ligne
openssl req -nodes -new -x509 -keyout server.key -out server.cert
4 Génération d'une demande de certificat (CSR)
Si on ne veut pas générer un certificat auto-signé (pas reconnu dans les navigateurs et clients), il faut généralement passer par une étape intermédiaire : générer un CSR (Certificate Signing Request) qui sera signé par une autorité de certification (les sociétés telles que Verisign, Thwate & Co). On peut aussi utiliser son propre certificat auto-signé comme certificat d'autorité par la suite.
openssl req -sha256 -new -key macle.key -out macle.csr -days 3650
5 Signature d'un CSR
On va signer la demande de certificat (.csr) avec la clé et le certificat de l'autorité de certification :
openssl ca -in macle.csr -out macle.crt -keyfile ca.key -cert ca.crt -days 3650 -extensions usr_cert -notext -md sha256
Il est parfois nécessaire de créer un fichier index.txt et serial (selon les O.S.). Par exemple sur un Linux RHEL / CentOS :
touch /etc/pki/CA/index.txt echo 0000 > /etc/pki/CA/serial
6 Vérification
On peut vérifier le certificat de plusieurs manières :
avec openssl verify, qui vérifie son DN et sa validité \ avec openssl x509, qui dump le contenu du certificat
on peut ajouter une option pour vérifier le “chaining” avec le certificat de l'autorité :
¢ openssl verify -CAfile ca.crt macle.crt macle.crt: OK
Autre
Suppression de la pass-phrase d'une clé
$ cp macle.key macle.key.avecpass $ openssl rsa -in macle.key.avecpass -out maclesanspass.key Enter pass phrase for macle.key.avecpass: writing RSA key
Conversion en format PKCS12
Le format PKCS12 contient le certificat et la clé ; il est parfois utilisé pour l'import d'un certificat dans des keystore Java ou par des utilitaires Windows.
Il faut disposer de la clé privé et du certificat pour les exporter au format pkcs12 :
openssl pkcs12 -export -inkey macle.key -in macle.crt -name AliasDeLaCle -out macle.p12
Conversion
Convert PEM to PKCS12
openssl pkcs12 -export -inkey privatekey.pem -in cert.pem -certfile cacert.pem -out bundle.p12
Convert PKCS12 file to PEM (you can then chop the files up with a text editor)
openssl pkcs12 -nodes -in bundle.p12 -out bundle.pem
Convert DER (binary) to PEM
openssl x509 -inform der -in plop.local.cer -out plop.local.pem
Ansible Vagrant et Docker
Docker
Install
Proxy
Général
Ajout du compte au groupe docker
adduser jean docker
Attention, cela créé une faille de sécurité
Exemple
docker run -ti --privileged -v /:/host fedora chroot /host
Conf conteneur
Dockerfile
FROM debian:jessie #ENV http_proxy http://192.168.56.1:3128 #ENV https_proxy http://192.168.56.1:3128 ARG https_proxy ARG http_proxy ENV DEBIAN_FRONTEND noninteractive ENV TERM linux ENV LANG C.UTF-8 ENV LANGUAGE C.UTF-8 ENV LC_ALL C.UTF-8 RUN echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list RUN (apt-get update && apt-get upgrade -y -q && apt-get dist-upgrade -y -q && apt-get -y -q autoclean && apt-get -y -q autoremove) RUN apt-get install -q -y --no-install-recommends openssh-server python-minimal tmux bash locales sudo vim supervisor RUN apt-get install -q -y --no-install-recommends -t jessie-backports ansible RUN (locale-gen fr_FR.UTF-8 UTF-8 && dpkg-reconfigure locales) RUN mkdir -p /var/run/sshd RUN mkdir /root/.ssh RUN echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQP77kB6AoqUSfvgy844x46CpJC5qLFTgnh2meUxMxA98jvk8TkheKICY2WBiEdORC4uGWVuMEIy0Zy/vL25JFlu7lgZ2B8g7r7JmITpVQMc+TlF5GyJqE1r56A5ljqZXKVVE9PnLCi2FN0rhQLpYM645U0Akvkc6yS0+6RFSWkobrC9/F1L6PU+dzmw6Yisd2nFDjw/J43QrADGPi3HCY+xTjcW/TD8FyGlNWuvNlvHY8aQKoOnuvWnK7F32ciaJE6/8BLKCap/lmkEtxAFd7hAt5YpLK6lNXtkbTKxBZF7SChVW4KJbI5IK2kaHIuXBhMfVTt3xSxk08wahbnVhV root@debian2.localdomain" > /root/.ssh/authorized_keys COPY sshd.conf /etc/supervisor/conf.d/sshd.conf EXPOSE 22 ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf", "-n"]
Conf supervisord
sshd.conf
[program:sshd] directory=/ command=/usr/sbin/sshd autostart=true autorestart=true user = root
#docker build --no-cache -t plop --build-arg http_proxy=http://192.168.56.1:3128 --build-arg https_proxy=http://192.168.56.1:3128 . docker build -t plop --build-arg http_proxy=http://192.168.56.1:3128 --build-arg https_proxy=http://192.168.56.1:3128 .
Vagrant
Vagrantfile
Vagrant.configure("2") do |config| config.vm.provider "docker" do |d| #d.image = "debian:jessie" d.remains_running = false d.build_dir = "." d.has_ssh = true d.create_args = ['--name=ansible1'] end config.ssh.username = "root" config.ssh.private_key_path = "~/.ssh/id_rsa" config.vm.provision "ansible" do |ansible| ansible.playbook = "play-fi.yml" ansible.extra_vars = { hostname: "default" } end end
Autre
Un Makefile pour nous simplifier la vie
Makefile
FicListYaml = $(shell find . -type f -iname "*.yml" -not -iname "mdp.yml") FicListPlayBook = $(shell echo play*.yml) check: check-yaml check-ansible # Check YAML syntax check-yaml: for Fic in $(FicListYaml); do \ ansible-lint "$$Fic" || break ; \ done check-ansible: for Fic in $(FicListPlayBook); do \ ansible-playbook --check "$$Fic" || break ; \ done apply: for Fic in $(FicListPlayBook); do \ ansible-playbook "$$Fic" || break ; \ done # Check idempotent check-active: $(eval changed := $(shell ansible-playbook play-fi.yml | tail -2 | sed -e 's/^.*changed=\([0-9][0-9]*\).*/\1/')) @if [ "$(changed)" != "0" ]; then\ echo "ERR NO idempostent";\ false ;\ fi clean: rm -f *.retry vagrant destroy -f build: vagrant up --provider=docker status: vagrant global-status docker ps
Pb
La commande hostname échoue dans un Docker
J'ai dû utiliser la clause WHEN
- name: define hostname hostname: name='{{hostnameFqdn}}' when: ansible_virtualization_type != "docker"
La modification du fichier /etc/hosts via lineinfile pose également pb.
Could not replace file: /tmp/tmpu74RFY to /etc/hosts: [Errno 16] Device or resource busy
MDP pam Empêcher de réutiliser un ancien mot de passe utilisateur
Tester sur Debian Jessie
touch /etc/security/opasswd chmod 700 /etc/security/opasswd chown root:root /etc/security/opasswd
Dans le fichier /etc/pam.d/common-password, ajouter remember=5 dans la ligne appelant le module pam_unix.so /etc/pam.d/common-password
#password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 remember=5
Tester si c'est ok
Materiel sécurité et insécurité
Intel Management Engine
Vulnerable and proprietary low-level hardware parts … advanced attacks.
The Intel Management Engine (ME) is a type of separate computer within all modern Intel processors (CPU). The ME acts as a master controller for your CPU and has extensive access to your computer (system memory, display, keyboard, network). Intel controls the code of the ME and severe vulnerabilities have already been found in the ME that allow local and remote attacks. Therefore, ME can be considered a backdoor.
Gadget pentest
Yubikey
Autres
Virtual Intel Software Guard Extensions (vSGX)
Notes Markdown Étendue
Lint
markdownlint (mdl)
$ sudo apt-get install markdownlint $ mdl notes_-_nerdctl.txt notes_-_nerdctl.txt:13: MD012 Multiple consecutive blank lines notes_-_nerdctl.txt:20: MD012 Multiple consecutive blank lines notes_-_nerdctl.txt:24: MD012 Multiple consecutive blank lines notes_-_nerdctl.txt:42: MD012 Multiple consecutive blank lines notes_-_nerdctl.txt:54: MD012 Multiple consecutive blank lines notes_-_nerdctl.txt:55: MD012 Multiple consecutive blank lines notes_-_nerdctl.txt:67: MD012 Multiple consecutive blank lines notes_-_nerdctl.txt:30: MD013 Line length notes_-_nerdctl.txt:50: MD031 Fenced code blocks should be surrounded by blank lines notes_-_nerdctl.txt:7: MD032 Lists should be surrounded by blank lines notes_-_nerdctl.txt:15: MD032 Lists should be surrounded by blank lines notes_-_nerdctl.txt:22: MD032 Lists should be surrounded by blank lines notes_-_nerdctl.txt:15: MD034 Bare URL used notes_-_nerdctl.txt:16: MD034 Bare URL used notes_-_nerdctl.txt:17: MD034 Bare URL used notes_-_nerdctl.txt:18: MD034 Bare URL used notes_-_nerdctl.txt:22: MD034 Bare URL used
Conversion Markdown vers ODT
pandoc notes.md -f markdown -t odt -o notes.odt
Autres
pandoc --list-input-formats lists native
Éditeurs Markdown
Voir :
- hedgedoc
Markdown slide
Voir :
Editer un fichier Markdown avec Atom
Atom \ Puis [CTRL] + [SHIFT] + [M] \ Ou “Packages - Markdown Preview - Toggle Preview”
Linter
Install
sudo apt-get install ruby-mdl
Utilisation
mdl fichier.md
Config - ignorer une règle
mdl ~/code/mkdocs/projet1/docs/start.md /home/jean/code/mkdocs/projet1/docs/start.md:41: MD013 Line length /home/jean/code/mkdocs/projet1/docs/start.md:171: MD013 Line length mdl -r ~MD013 ~/code/mkdocs/projet1/docs/start.md mdl -r ~MD013,~MD046 ~/code/mkdocs/projet1/docs/start.md
Autres
Markdown
For security reasons, the Unicode character U+0000 must be replaced with the REPLACEMENT CHARACTER (U+FFFD)
#sudo add-apt-repository ppa:wereturtle/ppa sudo apt update sudo apt install ghostwriter
markdown.pl
