Outils auto-hébergé
- Checker
- SEO (Search Engine Optimization)
- Encrypt et Decrypt
- HTTP (Hyper Text Transfer Protocol) et HTTPS (Hyper Text Transfer Protocol Secure)
- BookStack
- GRAV
- HAProxy
Checker
se qu'il faut vérifier pour son site et les outils pour.
SEO (Search Engine Optimization)
SEO c'est quoi ?
Le SEO est un thermes qu'on utilise pour parler des caractéristiques techniques d'un site ( compréhension du site, optimisation de votre site, sécurité de votre site etc etc ). Le respect SEO est très important pour votre site a la fois pour le référencement, la confiance et la crédibilité que va donner votre site aux clients ou visiteurs, si le SEO est respecter alors on vous donnera un score, un score noté sur 100, si vous avez un bon score alors les moteurs de recherche seront plus aptes à mettre en avant votre site et donc cela vous donnera un avantage concurrentiel.
Comment on calcul le score SEO
Pour calculer votre score SEO vous pouvez utilisé le site PageSpeed Insight outils de Google même pour calculer et donner votre score SEO, il permet aussi de vous dire les choses a changer pour augmenter votre score et certains autres petits tips pour améliorer votre site.
Encrypt et Decrypt
Le chiffrement, ou cryptage, est un procédé permettant de rendre l'information incompréhensible à toute personne n'ayant pas la clé spécifique pour la déchiffrer. Il existe plusieurs types de chiffrement, chacun avec ses spécificités et domaines d'application. Voici les principaux types de chiffrement et leurs définitions :
1. Chiffrement symétrique
Le chiffrement symétrique utilise la même clé pour le chiffrement et le déchiffrement des données. Cette méthode est rapide et efficace pour de grandes quantités de données mais nécessite que la clé soit partagée entre l'émetteur et le récepteur de manière sécurisée.
Exemples :
- AES (Advanced Encryption Standard) : C'est l'un des algorithmes de chiffrement symétrique les plus utilisés et considérés comme très sécurisés.
- DES (Data Encryption Standard) : Anciennement un standard, il est aujourd'hui considéré comme obsolète en raison de sa clé relativement courte.
- 3DES (Triple DES) : Une amélioration de DES qui effectue le chiffrement trois fois pour augmenter la sécurité.
2. Chiffrement asymétrique
Le chiffrement asymétrique utilise une paire de clés : une clé publique pour le chiffrement et une clé privée pour le déchiffrement. Cette méthode permet un échange sécurisé d'informations sans avoir besoin de partager une clé secrète, mais elle est généralement plus lente que le chiffrement symétrique.
Exemples :
- RSA (Rivest-Shamir-Adleman) : L'un des premiers systèmes de chiffrement asymétrique et encore largement utilisé pour la sécurisation des échanges sur Internet.
- ECC (Elliptic Curve Cryptography) : Une approche plus récente qui offre des niveaux de sécurité comparables à RSA mais avec des clés plus courtes, ce qui le rend plus rapide et moins gourmand en ressources.
3. Chiffrement par hachage
Bien que techniquement pas un chiffrement au sens traditionnel, le hachage transforme les données en une empreinte numérique de taille fixe, ce qui est utile pour la vérification de l'intégrité des données ou la sécurisation des mots de passe. Les fonctions de hachage sont conçues pour être à sens unique, ce qui signifie qu'il est pratiquement impossible de retrouver les données d'origine à partir de l'empreinte.
Exemples :
- SHA (Secure Hash Algorithm) : Famille d'algorithmes de hachage, avec SHA-256 et SHA-3 parmi les variantes les plus courantes.
- MD5 (Message-Digest Algorithm 5) : Anciennement utilisé pour le hachage, maintenant considéré comme vulnérable et déconseillé pour les applications de sécurité.
4. Chiffrement homomorphe
Ce type de chiffrement permet de réaliser des opérations sur des données chiffrées sans avoir besoin de les déchiffrer au préalable. Cela ouvre des possibilités pour le traitement sécurisé des données dans le cloud, par exemple.
5. Chiffrement stéganographique
La stéganographie n'est pas un chiffrement à proprement parler, mais plutôt une méthode de dissimulation d'informations à l'intérieur d'autres fichiers, tels que des images ou des fichiers audio, de manière à ce que la présence de l'information cachée ne soit pas détectable.
Chacun de ces types de chiffrement a ses propres forces et faiblesses, et le choix entre eux dépend des besoins spécifiques en matière de sécurité, de performance et de gestion des clés.
Exercice :
Alice et Bob doivent s’échanger des messages de manière sécurisée.
Ils doivent s’assurer que les messages qu’ils reçoivent ont bien été envoyé par l’un ou l’autre.
Aujourd’hui, Bob envoie un message pour inviter Alice à un rendez-vous secret :
« Bonjour Alice, rendez-vous ce soir à 19h34 devant la porte du 26 bis rue de la République. Assure-toi de ne pas être suivie. Bob ».
Ceci est le message que vous utiliserez dans ce TP.
Étape 0 :
Génération de la clé privée et public
Étape 1 :
Vous jouez le rôle de Bob qui envoie le message à Alice. Avec quelle clé doit-il signer le message ?
- Avec la clé privée
Côté Bob :
Côté de Alice (avec clé public de Bob ) :
Côté de Alice (avec clé public de quelqu'un d'autre ) :
Le message n'est pas déchiffrable avec la clé public de quelqu'un d'autre.
Étape 2 :
Vous allez maintenant reprendre le rôle de Bob qui envoie le message à Alice, et cette fois, vous allez simplement chiffrer (dans la page « Encrypt(+Sign) ») le message avec la clé publique d’Alice, sans renseigner votre clé privée pour signature.
Mettez ce fichier chiffré à disposition de votre binôme.
(côté de Bob) :
(côté de Alice) :
Toutefois, vous n’êtes pas capable de prouver que c’est Bob qui vous a bien envoyé ce message. Essayez de vérifier la signature du message avec la clé publique de Bob. Que constatez-vous ?
Étant donné qu'aucune clé n'a été mise pour la signature, même avec la clé public de Bob on peut pas vérifier si c'est bien lui qui l'a envoyé.
Étape 3 :
Cette fois, en tant que Bob, vous cryptez le message avec la clé publique d’Alice, et vous signez le message avec votre clé privée.
Envoyez ce message à Alice.
(côté de Bob) :
(côté de Alice) :
Cette fois on remarque bien que c'est bien Bob qui a signer se message crypter.
Remarquez que si vous ne renseignez pas la clé publique de Bob, vous réussissez à décoder le message mais vous ne pouvez pas prouver que c’est Bob qui est l’auteur. Notez ce message.
Étape 4 :
Bob et Alice doivent maintenant s’échanger de très gros volumes de données. Le problème de leur méthode de communication, c’est qu’ils utilisent une méthode de chiffrement/déchiffrement asymétrique, qui utilise beaucoup de ressources de leurs ordinateurs.
Génération de la clé de chiffrement d’un niveau de sécurité 128-bit
Hex Key: 3795176940c7ccaa4d302eee81e0b3ea
Plain text key: RID KURT SHED FIVE FACT BECK ANNE FITS MIMI ASH COG VOID
Reverse: 3795176940c7ccaa4d302eee81e0b3ea
Le chiffrement de la clé générée ( 3795176940c7ccaa4d302eee81e0b3ea ) peut se faire dans le site pgptool avec la clé publique du receveur du fichier et signé par la clé privée de l’émetteur.
Le chiffrement d’un fichier avec la clé AES générée peut se faire sur le site CyberChef. Sélectionnez :
- Key en HEX pour venir y mettre la clé générée précédemment
- Mode ECB
- Input : Raw
- Output : Raw
Pour déchiffrer le message, sélectionnez sur le site CyberChef, AES Decrypt avec le même paramétrage que AES Encrypt.
On remarque bien que le l'output décrypter est le même que l'input avant l’encryptions.
Mettez en œuvre le transfert d’un fichier quelconque de Alice vers Bob avec cette méthode PGP. Détaillez dans votre rapport, étape par étape avec explications et copies d’écran, les actions effectuées pour réussir ce transfert.
1. image encryption
2. AES key encryption
3. Décryption de la clé
4. Décryption de l'image avec la clé AES obtenue avant
Magnifique image décryptée :
HTTP (Hyper Text Transfer Protocol) et HTTPS (Hyper Text Transfer Protocol Secure)
HTTP c'est quoi ?
HTTP est un protocole pour transférer des données au sein d'un réseau, la plupart du temps le protocole HTTP est utilisé pour les site web et les API. Il existent 2 principales catégories dans les messages HTTP :
-
Les requêtes : Une requête HTTP est envoyée par le client pour demander des actions ou des ressources spécifiques au serveur. Si vous observez une requête HTTP vous vous apercevrez qu'elle est composée de différentes parties :
1. Ligne de Requête : Elle inclut la méthode HTTP (GET, POST, PUT, DELETE, etc.), l'URI (Uniform Resource Identifier) de la ressource demandée, et la version du protocole HTTP.
2. En-têtes (Headers) : Fournissent des informations supplémentaires sur la requête ou le client, comme le type de contenu accepté (Accept
), le type de contenu envoyé (Content-Type
), les cookies (Cookie
), etc.
3. Corps (Body) : Non présent dans toutes les requêtes, le corps contient les données envoyées avec la requête, par exemple, les données d'un formulaire soumis via une méthode POST.
-
Les réponses : Une réponse HTTP est envoyée par le serveur en réaction à une requête HTTP reçue. Elle se compose de :
1. Ligne de Statut : Inclut la version du protocole HTTP, un code de statut (par exemple, 200 OK, 404 Not Found, 500 Internal Server Error) et une phrase de raison expliquant le code de statut.
2. En-têtes (Headers) : Fournissent des informations sur le serveur et la réponse, comme le type de contenu de la réponse (Content-Type
), les cookies (Set-Cookie
), la mise en cache (Cache-Control
), etc.
3. Corps (Body) : Contient les données de la réponse proprement dites, telles que le contenu d'une page web HTML, une image, des données JSON, etc.
Exemples :
requête :
GET /hello.txt HTTP/1.1
User-Agent : curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host : www.example.com
Accept-Language : en
réponse :
HTTP/1.1 200 OK
Date : Wed, 30 Jan 2019 12:14:39 GMT
Server : Apache
Last-Modified : Mon, 28 Jan 2019 11:17:01 GMT
Accept-Ranges : bytes
Content-Length : 12
Vary : Accept-Encoding
Content-Type : text/plain
Hello World !
BookStack
GRAV
Explication GRAV
1. Avantages & Inconvénient
Caractéristique | WordPress | Grav |
---|---|---|
Type | CMS traditionnel | CMS basé sur des fichiers |
Facilité d'installation | Installation simple avec un environnement de serveur PHP et une base de données MySQL | Installation très simple, sans base de données, juste besoin de PHP |
Performance | Bonne, mais peut nécessiter des plugins de mise en cache pour des sites à fort trafic | Excellente, grâce à l'absence de base de données et à la mise en cache intégrée |
Sécurité | Bonne, avec des mises à jour régulières, mais nécessite une attention en raison de sa popularité (cible fréquente des hackers) | Très bonne, bénéficie d'une surface d'attaque réduite en raison de l'absence de base de données |
Personnalisation | Très élevée, avec des milliers de thèmes et de plugins disponibles | Bonne, avec des thèmes et plugins, mais moins étendue que WordPress |
Facilité d'utilisation | Interface utilisateur intuitive, convient aux débutants | Courbe d'apprentissage légèrement plus raide due à l'approche basée sur les fichiers |
Communauté et Support | Très grande communauté, beaucoup de ressources, tutoriels, et forums de support | Communauté plus petite mais croissante, ressources et documentation en développement |
Gestion des médias | Gestion avancée des médias avec bibliothèque intégrée | Gestion basique des fichiers média, sans interface de bibliothèque dédiée |
Multi-utilisateurs | Gestion intégrée des utilisateurs avec différents rôles et permissions | Supporte les multi-utilisateurs mais avec des configurations plus manuelles |
SEO | Bon avec l'utilisation de plugins comme Yoast SEO | Bon, avec des fonctionnalités SEO intégrées et des plugins disponibles |
Adaptabilité | Très adaptable, convient à une large gamme de sites, y compris les boutiques en ligne | Plus adapté aux sites plus légers et rapides, comme les blogs, portfolios, et sites corporatifs |
Utilisation GRAV
Grav est un système de gestion de contenu (CMS) moderne et léger, conçu pour simplifier la création et la maintenance de sites web. Contrairement à des systèmes plus traditionnels comme WordPress, Grav est basé sur des fichiers plutôt que sur une base de données. Voici une explication simple de son utilisation pour un utilisateur lambda :
Installation
L'installation de Grav est très simple. Il suffit de télécharger le paquet Grav depuis le site officiel, de le décompresser et de le transférer sur votre serveur web. Comme Grav ne dépend pas d'une base de données, vous n'avez pas à vous soucier de la configuration de MySQL ou d'un autre système de gestion de base de données. Tout ce dont vous avez besoin est un serveur web avec PHP.
Structure des fichiers
Grav organise son contenu en utilisant une structure de dossiers et de fichiers. Chaque page de votre site est représentée par un dossier et un fichier markdown. Le fichier markdown contient le contenu de la page, tandis que le dossier peut également contenir des images et d'autres ressources associées à cette page. Cela rend la gestion du contenu assez intuitive, car vous pouvez facilement voir et organiser la structure de votre site dans l'explorateur de fichiers.
Thèmes et Plugins
Grav permet de personnaliser l'apparence de votre site via des thèmes et d'étendre les fonctionnalités à l'aide de plugins. Il existe une variété de thèmes et plugins disponibles que vous pouvez installer directement depuis l'admin de Grav. Cela permet même aux utilisateurs non techniques d'ajouter des fonctionnalités avancées à leur site ou de changer son apparence sans écrire une seule ligne de code.
Administration
Pour ceux qui préfèrent une interface graphique, Grav offre un plugin d'administration optionnel. Ce plugin fournit un tableau de bord élégant et facile à naviguer pour gérer votre site. Vous pouvez créer, modifier, et organiser vos pages, configurer les plugins et les thèmes, et ajuster les paramètres de votre site, le tout à partir d'une interface conviviale.
Avantages pour l'utilisateur lambda
- Simplicité : Grav est très simple à installer et à configurer, même si vous n'avez pas de compétences techniques approfondies.
- Performance : En l'absence de base de données, les sites Grav chargent rapidement, offrant une meilleure expérience utilisateur.
- Flexibilité : La personnalisation via des thèmes et des plugins permet de facilement adapter votre site à vos besoins sans complexité.
- Contrôle : La structure basée sur des fichiers donne un contrôle complet sur le contenu et la structure de votre site, facilitant la sauvegarde et le déplacement.
En résumé, Grav est un excellent choix pour les utilisateurs à la recherche d'un CMS léger et flexible, parfait pour créer rapidement des sites performants sans se plonger dans les complexités techniques des bases de données et de la programmation.
HAProxy
HAProxy, ou High Availability Proxy, est un logiciel libre qui permet de répartir la charge du trafic réseau entre plusieurs serveurs. Il est principalement utilisé pour améliorer les performances, la disponibilité et la fiabilité des applications web. En agissant comme un équilibreur de charge (load balancer), HAProxy distribue les demandes des clients aux serveurs en arrière-plan de manière équilibrée, assurant ainsi que chaque serveur reçoit une part équitable de la charge de travail. Cela aide à éviter la surcharge de certains serveurs, améliore le temps de réponse des applications et offre une meilleure tolérance aux pannes.
Guide de Configuration HAProxy
Ce guide explique comment configurer HAProxy pour différents types de services : RDP, Minecraft et sites Internet. Chaque section contient une explication étape par étape pour permettre à quiconque de configurer HAProxy avec ses propres liens et adresses.
Configuration Générale
Fichier de Configuration
Commencez par créer ou éditer le fichier de configuration HAProxy situé généralement à /etc/haproxy/haproxy.cfg
.
commande linux pour éditer la config :
sudo nano /etc/haproxy/haproxy.cfg
Voici la configuration générale :
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# SSL configurations
ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
defaults
log global
mode tcp
option tcplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
listen stats
bind :9000
mode http
stats enable
stats hide-version
stats uri /
stats auth admin:admin
Configuration des Services
Frontend et Backend
Pourquoi un Frontend ?
Le frontend dans HAProxy est responsable de l'écoute des connexions entrantes des clients. Il définit quels ports et quelles adresses IP sont surveillés par HAProxy pour recevoir les demandes de connexion. Le frontend peut également effectuer certaines actions de filtrage ou de routage initial avant de transférer la demande à l'un des backends appropriés.
Pourquoi un Backend ?
Le backend dans HAProxy est responsable de la gestion des connexions sortantes vers les serveurs réels. Chaque backend contient une ou plusieurs directives server
qui définissent les serveurs vers lesquels les connexions doivent être dirigées. Le backend inclut également des paramètres pour surveiller la santé des serveurs et d'autres configurations spécifiques à la gestion des connexions.
Comment Modifier les Liens et Adresses ?
Pour changer les liens ou les adresses IP, vous devrez modifier les entrées correspondantes dans les sections frontend et backend. Par exemple, si vous avez un nouveau site ou serveur, vous ajouterez ou modifierez les directives de use_backend
et server
en conséquence.
1. Configuration RDP
Pour configurer HAProxy pour les services RDP (Remote Desktop Protocol), suivez ces étapes :
Frontend
Définissez un frontend qui écoute sur les ports RDP :
frontend rdp_frontend
bind *:3389
bind *:3390
bind *:3391
mode tcp
tcp-request inspect-delay 5s
tcp-request content accept if RDP_COOKIE
use_backend rdp_backend_qoyri if { dst_port 3389 }
use_backend rdp_backend_refu if { dst_port 3390 }
use_backend rdp_backend_bawikx if { dst_port 3391 }
Pour changer les ports RDP ou ajouter un nouveau, modifiez ou ajoutez une nouvelle ligne bind
et une nouvelle directive use_backend
.
Backend
Définissez les backends pour chaque port RDP :
backend rdp_backend_qoyri
mode tcp
server qoyri_server 192.168.0.5:3389 check
backend rdp_backend_refu
mode tcp
server refu_server 192.168.0.52:3389 check
backend rdp_backend_bawikx
mode tcp
server bawikx_server 192.168.0.169:3389 check
Pour changer les adresses des serveurs RDP, modifiez les lignes server
en conséquence.
2. Configuration Minecraft
Pour configurer HAProxy pour les serveurs Minecraft, suivez ces étapes :
Frontend
Définissez un frontend qui écoute sur le port Minecraft par défaut (25565) :
frontend minecraft
mode tcp
bind 0.0.0.0:25565
tcp-request inspect-delay 5s
acl mc_feiti_flg payload(5,15) -m sub feiti.qoyri.fr
tcp-request content accept if mc_feiti_flg
use_backend mc_feiti_app if mc_feiti_flg
acl mc_bawikx_flg payload(5,13) -m sub mc.bawikx.fr
tcp-request content accept if mc_bawikx_flg
use_backend mc_bawikx_app if mc_bawikx_flg
acl mc_refugier_flg payload(5,17) -m sub refugier.qoyri.fr
tcp-request content accept if mc_refugier_flg
use_backend mc_refugier_app if mc_refugier_flg
acl mc_garabou_flg payload(5,17) -m sub garabou.qoyri.fr
tcp-request content accept if mc_garabou_flg
use_backend mc_garabou_app if mc_garabou_flg
Pour ajouter ou modifier des serveurs Minecraft, ajustez les lignes acl
, tcp-request content accept
, et use_backend
.
Backend
Définissez les backends pour chaque serveur Minecraft :
backend mc_feiti_app
server mc_feiti_srv 192.168.0.52:25566 check
backend mc_bawikx_app
server mc_bawikx_srv 192.168.0.110:25565 check
backend mc_refugier_app
server mc_refugier_srv 192.168.0.52:25565 check
backend mc_garabou_app
server mc_garabou_srv 192.168.0.52:25610 check
Pour changer les adresses des serveurs Minecraft, modifiez les lignes server
.
3. Configuration des Sites Internet
Pour configurer HAProxy pour les sites web via SSL, suivez ces étapes :
Frontend
Définissez un frontend qui écoute sur le port HTTPS (443) :
frontend https_frontend
bind *:443
mode tcp
option tcplog
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
use_backend ssl_archive_backend if { req_ssl_sni -i archive.qoyri.fr }
use_backend ssl_cloud_backend if { req_ssl_sni -i cloud.qoyri.fr }
use_backend ssl_ftp_backend if { req_ssl_sni -i ftp.qoyri.fr }
use_backend ssl_gprojet_backend if { req_ssl_sni -i gprojet.qoyri.fr }
Pour ajouter ou modifier des sites web, ajustez les lignes use_backend
et req_ssl_sni
.
Backend
Définissez les backends pour chaque site :
backend ssl_archive_backend
mode tcp
server server1 192.168.0.52:443 check
backend ssl_cloud_backend
mode tcp
server server2 192.168.0.52:443 check
backend ssl_ftp_backend
mode tcp
server server3 192.168.0.52:443 check
backend ssl_gprojet_backend
mode tcp
server server3 192.168.0.52:443 check
Pour changer les adresses des serveurs web, modifiez les lignes server
.
Notes Importantes
- Redémarrage HAProxy : Après avoir modifié la configuration, redémarrez HAProxy pour appliquer les changements.
sudo systemctl restart haproxy
- Vérification de la Configuration : Vous pouvez vérifier la syntaxe de la configuration avant de redémarrer HAProxy avec la commande suivante :
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
- Sécurité : Assurez-vous de sécuriser l'interface de statistiques en utilisant des mots de passe forts et en limitant l'accès par adresse IP si nécessaire.
En suivant ces étapes, vous devriez être capable de configurer HAProxy pour différents types de services et gérer efficacement la répartition de la charge et la disponibilité de vos applications.