« Documentation » : différence entre les versions
De wikisio
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| (13 versions intermédiaires par 2 utilisateurs non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
= Déploiement d’une Infrastructure Web Sécurisée avec LXC = | |||
- | == 0 - Mise en place de l’infrastructure == | ||
=== VPS === | |||
1. Aller sur https://pulseheberg.com | |||
2. Acheter le VPS '''EDU-2''' dans l’offre '''Education Cloud''' | |||
=== Nom de domaine === | |||
1. Aller sur https://ovhcloud.com | |||
2. Acheter un nom de domaine | |||
3. Associer le domaine à l’adresse IP du VPS via la gestion DNS | |||
- | == 1 - Sécurité == | ||
=== Bonnes pratiques SSH === | |||
Modifier le fichier : | |||
<pre> | |||
/etc/ssh/sshd_config | |||
</pre> | |||
Recommandations : | |||
<pre> | |||
PermitRootLogin no | |||
Port 2222 | |||
</pre> | |||
Puis redémarrer le service : | |||
<pre> | |||
systemctl restart ssh | |||
</pre> | |||
=== Fail2Ban === | |||
Installer Fail2Ban : | |||
- | <pre> | ||
apt install fail2ban -y | |||
</pre> | |||
Modifier ou créer le fichier : | |||
<pre> | |||
/etc/fail2ban/jail.local | |||
</pre> | |||
Configuration : | |||
<pre> | |||
[sshd] | |||
enabled = true | |||
port = 2222 | |||
filter = sshd | |||
logpath = /var/log/auth.log | |||
maxretry = 5 | |||
bantime = 3600 | |||
</pre> | |||
Redémarrer : | |||
<pre> | |||
systemctl restart fail2ban | |||
</pre> | |||
=== IPSet + Firewall === | |||
Créer une liste noire : | |||
<pre> | |||
ipset create blacklist hash:ip | |||
</pre> | |||
- | Ajouter la règle iptables : | ||
<pre> | |||
iptables -I INPUT -m set --match-set blacklist src -j DROP | |||
</pre> | |||
Sauvegarder : | |||
<pre> | |||
netfilter-persistent save | |||
</pre> | |||
== 2 - Containerisation avec LXC == | |||
=== Installation de LXC === | |||
<pre> | |||
apt-get install lxc lxc-templates -y | |||
</pre> | |||
Créer les conteneurs : | |||
<pre> | |||
lxc-create -n nginx -t debian | |||
lxc-create -n monsite -t debian | |||
</pre> | |||
Configurer les IP | |||
Installer : | |||
* Apache dans '''monsite''' | |||
* Nginx dans '''nginx''' | |||
=== Configuration NAT === | |||
<pre> | |||
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination *adresse ip* | |||
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination *adresse ip* | |||
iptables -t nat -A POSTROUTING -j MASQUERADE | |||
</pre> | |||
=== Configuration Reverse Proxy (Nginx) === | |||
<pre> | |||
server { | |||
listen 80; | |||
server_name mondomaine.tld; | |||
access_log off; | |||
# Autoriser uniquement GET, HEAD, POST | |||
if ($request_method !~ ^(GET|HEAD|POST)$) { | |||
return 444; | |||
} | |||
location / { | |||
proxy_pass http://*adresse ip*/; | |||
proxy_set_header Host $host; | |||
proxy_set_header X-Real-IP $remote_addr; | |||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |||
} | |||
} | |||
</pre> | |||
== 3 - Documentation interne == | |||
=== Installation de MediaWiki === | |||
Préparer la base de données (MySQL/MariaDB). | |||
Téléchargement : | |||
<pre> | |||
cd /tmp | |||
wget https://releases.wikimedia.org/mediawiki/1.41/mediawiki-1.41.0.tar.gz | |||
tar -xzf mediawiki-1.41.0.tar.gz | |||
</pre> | |||
Déploiement : | |||
<pre> | |||
rm -rf /var/www/html/* | |||
mv mediawiki-1.41.0/* /var/www/html/ | |||
chown -R www-data:www-data /var/www/html/ | |||
chmod -R 755 /var/www/html/ | |||
</pre> | |||
Finaliser l’installation via navigateur : | |||
<pre> | |||
http://mondomaine.tld | |||
</pre> | |||
=== Sécurisation === | |||
* Installer un certificat SSL (Let’s Encrypt recommandé) | |||
* Activer l’authentification Apache (apache-auth) | |||
* Ajouter une règle Fail2Ban pour protéger l’authentification | |||
* Restreindre l’accès par IP si nécessaire | |||
=== Mise en place des sauvegardes === | |||
Sauvegarde locale simple : | |||
<pre> | |||
tar -czf /backup/wiki_$(date +%F).tar.gz /var/www/html | |||
mysqldump -u root -p wikidb > /backup/wikidb_$(date +%F).sql | |||
</pre> | |||
Automatiser avec cron : | |||
<pre> | |||
crontab -e | |||
</pre> | |||
Exemple : | |||
<pre> | |||
0 3 * * * /script/backup.sh | |||
</pre> | |||
Dernière version du 2 mars 2026 à 10:43
Déploiement d’une Infrastructure Web Sécurisée avec LXC
0 - Mise en place de l’infrastructure
VPS
1. Aller sur https://pulseheberg.com
2. Acheter le VPS EDU-2 dans l’offre Education Cloud
Nom de domaine
1. Aller sur https://ovhcloud.com
2. Acheter un nom de domaine
3. Associer le domaine à l’adresse IP du VPS via la gestion DNS
1 - Sécurité
Bonnes pratiques SSH
Modifier le fichier :
/etc/ssh/sshd_config
Recommandations :
PermitRootLogin no Port 2222
Puis redémarrer le service :
systemctl restart ssh
Fail2Ban
Installer Fail2Ban :
apt install fail2ban -y
Modifier ou créer le fichier :
/etc/fail2ban/jail.local
Configuration :
[sshd] enabled = true port = 2222 filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 3600
Redémarrer :
systemctl restart fail2ban
IPSet + Firewall
Créer une liste noire :
ipset create blacklist hash:ip
Ajouter la règle iptables :
iptables -I INPUT -m set --match-set blacklist src -j DROP
Sauvegarder :
netfilter-persistent save
2 - Containerisation avec LXC
Installation de LXC
apt-get install lxc lxc-templates -y
Créer les conteneurs :
lxc-create -n nginx -t debian lxc-create -n monsite -t debian
Configurer les IP
Installer :
- Apache dans monsite
- Nginx dans nginx
Configuration NAT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination *adresse ip* iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination *adresse ip* iptables -t nat -A POSTROUTING -j MASQUERADE
Configuration Reverse Proxy (Nginx)
server {
listen 80;
server_name mondomaine.tld;
access_log off;
# Autoriser uniquement GET, HEAD, POST
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 444;
}
location / {
proxy_pass http://*adresse ip*/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
3 - Documentation interne
Installation de MediaWiki
Préparer la base de données (MySQL/MariaDB).
Téléchargement :
cd /tmp wget https://releases.wikimedia.org/mediawiki/1.41/mediawiki-1.41.0.tar.gz tar -xzf mediawiki-1.41.0.tar.gz
Déploiement :
rm -rf /var/www/html/* mv mediawiki-1.41.0/* /var/www/html/ chown -R www-data:www-data /var/www/html/ chmod -R 755 /var/www/html/
Finaliser l’installation via navigateur :
http://mondomaine.tld
Sécurisation
- Installer un certificat SSL (Let’s Encrypt recommandé)
- Activer l’authentification Apache (apache-auth)
- Ajouter une règle Fail2Ban pour protéger l’authentification
- Restreindre l’accès par IP si nécessaire
Mise en place des sauvegardes
Sauvegarde locale simple :
tar -czf /backup/wiki_$(date +%F).tar.gz /var/www/html mysqldump -u root -p wikidb > /backup/wikidb_$(date +%F).sql
Automatiser avec cron :
crontab -e
Exemple :
0 3 * * * /script/backup.sh