Table des matières
3 billet(s) pour janvier 2026
| Notes rsh rcp | 2026/01/21 18:08 | Jean-Baptiste |
| Git - Duplication d'un dépôt | 2026/01/19 10:22 | Jean-Baptiste |
| Exemple simple de conf Nagios | 2026/01/14 10:07 | Jean-Baptiste |
Cloud Terraform / OpenTofu AWS role policy
# Définition des rôles rattachés aux machines EC2
# Chaque machine a son propre rôle ce qui permet d'affiner au cas par cas
# Référence à la policy managée AWS pour les Agent Cloudwatch
# Commun à tous les rôles des machines EC2
data "aws_iam_policy" "AWSCloudWatchAgentServerPolicy" {
arn = "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy"
}
# Définition une seule fois pour le document d'assume rôle
# Réutilisé dans toutes les policies ci-dessous
data "aws_iam_policy_document" "policy-assume-role-ec2" {
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = [ "ec2.amazonaws.com" ]
}
}
}
# serveur1
resource "aws_iam_role" "role-ec2-serveur1" {
name = "${var.prefix}-role-ec2-serveur1"
assume_role_policy = data.aws_iam_policy_document.policy-assume-role-ec2.json
}
resource "aws_iam_instance_profile" "profile-serveur1" {
name = aws_iam_role.role-ec2-serveur1.name
role = aws_iam_role.role-ec2-serveur1.name
}
resource "aws_iam_role_policy_attachment" "attach-CloudWatchAgentServerPolicy-serveur1" {
role = aws_iam_role.role-ec2-serveur1.name
policy_arn = data.aws_iam_policy.AWSCloudWatchAgentServerPolicy.arn
}
Script effacer plusieurs fichiers, sauf les n derniers
Voir aussi logrotate
script
purge_keep_only_last_recent.sh
#! /bin/bash set -o nounset # Parametres CHEMIN=~/backup/ # ADD 1; If KEEP_LAST=5 => Only 4 will be kept KEEP_LAST=10 purge() { local FICHIER=$1 NEWER_THAN=$(ls -1t $CHEMIN/$FICHIER |sed -ne "${KEEP_LAST}p") if [[ ! -z "$NEWER_THAN" ]] then find $CHEMIN -depth -maxdepth 1 -type f -not -newer $(ls -1t $CHEMIN/$FICHIER |sed -ne "${KEEP_LAST}p") -name "$FICHIER" -delete fi } purge 'information_schema-*.sql.gz' purge 'mysql-*.sql.gz' purge 'performance_schema-*.sql.gz' purge 'zabbix-*.sql.gz'
Notes sur "-delete" de find
-delete Effacer les fichiers, et renvoyer vrai si l'effacement a réussi. Si l'effacement échoue, un message d'erreur est envoyé. Si -delete échoue, le statut de sortie de find sera différent de zéro (si jamais il s'interrompt). L'utilisation de l'action -delete active automatiquement l'option -depth.
Attention : N'oubliez pas que la ligne de commande de find est évaluée comme une expression. Écrire -delete en premier forcera find à essayer d'effacer tout ce qui se trouve dans les points de départ que vous avez indiqué. Lorsque vous testez une ligne de commande de find qui utilisera -delete, vous devriez préciser l'option -depth afin d'éviter les sur‐ prises plus tard. Puisque -delete entraîne -depth, vous ne pouvez pas utiliser en même temps -prune et -delete.
Source : man find
Proxy et apt-get
Pour définir une conf spécifique à apt-get (Adaptez et dé-commenter les lignes voulu)
/etc/apt/apt.conf.d/02proxy
#Acquire::http::Proxy "false"; #Acquire::ftp::Proxy "false"; #Acquire::http::Proxy "http://10.9.3.100:3128"; #Acquire::http::Proxy "http://utilisateur:motdepasse@example.com:port";
Mais nous préférerons à la place définir la conf avec les variables d’environnement
/etc/environment
# http_proxy=http://10.9.3.100:3128 # https_proxy=http://10.9.3.100:3128 ALL_PROXY=http://10.9.3.100:3128 NO_PROXY="localhost,127.0.0.1,.lan"
Notes : /etc/environment s'applique à tous les utilisateurs, à la place on peut utiliser le bashrc.
Où
http_proxy=http://10.9.3.100:3128 apt-get update && apt-get upgrade -y
Protéger l’accès à vos applications web grâce à un mot de passe à usage unique OTP
Pour se faire nous utiliserons :
- Nginx en mode reverse proxy
- Un logiciel pour vous identifier en générant un mot de passe jetable. Par exemple andOTP sous Android
apt-get install python3-pip adduser --group --system --disabled-password --home /opt/auth-otp app-otp su - app-otp -s /bin/bash python3 -m pip install --user pyotp git clone https://github.com/newhouseb/simpleotp cd simpleotp
main.py
-PORT = 8000 +PORT = 8001 -httpd = socketserver.TCPServer(("", PORT), AuthHandler) +httpd = socketserver.TCPServer(("127.0.0.1", PORT), AuthHandler)
Après il faut lancer le script Python dans un tmux ou avec Systemd ou encore supervisord.
python3 main.py
python3 -c "import pyotp; print(pyotp.random_base32())" > .totp_secret chmod 600 .totp_secret
Cong Nginx
server { listen 443 ssl; listen [::]:443 ssl; server_name cockpit.acme.fr; location /auth { proxy_pass http://127.0.0.1:8001; # This is the TOTP Server proxy_set_header X-Original-URI $request_uri; } # This ensures that if the TOTP server returns 401 we redirect to login error_page 401 = @error401; location @error401 { return 302 /auth/login; } location / { auth_request /auth/check; # Required to proxy the connection to Cockpit proxy_pass https://127.0.0.1:9090; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; # Required for web sockets to function proxy_http_version 1.1; proxy_buffering off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # Pass ETag header from Cockpit to clients. # See: https://github.com/cockpit-project/cockpit/issues/5239 gzip off; } ssl_certificate /etc/letsencrypt/live/cockpit.acme.fr/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/cockpit.acme.fr/privkey.pem; # managed by Certbot } server { if ($host = cockpit.acme.fr) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name cockpit.acme.fr; return 404; # managed by Certbot }
Conf andOTP
Créer un “details” de type “TOTP”, dans “secret”, saisissez le contenu du fichier .totp_secret
Service SystemD
/etc/systemd/system/simple-otp.service
[Unit] Description=Simple OTP Wants=network.target After=network.target nginx.service [Service] WorkingDirectory=/opt/auth-otp/simpleotp ExecStart=/usr/bin/python3 /opt/auth-otp/simpleotp/main.py User=app-otp Restart=always [Install] WantedBy=multi-user.target
systemctl daemon-reload
systemctl start simple-otp
systemctl status simple-otp
systemctl enable simple-otp
