Proxmox Virtual Environnent est une plateforme open source complète pour la virtualisation d’entreprise. Grâce à son interface web intégrée, vous pouvez facilement gérer vos machines virtuelles et conteneurs, votre stockage et votre réseau définis par logiciel, votre clustering haute disponibilité et plusieurs outils prêts à l’emploi depuis une solution unique.
Pré-requis
Un CPU 64 bits avec 2 VCPU et le support de VT-x pour les LXC (KVM) et le support de VT-d pour la fonctionnalité de PCI(e) passthrough permettant aux machines virtuelles d’accéder directement à des périphériques physiques comme des cartes graphiques ou réseau. La carte réseau doit supporter à minimum 1 Gbits. Ces dernières doivent être activé dans le bios pour être reconnue par proxmox.
Installation
On télécharge l’iso d’installation de proxmox. Avec Rufus ou autres, on prépare la clé USB d’installation.
Les premières étapes sont simples :
La suite de la configuration concerne l’interface d’administration de Proxmox.
1 – Les interfaces réseau « actives » sur votre machine sont affichées, vous permettant de sélectionner celle à configurer et à affecter en tant qu’interface de management.
2 – Spécifiez le nom FQDN de votre serveur, c’est-à-dire son nom complet : nom d’hôte + nom de domaine.
3 – Désormais, vous devez configurer l’adresse IP de votre interface d’administration. Si le serveur a récupéré une adresse IP via DHCP, celle-ci est automatiquement inscrite.
L’installation est prête a se déroulée.
L’url de connexion s’affiche a la fin de l’installation, cette adresse ne doit pas être exposer sur internet naturellement.
L’authentification est le login root et mot de passe rentrer précédemment.
Sur la version communautaire, un pop up s’affiche indiquant que la version n’est pas souscrite. La version est mis à jour comme les autres avec un petit délais mais la seul vrai restriction est le pop up a chaque ouverture de session sur la console administrative.
Configurer les mises à jours
Cliquez sur le nom de votre serveur sur la gauche.
Cliquez sur « Repositories » sous « Updates ».
Cliquez sur le bouton « Add ».
Sélectionnez le dépôt « No-Subscription » dans la liste.
Validez avec un clic sur le bouton « Add ».
On clique sur « Refresh » puis sur « Upgrade ».
On confirme par « Y » pour lancer les installation de la mise à jour.
Un reboot pour éviter toute surprise de prise en compte des mise à jours.
Pour réaliser ce home lab à peu de frais, je me suis imposé des contrainte pour sa constructions. Tous les systèmes ou logiciel sont open sources ou sous licence ouverte et répondent aux exigences d’une entreprise (sécurité, scalabilité, charge, …) mais tiennent dans un environnement limité en ressources.
Les contraintes matériels
Le matériel est un PC de type Barebone Industriel Fanless avec processeur N100 12th Gen (4 VCPU 3.40 GHz, 4 Threads, VT-x, VT-d) avec 16Go de RAM, 1 GPU Intel® UHD Graphics 750 Mhz 24 Threads) 2 ports réseau ,2 ports COM, 2 HDMI, 4 ports USB, Wifi 5 (AC) 2 Antennes ,BT 4.2. Le matériel aura coûté 175€ en 2023.
Les contraintes réseaux
Les deux ports réseaux 1Gb sont utilisé pour un pour la connexion à la box et l’autre vers des équipements internes.
Les contraintes logiciels
Pour pouvoir simulés plusieurs machines, je me suis tourné vers la solution Proxmox. Cette solution d’entreprise propose une version communautaire pour une utilisation personnel. La solution est basé sur un linux débian. Elle propose des conteneurs LXC (KVM) ou des machines virtuel (qému).
Les contraintes d’environnements
En raison du peu de CPU, un seul environnement de développement et de productions cohabitent.
Consommation / impact environnementale
Évidemment tout ceci a un coût, la consommation du barbone est de 26w ce qui est peu car peu puissant mais suffisant pour quelque tests.
Schéma d’architecture du home lab
Pour la démonstration, on crée deux conteneurs LXC (KVM). Un pour le firewall (pfsense) et un conteneur pour portainer.io (solution basé sur docker). Avec docker un conteneur pour le reverse proxy (ici Ngnix Proxy Manager) pour permettre d’accéder au autre conteneur docker.
Cette solution est la plus minimalistes et s’adaptera facilement au toute petite configuration matériel.
Avec un configuration plus importante, on peut remplacer pfsense par une solution Fortinet (licence de démonstration 4 connexion simultanés) et docker par kubernetes/docker.
« Ce qui est important est rarement urgent, et ce qui est urgent rarement important. » Dwight D. Eisenhower, 34e président des États-Unis
De là, une matrice d’Eisenhower a été développée à partir de cette citation, comme moyen d’aider les gens à donner des priorités à leurs tâches. En français, on l’appelle plus souvent « la matrice de nécessité », et elle se présente sous cette forme.
Le principe est simple.
On élimine/archive toutes les tâches qui ne sont pas importantes pour le métier / produit et qui mobilisent une équipe. Attention, tout de même a veiller au changement d’importances (I will be back…log).
Toutes les tâches non urgentes mais qui apportent de la valeur sont planifiées.
On délègue les tâches à faible valeur ajoutée qui doivent être traitées.
On traite l’essentiel pour rester concentré sur son métier / produit.
On peut également définir la priorité de l’éléments d’un backlog comme suit :
Remplacer une chaine de caractère dans une arborescence
# En bash
find /chemin/du/dossier -type f -exec sed -i 's/ancienne_chaine/nouvelle_chaine/g' {} \;
Recherche rapide de fichier/répertoire à partir d’une portion de nom
# Install debian => apt install locate
# pour mettre à jour l'index => upgradedb
locate monfichier
Recherche de fichier d’une certaine taille
# fichier de 10 Giga => G = Giga k = kilo ou sans précision = Octect
find ./ -type f -size +10G -ls
Réseaux
Affichage des routes
# Debian
ip -4 route
ip -6 route
#netstat --route
#route -n
# AIX / redhat
route print
netstat -m
Tracer les paquets réseaux
# Debian/AIX
traceroute host
Afficher les interfaces réseaux
# Debian
ip addr
# ipconfig
Afficher les ports occupés
# Debian
ss -tupln
Afficher les règles du pare-feu
iptables --list --line-numbers
Système d’exploitation
Afficher les infos de la machine
##### Mémoire #####
free
# cat /proc/meminfo | grep ʺSwapTotal:ʺ | awk '{print $2}'
# cat /proc/meminfo | grep ʺMemTotal:ʺ | awk '{print $2}'
# cat /proc/meminfo | grep ʺSwapFree:ʺ | awk '{print $2}'
# cat /proc/meminfo | grep ʺMemFree:ʺ | awk '{print $2}'
##### CPU/VCPU #####
# Nombre de CPU => cat /proc/cpuinfo | grep processor | wc -l
mpstat -P ALL
##### Heure de démarrage #####
uptime
##### Version de l'OS #####
# uniquement la version noyau => uname -or
uname -a
##### Point de montage des FS #####
# cat /etc/fstab
mount
Performance de la machine
Moniteurs de processus
htop
#top est bien pour la sortie texte brut pour du post-traitement
Vision statistique du système
Dstat est un outils chapeau pour monitorer les performances du système Linux. Toutefois , il n’est pas installé par défaut et donc nécessite les droits sudo pour lancer l’install.
# Pour l'installer
# sudo apt-get install dstat
# lancement en interactif
dstat -tncms
# lancement avec sortie dans un fichier csv toute les 10 sec.
dstat -tncms --output /tmp/file.csv 10
Vision statistique du système (moins complet)
# sudo apt install sysstat
# Activer les traces
# sed -i 's/ENABLED=\"false\"/ENABLED=\"true\"/g' /etc/default/sysstat
# Désactiver les traces
# sed -i 's/ENABLED=\"true\"/ENABLED=\"false\"/g' /etc/default/sysstat
# sudo systemctl restart sysstat
sar -B
Si le nombre de pages mémoire inactives est faible (sar -R)(frmpg/s & Active/Inactive) dans meminfo , il faut rajouter de la mémoire.
I/O des FS
!/bin/bash
# Le détail des colonnes => https://www.globo.tech/learning-center/install-use-iostat/
# exemple de script
echo /dev/null > out.txt
Nombre=1
while [ $Nombre -le 5 ] # pour 5 mesures
do
# Filtre pour surveiller les fs sur sda1.
iostat -d -x | grep sda1 >> out.txt
# Attendre 5 secondes
sleep 5
# decompte des mesures
((Nombre++))
done
Le fichier de sortie peut être traiter (graphique croiser dynamique) par Excel ou un autre tableur.
Cas 1) Il y a un fort volume d’accès sur tous les périphériques et que les r/s & w/s sont élevés et/ou rrqm/s & wrqm/s sont élevés alors il y a une incapacité du système à tenir la charge IO.
Cas 2) Les tailles de la file sont importante sur tous les périphériques, si avgrq-sz et avgqu-sz sont élevés alors le système est dans l’incapacité de tenir la charge des IO.
Solution à envisager: Il faut augmenter le nombre et/ou la capacité des canaux accédants aux périphériques de stockage.
Cas 3) Il y a un fort volume d’accès sur N périphériques, si r/s w/s et/ou rrqm/s wrqm/s sont élevés ou si avgrq-sz et avgqu-sz sont élevés alors le Volume en IO est mal équilibré sur les N périphériques.
Solution à envisager: Il faut répartir les fichiers sur d’autres fs afin d’équilibré la charge.
Cas 4) Il y a des temps d’attente importants et la taille de la file d’attente des IO est faible si await est elevé et/ou avgrq-sz et avgqu-sz sont faibles.
Solution à envisager: Il faut vérifier l’utilisation des IO Asynchrones. Il faut vérifier le matériel, cela peut constituer un indicateur de matériel défectueux.
Statistiques d’utilisation de la mémoire
!/bin/bash
# Le détail des colonnes => https://access.redhat.com/solutions/1160343
# exemple de script
echo /dev/null > out.txt
Nombre=1
while [ $Nombre -le 5 ] # pour 5 mesures
do
# Suppression de l'en-tête
vmstat | tail -1 >> out.txt
# Attendre 5 secondes
sleep 5
# decompte des mesures
((Nombre++))
done
Le fichier de sortie peut être traiter (graphique croiser dynamique) par Excel ou un autre tableur.
Le DNS dynamique permet d’associer un nom de domaine à une adresse IP qui peut varier dans le temps, contrairement au DNS classique qui lie un domaine à une IP généralement fixe. Typiquement, les fournisseurs d’accès à Internet attribuent des IP dynamiques à leurs abonnés, ce qui complexifie l’accès distant à des serveurs ou équipements hébergés sur ces réseaux. Grâce à un service DDNS, chaque changement d’IP est transmis automatiquement au serveur DNS, ce qui garantit que le nom de domaine pointe toujours vers la bonne ressource.
DynDNS 💰
DynDNS est le pionnier historique du secteur. Il offre un service robuste permettant de lier un nom de domaine à une IP dynamique (hébergeant serveurs à domicile, caméras IP, ou applications mobiles) .
No-IP est l’un des services les plus populaires proposant aussi un forfait gratuit (lien à cliquer tous les mois). Il met à disposition un client facile à installer et à configurer. No-IP assure la mise à jour en temps réel du DNS chaque fois que l’IP change, facilitant l’accès aux réseaux domestiques pour les applications comme le FTP, la surveillance, ou le partage de fichiers à distance.
Dynu propose un service de DNS dynamique gratuit et complet, compatible avec une large gamme de routeurs. Sa solution permet d’obtenir une adresse fixe (de type nom.ddns.net) qui pointe toujours vers l’IP active même en cas de changement, avec support pour IPv4 et IPv6. Dynu propose également des APIs et des guides pour une intégration transparente dans l’écosystème réseau.dynu+1
Permet de conserver une copie privée de ses dvd pour pouvoir conserver les films au delà du délai de conservation des DVD 📀. Donc ,les fichiers ne doivent pas être mis à la disposition de tiers. Vous devez également conserver le support physique pour prouver que c’est une copie privée pour rester dans la légalité.
Deux outils dans le même esprits, l’un synchronise de répertoire avec la possibilité de répondre a des règle prédéfinis. l’autre recherche les fichiers en doublons sur les disques pour les supprimer ou autre.
DVD Decrypter (içi)
Il permet de copier le contenu d’un DVD vidéo sur le disque dur d’un ordinateur en une image disque. Le programme peut également graver des images au disque. Il enlève également le système de brouillage de contenu (CSS), codes de région, et prohibition d’opération d’utilisateur.
Duplique les disques d’un fichier image vers un CD/DVD et inversement. créait des images a partir d’un répertoire local et les rends bootable si besoin.
Conversion de d’image au format bin vers un format iso. Le format ISO est généralement mieux supporter par les outils de virtualisation comme VmWare, Proxmox, Virtualbox,….
Permet de suivre les appel Windows des processus sans passer par le code applicatif. Pratique pour vérifier un package après déploiement ou pour vérifier la compatibilité avec d’autre version de Windows.
Cet outil permet de lancer un live cd/dvd bootable dans un vm qému sans installation ni droit d’administration sur la machine hôte. L’outils est très pratique pour réaliser des tests de charge, de vulnérabilité, de compatibilité de navigateur, test sous Android, … .Bref tous ce qui est disponible en live CD.
Facile de prise en main pour des petites retouche de photo ou de maquette. Il est toute fois plus limité que Gimp.
GIMP (içi)
C’est le concurant direct de Photoshop mais il est open source et sous licence GPL. Il est extensible avec des plugins. un plugin permet de réorganiser les menus pour avoir la même organisation de Photoshop.
C’est l’outil de rêve pour un dev Oracle, il permet l’écriture de requête avec l’autocomplétions, indique les performances, les ressources utiliser,…. Il y a plein de rapport prédéfinie pour les DBA pour la maintenance des bases.
Permet d’explorer les bases sqlite qui sont souvent utiliser pour des petits besoin comme le stockage de configuration (ex: chrome) ou tout simplement pour creer un maquette fonctionnel sans infrastructure.
Comparateur de fichier ou d’arborescence avec un éditeur intégré pour la mise à jour. Cet outil est de nos jours utiles pour les livraisons car la gestion du code est souvent délégué à git.
C’est le petit frère de Microsoft Visual Studio dans sa version libre, il intègre nativement la gestion des dépôt, l’édition visuel des fichiers, supporte le Markdown, supporte des extensions, ….
Donne l’accès au log, aux console JS des webwiew, les processus, un shell, aux applications et au diagnostique de performance. Cerise sur le gâteau, il prend en charge le deport d’écran, de souris et clavier avec une grande fluidité.
Décompilation de programme en Java/kotlin avec une interface graphique qui encapsule l’outils en ligne de commande. Pratique pour effectuer des audit de sécurité pour vérifier le niveau d’offuscation du code compilé.
Permet de se connecter au repository de Windows Update pour les différentes édition de Windows. Il permet de forcer également l’installation des fixs ou pack de mise à jour.
Ensemble de petit outils Microsoft pour prendre en charge et dépanner votre infrastructure. Tous outils permettent de debugger ou de vérifier le déploiement à distance d’applicatif ou de stratégie que ce soit coté serveur ou coté client. Une vrai mine d’or.
HFS permet de partager rapidement des fichiers volumineux de poste à poste via HTTP quand les partage réseaux n’ont pas suffisamment d’espace. Il permet de gérer une authentification locale pour échanger en toute confidentialité.
Suite d’outils pour faire de l’inspection et de la modification de système. Le projet d’origine a été abandonnée mais un fork existe qui continue de vivre.
Java LDAP Explorer est un outils qui permet de vérifier les droits donner à un projets/user, il permet aussi d’aider dans les phase de développement pour vérifier son jeu de donnée.
Permet de faire des liens symbolique sous Windows. Pratique pour éviter la duplication de dossier ou ne pas révéler l’arboraissance d’un disque sur un serveur.
Le seul intérêt de cet outils est la modification à la volé de l’adresse MAC de l’adaptateur réseaux pour faire des tests de filtrage MAC sur un routeur ou un serveur.
Permet de suivre les processus et les threads attacher a un processus, suivre les dépendance et les performances. Process explorer fait partie de la suite sysinternal qui a été racheter par Microsoft. Les outils sont toutes de licence libre d’utilisation.
Récupérer les fichiers éffacer sur un disque même après suppression dans la corbeille. L’application affiche l’état du fichier si la récupération est possible, partiellement possible ou impossible.
Permet de comparer de version de la base de registre Windows live avec une version figée dans un fichier de sauvegarde. Pratique pour réaliser des package Windows ou la portabilité d’outils.
Ce logiciel est mal nommé car il permet la récupération de partition, volume, disque (FAT, FAT32, NTFS, EXT3,EXT4,….). Il récupère également les fichiers effacer accidentellement quel que soit le type de FS ou les clefs usb retirer un peu rapidement.
Outils indispensables pour repérer les fortes volumétrie sur les disques. il effectue un scan complet du volume et le présente sous forme visuel avec la possibilité de supprimer les fichiers directement depuis le mode visuel.
Analyser le trafic réseaux sur sa machine, on peut faire la capture en temps réel avec le pilote pcap ou en mode offline avec l’analyse des fichiers dumps.
Outil bien pratique pour les audits de sécurité car il permet d’extraire les ressources stocker dans l’exécutable. Il peut également permettre de modifier ses ressources par exemple pour la traduction en français. Attention, le projet a été abandonné mais il est fonctionnel sous Windows 11.
Animal de compagnie sur le bureaux Windows, plusieurs scénario sont disponible. l’activité est paramétrable. Attention, ce programme ne sert à rien mais est addictif.
L’interface utilisateur est simple et claire. La recherche de fichiers ou de contenue est facilité. L’Indexation des noms de fichiers rend la recherche rapide et en temps réel.
Permet d’ouvrir un explorateur de fichier avec prise en charge du réseau avec la possibilité d’utiliser un autre utilisateur ( runas ) que l’utilisateur interactif de la session.
File assassin (içi)
Déverrouille les fichiers bloqué par un processus et peut procéder à sa suppressions.
Gestionnaire de mot de passe populaire permet de chiffrer tout les mots de passe pour des site ou des applications. Permet également de généré un mot de passe si l’inspiration ne vient pas.
Bloc note qui permet de chiffrer/déchiffrer un note texte. C’est pratique pour envoyer des mots de passe ou conserver des information sensible sur un profil itinérant.
Permet de faire du montage vidéo, de la resynchronisation de son, de la conversion de format (long), retouche, …. Le projet est abandonnée mais l’outils fonctionne sous Windows 11.
Pour lire tout les formats de vidéo sans se poser de questions, la gestion des streaming est pris en charge ainsi que la capture de flux vidéo. Le tout est disponible dans VLC. Si l’on souhaite poursuivre avec du montage vidéo VLMC prend le relais avec plaisir.
Comme son nom l’indique il permet de rendre offline un site web. Même si l’intérêt est limité car wget fait la même chose. Cela permet d’avoir visuellement ce que peut voir un indexeur de site et de repérer les erreurs 40x et 50x dans les pages.
Avec ce navigateur texte, il est plus facile de voir ce que voit un bot google (par exemple). Très pratique pour mieux comprendre le référencement fait par les moteurs de recherche.
Pour vérifier que le serveur est bien lancer, allez à http://localhost:5678 avec un navigateur local. Sur ssh, le navigateur lynx fait l’affaire.
Pour changer l’adresse d’écoute du serveur NodeJS, il faut modifier le fichier de script start.sh.
La variable HOST doit prendre la variable « 0.0.0.0 » pour écouter sur toutes les interfaces.
Configuration de N8N
Entrer la clé d’activation gratuite pour la version communautaire reçu par mail.
Un seul utilisateur peut être créer, en l’occurrence, c’est celui qui est crée lors de la phase d’inscription.
Les informations reste modifiable après l’installation dans les « settings » […] de l’application.
Si vous exposer se service sur Internet avec un serveur dédié, il est recommander de configurer l’authentification double facteur et de changer sont mot de passe dans la section « Personal ».
Il est possible de communiquer avec cette instance N8N via les API (béta).
Et c’est tout pour la version communautaire, le reste des fonctionnalité comme le SSO, la délégation d’authentification vers LDAP, les multiples instance, le partage de secret, la vision de log en temp réel sont réservées a une version payante avec un plan de financement.
Les outils
Pour configurer des outils N8N, il faut créer les « Credential » en cliquant sur le gros plus en haut à gauche.
Ollama
Ajout Ollama pour ajouter une intelligence artificielle.
J’entre l’adresse en http du serveur ollama avec le port par défaut 11434 et je valide. Oui c’est tout.
Pour sécuriser la configuration d’un serveur d’applications web (Apache,…), il est crucial de limiter les failles exploitables et de protéger les données, car Apache est souvent la porte d’entrée principale d’un système web. Voici les étapes essentielles (et pourquoi chacune importe) pour renforcer la sécurité de ton serveur Apache :
1. Garde ton serveur à jour
Pourquoi ? Les mises à jour corrigent rapidement les vulnérabilités découvertes dans Apache ou dans ses dépendances. Un serveur obsolète est une cible facile pour les attaquants.
Comment ? Utilise la commande adaptée à ton système, par exemple
sudo apt update && sudo apt upgrade apache2
2. Cache les informations sur le serveur
Pourquoi ? Moins l’attaquant en sait, plus il aura de mal à cibler les failles spécifiques. Masquez la version et limite les informations divulguées dans les en-têtes HTTP et pages d’erreur.
Comment ? Dans la configuration (/etc/apache2/conf-enabled/security.conf ou apache2.conf), ajoute/modifie
ServerTokens Prod
ServerSignature Off
3. Désactive l’indexation des répertoires
Pourquoi ? Empêche un pirate de lister les fichiers via le navigateur, ce qui pourrait l’aider à préparer une attaque.
Note importante : le serveur doit avoir accès à internet et les routes doivent être ouverte vers le port 80 (vérification challenge) du serveur dans le mode standalone. Il est fortement déconseillé d’utiliser des wildcards dans les noms de domaine.
Renouvellement automatique
Let’s Encrypt délivre des certificats valides 90 jours. Pour automatiser le renouvellement :
sudo certbot renew
Ajoutez-le dans une tâche cron/planificateur pour qu’il s’exécute régulièrement.
Coté apache, il faut ajouter les certificats généré par certbot ou fournit par votre autorité de certification. Le virtual host devra comporter a minium les lignes suivantes :
<VirtualHost *:443>
ServerName votredomaine.com
ServerAlias www.votredomaine.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/votredomaine.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/votredomaine.com/privkey.pem
# Autres directives utiles
</VirtualHost>
8. Met en place un pare-feu applicatif (WAF)
Pourquoi ? Un WAF, comme ModSecurity, bloque les attaques courantes (injections SQL, XSS…) avant qu’elles n’atteignent ton site.
Comment ? Installe ModSecurity et active le jeu de règles OWASP CRS.
<IfModule mod_security2.c>
Include /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf
</IfModule>
Règles OWASP (CRS) : activez les “Core Rule Set” fournis sur leur dépôt officiel par l’OWASP pour une protection à jour contre tous les types d’injection.
Rendez-vous dans le dossier cloné et copiez les fichiers nécessaires dans le répertoire de configuration de ModSecurity, généralement /etc/modsecurity/ :
Pourquoi ? Limite l’exposition des outils d’administration ou répertoires critiques.
Comment ? Utilise l’authentification de base/digest et restreins par IP l’accès aux interfaces d’administration. Par exemple, le répertoire/API admin :
<Directory /admin> AuthType Basic Require ip 1.2.3.4 </Directory>
10. Configure les principaux headers de sécurité
Pourquoi ? Ils protègent contre le clickjacking, le XSS, la fuite d’informations, etc.
Comment ? Dans ta configuration ou avec mod_headers modifieces headers. Ils durcissent efficacement la sécurité côté navigateur.
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set Content-Security-Policy "default-src 'self'"
Header always set Referrer-Policy "no-referrer"
Header unset X-Powered-By
11. Restreindre les accès et isoler chaque VirtualHost
Pourquoi ? Restreindre la surface d’attaque et limiter les possibilité a strict minimum
Comment ? Évitez l’exécution de fichiers PHP/CGI non nécessaires ; contrôlez précisément les autorisations sur les dossiers du VirtualHost.
1. Restreindre les répertoires d’exécution CGI/PHP
Utilisez la directive ScriptAlias pour limiter les répertoires autorisés à exécuter du CGI.
ScriptAlias /cgi-bin/ /var/www/mon-site/cgi-bin/ <Directory "/var/www/mon-site/cgi-bin"> Options +ExecCGI AddHandler cgi-script .cgi .pl Require all granted # Restreindre le type de fichier (voir plus bas) </Directory>
N’autorisez que les extensions strictement nécessaires. N’installez jamais de scripts CGI dans des répertoires accessibles librement sans contrôle
11. Surveille et analyse les logs
Pourquoi ? Pour repérer rapidement les attaques ou comportements suspects.
Comment ? Active et consulte régulièrement les logs d’accès et d’erreur.
12. Valider et filtrer les entrées côté application
Pourquoi ? Elles protègent les entrées contre les injections XSS, SQL. Elles permets de garantir un bon fonctionnement de l’application Web avec des comportement attendus.
Comment ? Validez systématiquement toutes les entrées dans votre application (back-end). Utilisez des requêtes préparées (prepared statements) pour les accès SQL, et filtrez/encodez toutes les données affichées pour se prémunir du XSS. Des expressions régulières peuvent remplir cette tache mais elle ne peuvent pas couvrir tout les cas.
# Numéro de téléphone français (10 chiffres, avec ou sans espace) :
^0[1-9][0-9]{8}$
# Code postal français : Exactement 5 chiffres.
^\d{5}$
# Nom/prénom (uniquement lettres, espaces et traits d’union) :
^[A-Za-zÀ-ÖØ-öø-ÿ- ]+$
# Mot de passe (au moins 8 caractères, avec majuscules, minuscules, chiffre et caractère spécial) :
^(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[\W_]).{8,}$
# Adresse e-mail : Permet de valider une adresse e-mail standard.
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$
# Numériques : Entier positif (sans signe)
^\d+$
# Entier négatif ou positif (optionnellement signé)
^-?\d+$
# Nombre décimal avec point ou virgule
^-?\d+[.,]?\d*$
# Montant monétaire en euros (ex. 1 234,56 € ou 1234.56)
^\d{1,3}(?:[ \.,]?\d{3})*(?:[.,]\d{2})?$
# 🔠 Lettres et caractères : Nom ou prénom simple (lettres, espace, tiret, accents)
^[A-Za-zÀ-ÖØ-öø-ÿ\- ]{2,50}$
# Champ alphanumérique (lettres + chiffres)
^[A-Za-z0-9]+$
# Champ alphanumérique avec espaces
^[A-Za-z0-9 ]+$
# Champ alphanumérique étendu avec ponctuation simple
^[A-Za-z0-9À-ÖØ-öø-ÿ .,'’"\-()?!]+$
# 📧 Internet / Web : Adresse e-mail (version stricte)
^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$
# URL de site Web
^(https?:\/\/)?(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/\S*)?$
# Adresse IPv4 (simple)
^(\d{1,3}\.){3}\d{1,3}$
# 📅 Dates et heures : Date au format français (jj/mm/aaaa)
^(0[1-9]|[0-9]|3)\/(0[1-9]|1[0-2])\/(19|20)\d{2}$
# Date au format ISO (aaaa-mm-jj)
^\d{4}-\d{2}-\d{2}$
# Heure au format HH:MM (24h)
^([0-9]|2[0-3]):[0-5][0-9]$
# 📞 Téléphone / Contact : Numéro de téléphone français (national)
^0[1-9]\d{8}$
# Numéro international (+33, espace ou tiret)
^\+33 ?[1-9]( ?\d{2}){4}$
#💬 Autres : Adresse postale libre (avec lettres, chiffres, ponctuation)
^[A-Za-z0-9À-ÖØ-öø-ÿ\s'’\-,./#]{5,100}$
# Nom d'utilisateur (lettres, chiffres, underscore, 3-20 caractères)
^[a-zA-Z0-9_]{3,20}$
# Mot de passe (8+ caractères, avec maj, min, chiffre, symbole)
^(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[\W_]).{8,}$
Principes de base des expressions régulières pour contrôle de saisie :
^ indique le début de la chaîne.
$ indique la fin de la chaîne.
[0-9] pour un chiffre, [A-Za-z] pour une lettre.
{n} pour exiger un nombre exact de caractères.
\d équivalent à [0-9].
+, *, {min,max} pour le nombre d’occurrences.
En HTML, utilisez l’attribut pattern sur vos champs de formulaire pour appliquer ces regex, exemple : Adaptez chaque expression selon vos besoins de validation. Pour des exemples plus complexes (dates, montants, etc.), référez-vous aux documentations développées.
Attention : Ce contrôle doit idéalement être fait à la fois côté client (JavaScript/HTML5) et côté serveur (PHP/Python, etc.) pour garantir la sécurité et l’intégrité des données.
😁 N’oublier pas de redémarrer les services concerner
En résumé : La sécurité commence par des mises à jour régulières, la minimisation des informations exposées, la limitation des modules actifs, la restriction des accès, le chiffrement des échanges, l’utilisation d’un WAF, l’implémentation de headers de sécurité, et la surveillance constante des logs et des entrées. Le déploiement et la configuration soigneuse de ModSecurity avec les règles OWASP CRS protègent la grande majorité des attaques par injection côté Apache. Toutes ces mesures visent à réduire la surface d’attaque, à protéger les données et à détecter rapidement toute tentative d’intrusion.
Les prérequis pour un utilisateur sont 4 VCPU minimum. Il faut pour faire tournée de petit model (7 Billions de paramètres) 16 Go de RAM. Pour l’espace disque tout dépendra du nombre de model chargé mais 30 Go me semble un minimum tout compris.
Pour installer Ollama, il n’y a rien de plus simple tout se fait en une commande depuis avec le script d’installation officiel.
Le WARNING est normal dans un environnement virtuel sans pont vers le hardware. Pour lever cette contrainte, il faudra configurer proxmox spécifiquement pour le conteneur si toute fois la machine hôte comprend une carte Nvidia.
Vérifions que tout fonctionne, en affichant la version installée.
ollama –version
Maintenant, vérifiions que le service linux fonctionne.
service ollama status
Si vous souhaitez exécuter Open WEBUI sur la même instance, vous pouvez ignoré cette section.
Nous allons changer l’adresse d’écoute de Ollama pour la faire écouter sur toute les adresses (0.0.0.0) ou une adresse spécifique.
On modifie le service linux pour la prise en compte d’une nouvelle variable d’environnement.
sudo vi /etc/systemd/system/ollama.service
Dans la section service, ajoute la ligne OLLAMA_HOST,
On vérifie que la prise en compte est faite, avec la commande suivante :
ss -tupln
S’il la commande indique une étoile alors l’écoute se fait pour tout les adresses IP (Attention IPV6 par défaut). Au cas ou il faut écouter sur les deux protocoles, il faut activer le forwording au niveau TCP/IP.
Activons le fowording TCP/IP pour tout les protocole TCP dans le fichier de configuration sysctl.conf.
Souvent, pour évoquer l’agilité on parle de la vision et du développement par étape.
L’erreur la plus commune, comme dans l’exemple de construction incrémentale (étape par étape) de « la joconde » allant d’un point de départ a une finalité de produit. Mais cet exemple est trompeur, car il est important de prendre en compte les changements d’orientations en cours de réalisation et de se reposer les questions sur les orientations choisies.
Exemple commenté entre la joconde et un tableau de Picasso.
Un plan de développement incrémentale
Dans les 3 cas de gauche, il y a un point commun ; la finalité . Tous les déroulements, certes différentes mais il converge tous vers la même définition de « la Joconde ».
Les plans de réalisation démontrent qu’il est possible de :
Dans le cas 1, le travail est fait par région. Celles qui avaient le plus de valeur pour le peintre/le public en premier ?
Dans le cas 2, par affinage successif de la qualité du rendu.
Dans la cas 3, de manière linéaire haut à gauche vers en bas à droite.
Mais, ils manquent d’agilité les uns comme les autres car tous arrivent au même résultat, c’est dire qu’elles ont suivi le plan initial.
Dans ces trois cas on est dans du « Vrum » (cycle en V fait en Scrum), c’est à dire, la réalisation d’une prédiction précise. c’est l’un des pièges les plus courant que l’on rencontre le plus souvent dans les trains qui démarrent.
Une vision par itération successive
Dans le cas de droite, on montre les différentes étapes de construction du produit (ici la peinture) et chaque étape (innovation) peut être considéré comme une œuvre à part entière.
A chaque itération, on passe d’un bouquet de rose, à poisson, une poule, un masque, des ombres qui dansent …
On comprend du coup, qu’il n’y a pas de plan final détaillé et connu d’avance. Les incertitudes de l’artiste guide la réalisation, sans plan final, avec sa capacité à orienter, pivoter et décider de clore ou pas son œuvre.
On laisse la place a un monde complexe, rempli d’incertitudes, terrain de jeu favori de l’agilité.
Il n’y a que la réalisation suivi d’une visualisation (la démo 😁) qui permettra à l’artiste d’affiner et de faire évoluer son œuvre.
En peinture, les analyses aux rayons X d’un grand nombre de tableaux ont montré des constructions similaires, par couches ou itérations successives parfois très différentes du résultat final.
Voici la vidéo réalisée lors de la création de l’œuvre de Picasso qui démontre les changements d’orientations en cours de réalisation.