Un mémo sur la mise en place du module de sécurité pam_faillock sur Debian 12. Ce module permet de verrouiller temporairement un compte utilisateur connu du système après plusieurs tentatives de connexion infructueuses via ssh.
Prérequis
Une machine tournant sous Debian 12 (Bookworm).
Un accès root ou des privilèges sudo.
Une compréhension de base des fichiers PAM (Pluggable Authentication Modules).
Étape 1 : Installer les paquets nécessaires
pam_faillock est inclus dans le paquet libpam-modules, qui est installé par défaut sur Debian 12.
Étape 2 : Configurer pam_faillock
Modifier le fichier PAM de gestion des connexions locales :
Pour la création d’un miroir local pour la distribution Debian, rien de compliqué car c’est intégré à la commande proxmox-offline-mirror :
proxmox-offline-mirror setup
Select Action: dd new mirror entry
Guided Setup ([yes]): yes
Select distro to mirror : 4
Select release : 0 (pour Bookworm)
Select repository variant :
0) Main repository
1) Security
2) Updates
3) Backports
4) Debug Information
Dans mon cas, j’ai éxécuté la commande proxmox-offline-mirror setup 3 fois pour avoir les 3 miroirs : Main repository, Security et Updates.
Enter repository components : main contrib (les dépots non-free c’est à vous de choisir)
Configure filters for Debian mirror bookworm / main : – (pas de filtres dans mon cas)
Enter mirror ID :
debian_bookworm_main
debian_bookworm_security
debian_bookworm_updates
Enter (absolute) base path where mirrored repositories will be stored : /srv/mirrors/debian/ (à adapter)
Should already mirrored files be re-verified when updating the mirror? : yes
Should newly written files be written using FSYNC to ensure crash-consistency? : yes
Pour finir, Select Action : Quit
Pour automatiser la création et la mise à jour du miroir Debian, voici le script :
nano /usr/local/bin/sync-debian.sh
#!/bin/bash
export ALL_PROXY="http://proxyx.local:PORT"
mirror_dir="/srv/mirrors/debian"
symlink_dir="/srv/mirrors/debian/latest"
proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'debian_bookworm_main'
proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'debian_bookworm_updates'
proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'debian_bookworm_security'
if [ $? -eq 0 ]; then
for dir in "${mirror_dir}"/*; do
if [ -d "$dir" ]; then
dir_name=$(basename "$dir")
if [[ "$dir_name" != "latest" && "$dir_name" != "lost+found" ]]; then
latest_subdir=$(ls -td "$dir"/*/ | head -n 1)
if [ -n "$latest_subdir" ]; then
latest_subdir_name=$(basename "$latest_subdir")
if [ -e "${symlink_dir}/${dir_name}" ]; then
rm -f "${symlink_dir}/${dir_name}"
fi
ln -s "$latest_subdir" "${symlink_dir}/${dir_name}"
fi
fi
fi
done
echo "Done on ${symlink_dir}."
else
echo "Error."
fi
Rendre le scripte éxécutable :
chmod +x /usr/local/bin/sync-debian.sh
Exécuter une première fois le script afin de créer le miroir ocal :
sync-debian.sh
Ensuite, ajouter une tache cron pour l’éxécuter péridioquement :
crontab -e
0 2 * * * /usr/local/bin/sync-debian.sh
Créer un miroir local Ubuntu
A la date de publication de l’article, la commande proxmox-offline-mirror setup n’est pas opérationnelle pour créer un miroir local pour la distribution Ubuntu.
Ici, je choisis la distribution Ubuntu 24.04 LTS Noble.
gpg --export F6ECB3762474EDA9D21B7022871920D1991BC93C | tee /usr/share/keyrings/ubuntu-archive-keyring.gpg > /dev/null
Ajout du miroir dans le fichier de configuration /etc/proxmox-offline-mirror.cfg à la suite des autres miroirs :
nano /etc/proxmox-offline-mirror.cfg
mirror: ubuntu_noble_main
architectures amd64
architectures all
base-dir /srv/mirrors/ubuntu/noble
ignore-errors false
key-path /usr/share/keyrings/ubuntu-archive-keyring.gpg
repository deb https://fr.archive.ubuntu.com/ubuntu noble main restricted universe multiverse
sync true
verify true
mirror: ubuntu_noble_updates
architectures amd64
architectures all
base-dir /srv/mirrors/ubuntu/noble
ignore-errors false
key-path /usr/share/keyrings/ubuntu-archive-keyring.gpg
repository deb https://fr.archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
sync true
verify true
mirror: ubuntu_noble_security
architectures amd64
architectures all
base-dir /srv/mirrors/ubuntu/noble
ignore-errors false
key-path /usr/share/keyrings/ubuntu-archive-keyring.gpg
repository deb https://fr.archive.ubuntu.com/ubuntu noble-security main restricted universe multiverse
sync true
verify true
Création du script d’automatisation de création et de mise à jour du miroir :
nano /usr/local/bin/sync-ubuntu.sh
#!/bin/bash
export ALL_PROXY="http://proxy.local:PORT"
mirror_dir="/srv/mirrors/ubuntu/noble"
symlink_dir="/srv/mirrors/ubuntu/noble/latest"
proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'ubuntu_noble_main'
proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'ubuntu_noble_updates'
proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'ubuntu_noble_security'
if [ $? -eq 0 ]; then
for dir in "${mirror_dir}"/*; do
if [ -d "$dir" ]; then
dir_name=$(basename "$dir")
if [[ "$dir_name" != "latest" && "$dir_name" != "lost+found" ]]; then
latest_subdir=$(ls -td "$dir"/*/ | head -n 1)
if [ -n "$latest_subdir" ]; then
latest_subdir_name=$(basename "$latest_subdir")
if [ -e "${symlink_dir}/${dir_name}" ]; then
rm -f "${symlink_dir}/${dir_name}"
fi
ln -s "$latest_subdir" "${symlink_dir}/${dir_name}"
fi
fi
fi
done
echo "Done on ${symlink_dir}."
else
echo "Error."
fi
Rendre le script exécutable :
chmod +x /usr/local/bin/sync-ubuntu.sh
Exécuter le script pour créer le miroir local :
sync-ubuntu.sh
Changer les dépots dans le sources.list sous Ubuntu server 24.04 :
Pour information, sous Ubuntu server 24.04 LTS les dépôts ne se renseignent plus dans le fichier : /etc/apt/sources.list.
cat /etc/apt/sources.list
# Ubuntu sources have moved to /etc/apt/sources.list.d/ubuntu.sources
Modifier les URLs des dépôts :(dans mon cas le nom de domaine de mon serveur web est mirrors.local) :
nano /etc/apt/sources.list.d/ubuntu.sources
Types: deb
URIs: http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_main
Suites: noble
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb
URIs: http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_security
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb
URIs: http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_updates
Suites: noble-updates
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Test d’update :
apt update
Hit:1 http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_main noble InRelease
Hit:2 http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_security noble-security InRelease
Hit:3 http://mirrors.local/ubuntu/noble/latest/ubuntu_noble_updates noble-updates InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
89 packages can be upgraded. Run 'apt list --upgradable' to see them
Pour finir, ajouter une tache cron pour l’éxécuter péridioquement :
Configurer proxmox-offline-mirror pour le dépôt Proxmox
Exécuter la commande :
proxmox-offline-mirror setup
Pour ajouter un nouveau miroir, choisir 0 :
Pour être guidé, répondre « yes » :
Choisir le dépôt Proxmox ve :
Choisir la version Bookworm :
Choisir la variante « No-Subscription repository » :
Pour la question suivante « Should missing Debian mirrors for the selected product be auto-added » ayant déjà mon propre miroir local Debian, je répond non :
Pour l’ID laisser pve_bookworm_no_subscription :
Entrer le chemin complet du répertoire pour le dépôt, dans mon cas /srv/mirrors/proxmox/ :
Revérifier ou pas les dépôts une fois mis à jour, dans mon cas je répond : yes
En cas de plantage, utiliser ou pas FSYNC, je répond : yes
Retour au menu, choisir 3 pour quitter :
Une fois que la configuration est terminée, éxécuter la commande :
Pour rappel, dans mon cas le serveur web est déjà installé. J’ajoute simplement une directive location dans mon fichiers de conf.
Ce qui donne :
nano /etc/nginx/sites-available/mirrors
server {
listen 80;
server_name mirrors.local;
root /srv/mirrors;
index index.html;
location /debian/ {
alias /srv/mirrors/debian/;
autoindex on;
}
location /ubuntu/ {
alias /srv/mirrors/ubuntu/;
autoindex on;
}
location /proxmox/ {
alias /srv/mirrors/proxmox/;
autoindex on;
}
}
systemctl reload nginx
Créer un chemin statique pour les dépôts Proxmox et Ceph
De base, la commande proxmox-offline-mirror créé pour chaque dépôt un snapshot daté du jour.
Un problèmes majeur :
Sur chaque noeud Proxmox faudra changer le dépôt comme suit :
deb http://mirrors.local/proxmox/pve_bookworm_no_subscription/2024-12-10T10:20:21Z bookworm pve-no-subscription
Pour obtenir qu’un seul référentiel pour le dépôt :
Créer le dossier :
mkdir -p /srv/mirrors/proxmox/latest
Créer le script suivant :
nano /usr/local/bin/sync-proxmox.sh
#!/bin/bash
export ALL_PROXY="http://proxy.local:PORT"
mirror_dir="/srv/mirrors/proxmox"
symlink_dir="/srv/mirrors/proxmox/latest"
proxmox-offline-mirror mirror snapshot create-all
if [ $? -eq 0 ]; then
for dir in "${mirror_dir}"/*; do
if [ -d "$dir" ]; then
dir_name=$(basename "$dir")
if [[ "$dir_name" != "latest" && "$dir_name" != "lost+found" ]]; then
latest_subdir=$(ls -td "$dir"/*/ | head -n 1)
if [ -n "$latest_subdir" ]; then
latest_subdir_name=$(basename "$latest_subdir")
if [ -e "${symlink_dir}/${dir_name}" ]; then
rm -f "${symlink_dir}/${dir_name}"
fi
ln -s "$latest_subdir" "${symlink_dir}/${dir_name}"
fi
fi
fi
done
echo "Done on ${symlink_dir}."
else
echo "Error."
fi
Créer une tache cron pour synchroniser le miroir de Proxmox
Editer vos fichiers sources.list et changer les url par celle de votre miroir local :
deb http://mirrors.local/debian bookworm main contrib
deb http://mirrors.local/debian bookworm-updates main contrib
deb http://mirrors.local/debian bookworm-security main contrib
deb http://mirrors.local/proxmox/latest/pve_bookworm_no_subscription bookworm pve-no-subscription
deb http://mirrors.local/proxmox/latest/ceph_reef_bookworm no-subscription
Test de l’update :
apt update
Nettoyage des snapshots Proxmox et Ceph
Créer le script :
nano /url/local/bin/clean_proxmox_snapshots.sh
#!/bin/bash
# Variables
MIRRORS=(
"/srv/mirrors/proxmox/pve_bookworm_no_subscription"
"/srv/mirrors/proxmox/ceph_reef_bookworm"
)
MAX_AGE=7 # Durée limite (en jours)
# Nettoyage pour chaque miroir
for MIRROR_PATH in "${MIRRORS[@]}"; do
echo "Traitement du miroir : $MIRROR_PATH"
# Nettoyage des snapshots anciens
SNAPSHOTS=$(proxmox-offline-mirror mirror snapshot list --mirror "$MIRROR_PATH" --format json | \
jq -r ".[] | select(.age > $MAX_AGE) | .name")
if [[ -z "$SNAPSHOTS" ]]; then
echo "Aucun snapshot à supprimer pour le miroir : $MIRROR_PATH"
else
echo "Suppression des snapshots suivants pour $MIRROR_PATH :"
echo "$SNAPSHOTS"
for SNAPSHOT in $SNAPSHOTS; do
proxmox-offline-mirror mirror snapshot remove --mirror "$MIRROR_PATH" --snapshot "$SNAPSHOT"
echo "Snapshot supprimé : $SNAPSHOT"
done
# Garbage collection
echo "Exécution de garbage collection (GC) pour le miroir : $MIRROR_PATH"
proxmox-offline-mirror mirror gc --mirror "$MIRROR_PATH"
echo "Garbage collection terminée pour $MIRROR_PATH."
fi
echo "-------------------------------------------"
done
echo "Nettoyage terminé pour tous les miroirs."
Cette dépêche récurrente vit aussi grâce à vos remarques, propositions d’ajouts, de compléments et vos retours sur les systèmes fiscaux et les dons dans vos pays respectifs. N’hésitez pas à la commenter pour l’enrichir. Bien que récurrente, cette dépêche est mise à jour et enrichie chaque année.
Précision : la dépêche parle bien de « don » (je soutiens sans rien obtenir à titre personnel), pas de « financement participatif avec contrepartie » (je cofinance en échange de goodies ou avantages), les deux étant destinés à des choses différentes. Si vous avez lu jusqu’ici, un dessin xkcd sur le sujet en récompense (et d’autres images plus loin pour récompenser les libristes patients qui liront jusqu’au bout).
Pourquoi les associations ayant des permanents ont des besoins récurrents d’argent ? (tiré de l’épisode 12 mais mis à jour)
Quand une association veut passer de zéro à un permanent ou à un permanent de plus, elle n’a généralement pas en réserve de quoi le payer sur une année complète. Elle prend donc un risque avec une visibilité sur x mois (comme n’importe quel chef d’entreprise), en faisant de son mieux pour que l’argent rentre (le nouveau permanent va « produire », une campagne de communication ou d’appel à don ou autres sera lancée, une subvention sera recherchée, une convention sera signée avec tel ou tel, des goodies seront vendus, etc.).
Une association qui ne veut pas s’embêter à rechercher des fonds ou qui ne vise pas à passer le cap du premier permanent n’a pas du tout ce souci et peut être très indolente si elle veut.
Dès qu’il y a un besoin récurrent de payer des salariés, de payer à date les charges de l’employeur — qu’il faut prévoir à trois mois s’il faut gérer un préavis de licenciement économique ou pas, etc. —, cela devient plus compliqué (comme pour n’importe quel chef d’entreprise). Une association militante qui ne prendrait pas de risque financier du tout, ce n’est pas envisageable à mon avis. Toute la question étant de savoir combien elle réussit à faire rentrer d’argent au moment où c’est nécessaire, si elle peut continuer à embaucher pour grossir, faire plus d’actions ou faire mieux, si elle doit licencier, ou bien si elle doit stagner ou continuer ainsi dans l’immédiat.
Donc, oui, on a toujours l’impression que les associations ayant des permanents recherchent de l’argent (et décembre est particulier, car c’est la fin de l’exercice fiscal et traditionnellement la période des dons défiscalisés, notamment côté humanitaire associé aux bons sentiments des fêtes de fin d’année). Et oui, en décembre, la Croix Rouge ou le Secours Populaire, April, RSF, LQDN, la FSF, Amnesty, Framasoft et bien d’autres font des appels à don.
En dehors de la simple mais cruciale question de la trésorerie (pérennité / continuité), il y a bien évidemment aussi les projets et actions futures à financer. Citons par exemple la justification de Framasoft (une dizaine de permanents) en six points :
parce que l’enfermement, c’est maintenant ;
pour plus d’alternatives libres ;
parce que les gentils, c’est nous !
pour décider où vont vos impôts (avec défiscalisation) ;
parce que l’économie du don rend indépendant ;
pour changer le monde ensemble.
Quelques chiffres : « Chacun s’accorde pour estimer que près de 90% des associations fonctionnent exclusivement grâce à leurs bénévoles. Vitale dans ces associations, cette ressource humaine reste essentielle dans les 10 à 12% d’associations employant des salariés »
« en 2022, l’emploi privé non lucratif au sein des associations et des fondations représente plus de 155 000 employeurs, plus de 2 millions de salariés, soit 9,5% du total des salariés du secteur privé, et une masse salariale de plus de 54,4 milliards d’euros (près de 7% de la masse salariale du secteur privé) » (Recherche et Solidarités)
Et sur l’évolution des bénévoles et du mécénat de compétences :
« Les 25-34 ans sont de plus en plus nombreux à s’engager (30% en 2024 pour 22% en 2019), quand les 70 ans et plus perdent 10 points pour n’être que 24% aujourd’hui. »
« En 2024, 9% des Français sont présents chaque semaine dans leurs associations, ils étaient 10% en 2019 et 12,5% en 2010. »
« Ces tendances fragilisent la colonne vertébrale des associations, à savoir celles et ceux qui les font vivre au quotidien qui se trouvent privées de l’expérience et de la disponibilité des seniors »
« Parmi les perspectives positives, le mécénat de compétences poursuit sa percée avec 27% de bénévoles tentés par l’expérience en 2024 ; ils étaient 23% en 2022 et 20% en 2019. » (Recherche et Solidarités et France Générosités)
Petit rappel sur les impôts en France (tiré de l’épisode 10 mais mis à jour)
l’article 200 du Code général des impôts prévoit pour un particulier une déduction fiscale de 66 % (réduction d’impôt sur le revenu dans la limite de 20 % du revenu imposable, reportable sur cinq ans en cas de dépassement de ce plafond) des dons vers les associations d’intérêt général ou reconnues d’utilité publique ; ce pourcentage monte même à 75 % pour les organismes d’aide aux personnes en difficulté (dans la limite de 521 €, au‐delà, on retombe sur les 66 %) ;
l’article 238 bis du CGI prévoit une déduction fiscale de 60 % des dons pour une entreprise (réduction d’impôt sur le revenu ou d’impôt sur les sociétés dans la limite de 5 ‰ du chiffre d’affaires hors taxes, reportable sur cinq ans en cas de dépassement de ce plafond) vers les associations d’intérêt général ou reconnues d’utilité publique ;
fiche pratique ServicePublic.fr : « À noter : l’organisme peut être en France ou dans un État membre de l’Union européenne : Allemagne, Autriche, Belgique, Bulgarie, Chypre, Croatie, Danemark, Espagne, Estonie, Finlande, France, Grèce, Hongrie, Irlande, Italie, Lituanie, Lettonie, Luxembourg, Malte, Pays-Bas, Pologne, Portugal, République tchèque, Roumanie, Slovaquie, Slovénie, Suède, en Islande, en Norvège ou au Liechtenstein. S’il n’est pas agréé, vous devez justifier qu’il a un objectif et des caractéristiques similaires aux organismes situés en France et pouvant bénéficier du dispositif. »
loi n° 2021-1109 du 24 août 2021 : « Art. 222 bis.-A l’exception de ceux mentionnés au 3 de l’article 200, les organismes qui délivrent des reçus, des attestations ou tous autres documents par lesquels ils indiquent à un contribuable qu’il est en droit de bénéficier des réductions d’impôt prévues aux articles 200,238 bis et 978 sont tenus de déclarer chaque année à l’administration fiscale, dans les délais prévus à l’article 223, le montant global des dons et versements mentionnés sur ces documents et perçus au cours de l’année civile précédente ou au cours du dernier exercice clos s’il ne coïncide pas avec l’année civile ainsi que le nombre de documents délivrés au cours de cette période ou de cet exercice. »
France générosités mentionne des évolutions récentes (juillet 2024), notamment le fait que les dons des particuliers aux organismes d’intérêt général qui concourent à l’égalité entre les femmes et les hommes ouvrent droit à réduction d’impôt et la prorogation jusqu’au 31 décembre 2026 du plafond dérogatoire de 1 000 € applicable aux dons retenus pour la réduction d’impôt de 75 % accordée au titre des dons versés aux organismes qui apportent une aide gratuite aux personnes en difficulté.
Exemple pour un particulier : je suis imposable et donne 99 € à l’association XYZ bénéficiant de la déductibilité des dons à hauteur de 66 %. Mon don me coûte en fait (au final) 33 €, j’ai temporairement avancé 66 € qui seront ensuite déduits de mon imposition fiscale (dit autrement, j’ai choisi l’attribution de 66 € du budget de l’État).
Autres infos :
la déductibilité fiscale des dons ne peut pas être limitée au territoire du pays, l’État ne peut pas refuser de défiscaliser un don dans l’Union européenne au motif qu’il n’est pas fait sur son territoire. Il lui appartient quand même d’accepter ou refuser de considérer le don comme défiscalisable. (référence C-318/07 chez InfoCuria - Jurisprudence de la Cour de justice) — résumé en français du jugement par le service juridique de la Commission européenne : « Cependant, lorsqu’un organisme reconnu d’intérêt général remplit les conditions imposées par la législation de l’État du donateur, il ne saurait faire l’objet de discrimination au seul motif qu’il n’est pas établi sur le territoire de cet État. ») ;
« En 2023, la générosité des Français tient bon dans un contexte encore difficile, avec une progression de 2,1% des dons par rapport à 2022 en euros courants. » (ainsi que la « poursuite de la baisse des petits dons » et un « focus sur les urgences médiatisées »)
« l’augmentation des investissements est aussi due à des coûts d’acquisition en hausse (+ 28%) en raison d’une concurrence accrue pour atteindre 33 € de coût d’acquisition moyen par donateur sur les campagnes de fin d’année (CFA) 2022 du panel de l’étude mais pour un don moyen de 172 € (+ 10%). »
(Baromètre Orixa Fundraising 2023)
« L’étude de Recherches & Solidarités montre une progression de 6,3% du montant total des dons déclarés au titre de l’IR en 2022 par rapport à 2021. L’étude de Recherches & Solidarités montre une progression de 3,9% du nombre de foyers fiscaux donateurs en 2022 par rapport à 2021. »
(Étude 2023 sur les dons déclarés 2022 – Recherches & Solidarités)
« en 2022 : en moyenne, les donateurs de 35-54 ans correspondent à une pénétration de 5,5% des Français de cette tranche d’âge. Soit le plus faible taux comparé aux autres tranches d’âge. » (Étude sur le don des 35-54 ans – France)
Admincal indique que « seulement 4,61 % des entreprises assujettis à l’Impôt sur les Sociétés (IS) déduisent des dons du mécénat ».
Selon Infodon.fr (via une enquête Ifop pour France générosités, réalisée sur un échantillon représentatif de la population française (4031 personnes) – Mai 2023)
« 69% des Français déclarent soutenir financièrement assos et fondations, « 46 % donnent au moins une fois par an ». À comparer avec les chiffres donnés en 2022 (72% 48%), 2021 (58%, 45%) et 2020 (52%, 40%).
Petit rappel sur les impôts d’autres pays (tiré de l’épisode 12 mais mis à jour)
Forcément, je connais mieux le sujet pour la France, mais voici néanmoins quelques infos glanées pour d’autres pays (et je ne doute pas que les visiteurs compléteront dans les commentaires) :
synthèse (en anglais) The tax treatment of cross-border philanthropy sur le site OECD iLibrary ;
Belgique et réduction d’impôt pour dons : on peut par exemple citer la La Ligue des Droits Humains qui est éligible à la réduction d’impôt de 45 % du montant versé (si le don est supérieur ou égal à 40 €) ; par ailleurs, les dons reçus s’y déclarent comme « revenus divers », taxés à 33 %, ou suivant un régime qui a été mis en place après 2016 pour l’économie collaborative taxée de 10 à 20 % (mais en avril 2020, il y a un arrêt de la Cour constitutionnelle sur le sujet, qui nécessiterait l’avis d’une personne plus à l’aise avec la loi fiscale belge pour en tirer un résumé…) ;
Suisse et déductions fiscales : voir par exemple Wikimedia CH qui est « reconnue d’intérêt public », ou la FSF Europe qui s’annonce déductible en Suisse, mais aussi en Allemagne, au Luxembourg et aux Pays‐Bas (et a priori en France, suivant la jurisprudence C-318/07 évoquée précédemment) ;
« Sacrifier une partie de son revenu pour faire un don à une association, c’est une affaire sérieuse. » (patrick_g)
Liste non exhaustive de dons financiers ou de temps à des associations du Libre ou pour libérer quelque chose :
Pour les exemples plus ou moins exhaustifs sur les 11 premières années de cette série de dépêches, voir la section de l’année 2022
Don à une entreprise ? (tiré de l’épisode 11 mais mis à jour)
Une question un peu annexe ici vu le titre « dons aux associations » mais qui a déjà été posée ici ou là sur LinuxFr.org : peut‐on faire un don (sans contrepartie) à une entreprise ? Pour prendre quelques sites que j’aime bien : Next.ink anciennement Next INpact (SARL de presse) a opté pour un mélange de comptes premium (avec contrepartie, donc), publicités et dons. Voir les appels à dons 2023 pour le Fonds pour une presse libre ou Next.ink par exemple). Tandis que Reflets.info (SAS) accepte les dons.
Lors d’une recherche rapide précédente, j’avais vu évoquer l’utilisation du compte 7713 « libéralités perçues » du plan comptable, d’un justificatif clair pour la comptabilité (un expert comptable et/ou un notaire sont évoqués), d’une exonération de TVA si aucune vente de bien ou de service n’est associée. Bref, la question des taxes et impôts à payer pour le donateur (60 % entre non‐parents ?) et l’entreprise n’est pas forcément claire. Cela reste assez flou et hypothétique, et ça mériterait une question aux impôts.
.
Logiciels libres pour gérer les dons (tiré de l’épisode 12 mais mis à jour)
La question avait été posée lors de l’épisode 3 de cette série de dépêches : quel(s) logiciel(s) libre(s) utiliser pour faire les dons ? Ou pour les gérer ? En général, pour les faire, un navigateur fait l’affaire : paiement en ligne, réception de l’éventuel reçu fiscal, réception d’un éventuel message de remerciement.
Pour les reçus fiscaux, il convient de les conserver avec les documents des impôts pendant le temps nécessaire (suivant la législation locale).
Pour les dons via des intermédiaires, par exemple Liberapay ou HelloAsso, il faut conserver soigneusement les identifiants du compte créé pour l’année suivante.
Si vous avez opté pour l’adhésion à une structure plutôt que le don, vous allez recevoir des identifiants aussi et probablement une lettre interne ou des choses du genre, ainsi que certainement une convocation à une assemblée générale annuelle.
Et si vous avez opté pour versement régulier (virement ou prélèvement), ça ne change pas fondamentalement les choses ; éventuellement, l’organisme qui prélève vous prévient un peu avant chaque prélèvement par courriel.
Il existe aussi dans le Libre des logiciels ou des événements spécialement prévus pour les dons :
À ma connaissance, le site HelloAsso, structure ayant obtenu son agrément « Entreprise solidaire d’utilité sociale », évoqué dans un commentaire de 2015, n’utilise pas une plate‑forme libre, contrairement à Liberapay.
Créer le script suivant pour synchroniser Debian :
nano /usr/local/bin/sync-debian.sh
Le contenu du script :
#!/bin/bash
# Variables
BASE_URL_DEBIAN="http://deb.debian.org/debian"
BASE_URL_SECURITY="https://security.debian.org/debian-security"
LOCAL_DIR="/srv/mirrors/debian"
SECTIONS=("bookworm" "bookworm-updates" "bookworm-security")
# Proxy configuration
export http_proxy="http://monproxy.local:8080"
export https_proxy="http://monproxy.local:8080:"
# Options pour lftp
LFTP_OPTS="mirror --parallel=4 --verbose=2 --delete"
# Boucle sur les sections principales (bookworm, bookworm-updates)
for SECTION in "${SECTIONS[@]}"; do
if [ "$SECTION" == "bookworm-security" ]; then
# Pour le dépôt de sécurité, utiliser une URL différente
echo "Synchronisation de $SECTION..."
lftp -c "$LFTP_OPTS $BASE_URL_SECURITY/dists/bookworm-security $LOCAL_DIR/dists/bookworm-security"
else
# Pour les autres sections, utiliser l'URL Debian principale
echo "Synchronisation de $SECTION..."
lftp -c "$LFTP_OPTS $BASE_URL_DEBIAN/dists/$SECTION $LOCAL_DIR/dists/$SECTION"
fi
done
echo "Synchronisation terminée."
Donner les permissions d’exécution au script :
chmod +x /usr/local/bin/sync-debian.sh
Miroir Ubuntu :
Créer le script suivant pour synchroniser Ubuntu :
nano /usr/local/bin/sync-ubuntu.sh
Le contenu du script :
#!/bin/bash
# Variables
BASE_URL_UBUNTU="http://archive.ubuntu.com/ubuntu"
BASE_URL_UBUNTU_SECURITY="http://security.ubuntu.com/ubuntu"
LOCAL_DIR="/srv/mirrors/ubuntu"
SECTIONS=("noble" "noble-updates" "noble-security")
# Proxy configuration
export http_proxy="http://monproxy.local:8080"
export https_proxy="http://monproxy.local:8080"
# Options pour lftp
LFTP_OPTS="mirror --parallel=4 --verbose=2 --delete"
# Boucle sur les sections principales (noble, noble-updates)
for SECTION in "${SECTIONS[@]}"; do
if [ "$SECTION" == "noble-security" ]; then
# Pour le dépôt de sécurité, utiliser une URL différente
echo "Synchronisation de $SECTION..."
lftp -c "$LFTP_OPTS $BASE_URL_UBUNTU_SECURITY/dists/noble-security $LOCAL_DIR/dists/noble-security"
else
# Pour les autres sections, utiliser l'URL Ubuntu principale
echo "Synchronisation de $SECTION..."
lftp -c "$LFTP_OPTS $BASE_URL_UBUNTU/dists/$SECTION $LOCAL_DIR/dists/$SECTION"
fi
done
echo "Synchronisation terminée."
Donner les permissions d’exécution au script :
chmod +x /usr/local/bin/sync-ubuntu.sh
Planifier la synchronisation automatique
Configurer les tâches avec cron pour automatiser les synchronisations :
Tester l’accès au serveur web (exemple ici avec le miroir local pour Proxmox) :
Modification des fichiers sources.list des clients
Il ne reste que la modification des fichiers sources.list sur l’ensemble des serveurs.
Pour ce faire, modifier l’url par l’IP du serveur miroir local pour tous les dépôts.
Afin de déployer les modifcations de chaque serveur, je vous propose d’utiliser Ansible :
ping can resolve .local domains, but e.g. host can't, which is annoying when trying to resolve the IP address of a mDNS host from a e.g. script.
Fortunately, there is avahi-resolve that can do that, and is easy enough to use in scripts.
The reason I needed that was to consolidate a setup where a network scanner provides a mDNS name, but it can't be used in the SANE device path, only the IP works. So, replace the IP field in the call with "$(avahi-resolve --name -4 NAME.local | awk '{print $2}')" and voila.
Je vous propose dans ce tutoriel de découvrir comment installer un certificat SSL sur un serveur Apache sous Debian / Ubuntu. Cette étape est indispensable si vous souhaitez déployer un site sécurisé par HTTPS ou migrer un site web existant de HTTP vers HTTPS.
J’ai écris ce tutoriel dans le cadre de la migration de SysKB de HTTP vers HTTPS. Une migration motivée car Google pénalise depuis quelques mois les sites n’ayant pas migrés en HTTPS. Il était donc temps d’obtenir moi aussi mon petit cadenas vert vous indiquant que les informations qui circulent entres votre navigateur et mon site web sont chiffrées.
Ce tutoriel s’adresse à ceux qui comme moi hébergent leur site Web sur un serveur dédié ou un VPS (Virtual Private Server). Car contrairement à un hébergement de type mutualisé, c’est à vous de gérer la couche Apache de votre stack LAMP (Linux / Apache / MySQL ou MariaDB / PHP). La plupart des tutos qui expliquent comment migrer un site HTTP vers HTTPS se contentent d’expliquer comment le faire d’un point de vue WordPress et référencement Google, mais n’abordent pas le fait qu’il faut d’abord configurer Apache et déployer votre certificat sur votre serveur Apache.
D’ailleurs vous allez le voir c’est assez simple même si ça nécessite de suivre scrupuleusement le tutoriel
SysKB est hébergé sur un VPS chez IONOS. J’ai opté pour l’offre VPS Cloud qui me permet de disposer d’un serveur dédié virtuel performant avec du disque SSD, et suffisamment de mémoire et de CPU pour supporter une charge de plusieurs milliers de connexions journalières. Le petit plus c’est que l’offre intègre un certificat SSL Wildcard gratuit que vous pouvez activer et obtenir en 5 minutes depuis votre interface.
Si vous envisagez de créer votre site Web je vous invite à consulter mon guide pour vous aider à choisir une solution d’hébergement pour WordPress mais IONOS est un excellent fournisseur que j’utilise depuis plus de 15 ans maintenant avec toujours autant de confiance
Je résume, si vous avez un VPS et que vous souhaitez que votre site soit en HTTPS, ce qui est indispensable pour accéder à votre site depuis un navigateur comme Chrome, suivez simplement ce tuto
2 – Activer les modules requis pour utiliser SSL sur votre VPS sous Apache
Activer le module SSL
Après avoir ouvert une session PuTTy sur votre serveur tapez simplement la commande suivante pour activer le module SSL. Un message vous indiquera clairement si le module est déjà ou non déployé.
a2enmod ssl
Activer le module headers
De la même manière cette commande vous permet d’activer le module Header. Ce module, dont l’installation est fortement recommandé par Google, permet d’activer la directive HSTS.
a2enmod headers
Redémarrer le service Apache
Le redémarrage de votre serveur Apache permet d’activer les deux modules précédemment activés. Ce redémarrage prend à peine quelques millisecondes sans impact notable sur votre production.
service apache2 restart
3 – Déposer votre certificat SSL sur votre serveur
Création du répertoire qui contiendra le certificat SSL
Il est d’usage de stocker les certificats SSL en respectant cette arborescence, mais ce n’est pas une obligation surtout si vous n’avez qu’un seul site. Remplacez domaine-com par votre propre domaine.
mkdir /etc/ssl/domaine-com/
Déposer votre certificat SSL dans le répertoire
Après avoir commandé ou fait la demande de votre certificat SSL gratuit chez IONOS vous avez 3 fichiers à récupérer :
Le certificat SSL : Il s’agit d’un fichier au format .cer ou en .crt
Votre clé privée : Il s’agit d’un fichier au format .key
Le certificat intermédiaire : Il s’agit d’un fichier au format .cer ou en .crt
Une fois que vous avez récupéré ces fichiers vous devez les déposer dans le répertoire précédemment créé. Pour cela je vous recommande d’utiliser un logiciel comme WinSCP qui vous permet d’accéder à l’arborescence de votre serveur via une interface graphique. Voici ce que cela donne pour mon site SysKB.
4 – Vérifier que votre serveur Apache écoute sur le port 443 (HTTPS)
Par défaut Apache écoute sur les ports 80 et 443. Cela signifie qu’il est déjà configuré pour recevoir des requêtes en HTTP et HTTPS. Exécutez la commande netstat afin de vérifier si c’est bien le cas :
netstat -tanpu | grep "LISTEN" | grep "443"
Vous devez obtenir un truc de ce genre qui indique que Apache écoute bien sur le port 443
tcp6 0 0 :::443 :::* LISTEN 30105/apache2
Si une erreur vous indique que netstat n’est pas installé tapez les commandes suivantes :
sudo apt update
sudo apt install net-tools
Si aucun processus Apache n’est en écoute sur le port 443 c’est qu’il n’est pas paramétré ! Pour cela identifié le fichier qui permet de configurer les ports en écoute en tapant la commande suivante :
grep -R "Listen" /etc/apache2
Dans mon cas cela m’indique que c’est le fichier ports.conf qui contient les configuration de ports en écoute
/etc/apache2/ports.conf: Listen 80
Il suffit de modifier le fichier ports.conf qui correspondant au “Listen 80”
nano /etc/apache2/ports.conf
et ajoutez simplement le code suivant
<IfModule mod_ssl.c>Listen 443
</IfModule>
Redémarrez Apache et vérifier de nouveau les ports en écoute
Pour accéder à votre site Web il existe par défaut un VirtualHost. Les serveurs Apache qui contiennent plusieurs sites contiennent autant de VirtualHost que de sites hébergés.
Pour accéder à votre site en HTTPS il faut créer un VirtualHost dédié. Pour cela il suffit de dupliquer le VirtualHost existant et de le configurer pour HTTPS. C’est beaucoup plus simple de procéder ainsi car vous êtes certains de ne pas faire de mauvaises manipulations.
Accéder au dossier contenant tous les VirtualHost disponibles:
cd /etc/apache2/sites-available
Lister les fichiers présents dans ce répertoire :
ls -la
Vous devez identifier le fichier de configuration contenant le VirtualHost correspondant à votre site HTTP. Si vous n’avez qu’un seul site il n’y aura qu’un seul fichier mais si votre serveur gère des dizaines de domaines et sous domaines vous gagnerez du temps à faire un grep :
Une fois que vous avez identifié le bon fichier il suffit de le dupliquer et le renommer. Dans cet exemple je duplique mon fichier de configuration nommé 000-default.conf en 000-default-ssl.conf.
cp 000-default.conf 000-default-ssl.conf
De cette manière je vais configurer le fichier dupliqué plutôt que le fichier d’origine
Configurer le VirtualHost pour le protocole HTTPS :
Modifiez le fichier dupliqué avec la commande nano ou avec WinSCP.
En début de fichier remplacez le port 80 du VirtualHost par le port 443 comme ceci : <VirtualHost *:443>
Ajoutez ensuite les instructions suivantes juste AVANT la balise de fin </VirtualHost>.
# On active le SSLSSLEngineOn# On active tous les protocoles (TLS v1.0, TLS v1.1 et TLS v1.2), mais on désactive SSL v2 et v3 (obsolètes et remplacés par TLS)SSLProtocolAll -SSLv3 -SSLv2
# On active les méthodes de chiffrement, et on désactive les méthodes de chiffrement non sécurisés (par la présente d'un !)SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!RC4:!DH
# On demande au navigateur de sélectionner une méthode de chiffrement en respectant l'ordre envoyée par le serveur (HIGH uniquement)SSLHonorCipherOrderon# On renseigne le chemin vers le certificat SSL de l'adresse à sécuriserSSLCertificateFile"/etc/ssl/votre-domaine-fr/www-votre-domaine-fr.cer"# On renseigne le chemin vers la clée privée correspondant au certificat SSL de l'adresse à sécuriserSSLCertificateKeyFile"/etc/ssl/votre-domaine-fr/www-votre-domaine-fr.key"# On renseigne le chemin vers le certificat SSL racine, puis vers le(s) certificat(s) SSL intermédiaire(s).# Si vous disposez de plusieurs certificats intermédiaires, vous pouvez ajouter d'autres directives SSLCACertificateFile.SSLCACertificateFile"/etc/ssl/votre-domaine-fr/certificat-intermediaire.cer"
Header always set Strict-Transport-Security "max-age=15768000"
Modifiez les chemins d’accès et les intitulés des différents certificats afin qu’ils correspondent à ceux que vous avez déposé à l’étape 3.
6 – Activer le VirtualHost
Activer le VirtualHost dans Apache
Il s’agit maintenant d’activer votre nouveau VirtualHost
a2ensite nom-du-vhost-ssl
# Pour désactiver le vhost si vous avez commis une erreur de configuration :# Executez : a2dissite nom-du-vhost-ssl
Recharger la configuration d’Apache
Et enfin charger la nouvelle configuration. On aurait pu redémarrer entièrement le service Apache, mais le Reload suffit.
service apache2 reload
A cette étape votre site est désormais accessible en HTTPS
7 – Vérifier le bon fonctionnement du certificat et le niveau de sécurité de votre site
Vérifiez que votre certificat est bien installé grâce au site SSL Checker
Connectez vous ensuite sur le site SSLLabs.com pour contrôler si votre serveur est bien sécurisé.
Sans la directive HSTS que l’on a configuré en début de tutoriel vous obtiendrez la note “A“, avec le HSTS vous obtenez un “A+“
8 – Finaliser la configuration
A cette étape votre site est déjà accessible en HTTPS.
Mais il y a encore quelques opérations a effectuer pour que tout soit complètement opérationnel
Effectuer une redirection HTTP vers HTTPS dans votre .htaccess pour éviter le Duplicate Content.
# Redirection vers HTTPS
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://syskb.com/$1 [R=301,L]
# Redirection du www vers non-www en HTTPS
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Remplacer tous les liens internes HTTP de votre site par HTTPS avec l’extension pour WordPress Search and Replace DB. Si vous n’avez pas fait de modifications manuelles ou vous auriez rentré en sur HTTP vous n’aurez pas de soucis.
Vérifier qu’il n’y ait pas d’extensions récalcitrantes qui font des appels en HTTP. C’est très simple à savoir, votre site sera sécurisé mais vous risquez de ne pas avoir le cadenas vert !
Ajoutez la version HTTPS de votre site dans Google Webmaster Tools. Ne retirez pas l’ancien car Google exige que toutes les versions de vos sites soient renseignées afin justement de ne pas vous pénaliser pour Duplicate Content. Dans la version HTTPS pensez à ajouter votre fichier https://votre-site-fr/sitemap_index.xml. Dans 10 à 15 jours dès que Google aura indexé vos pages en HTTPS vous pourrez retirer le sitemap de la propriété HTTP Google Webmaster Tools. Ceci étant cela n’a aucun impact sur l’indexation de votre site.
Son pseudo vous est peut-être connu pour ses activités sur le projet Tor, l'association Nos oignons, le projet Debian et Reproducible builds, La Quadrature du net, La Dérivation sur l'éducation populaire et les enjeux numériques, autour de multiples conférences et événements (CCC, DebConf, FOSDEM, RMLL, PSES, etc.), l'Espace Autogéré des Tanneries de Dijon, etc.
Tristesse. Et nos pensées vont à toutes les personnes qui l'ont connu et côtoyé. <3
Désactiver la vérification de la technologie de virtualisation dans le script d’installation :
sed -i 's/^\tcheckVirt/#\tcheckVirt/' wireguard-install.sh
Rendre exécutable le script :
chmod +x wireguard-install.sh
Exécuter le script pour installer Wiregard et répondre aux questions:
./wireguard-install.sh
Une fois Wireguard installé, faire ces modifications du service wg-quick@.service pour forcer la gestion de l’interface du tunnel wireguard par boringtun-cli :
sed -i '19 i Environment=WG_QUICK_USERSPACE_IMPLEMENTATION=boringtun-cli' /lib/systemd/system/wg-quick@.service
Modifier les permissions :
sed -i '20 i Environment=WG_SUDO=1' /lib/systemd/system/wg-quick@.service
Prise en compte des modifications du service par systemd :