« Documentation » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| 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](https://pulseheberg.com) pulseheberg.com] | ||
2. Acheter le VPS '''EDU-2''' dans l’offre '''Education Cloud''' | |||
=== Nom de domaine === | |||
1. Aller sur [[https://ovhcloud.com](https://ovhcloud.com) 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] | [sshd] | ||
enabled = true | enabled = true | ||
port = 2222 | port = 2222 | ||
filter = sshd | filter = sshd | ||
logpath = /var/log/auth.log | logpath = /var/log/auth.log | ||
maxretry = 5 | maxretry = 5 | ||
bantime = 3600 | 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 nginx -t debian | ||
lxc-create -n monsite -t debian | lxc-create -n monsite -t debian | ||
</pre> | |||
Configurer les IP : | |||
* nginx → 10.0.3.10 | |||
* monsite → 10.0.3.101 | |||
Installer : | |||
* Apache dans '''monsite''' | |||
* Nginx dans '''nginx''' | |||
--- | |||
=== Configuration NAT === | |||
<pre> | |||
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.3.10:80 | iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.3.10:80 | ||
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.3.10:443 | iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.3.10:443 | ||
iptables -t nat -A POSTROUTING -j MASQUERADE | iptables -t nat -A POSTROUTING -j MASQUERADE | ||
</pre> | |||
- | --- | ||
=== Configuration Reverse Proxy (Nginx) === | |||
<pre> | |||
server { | server { | ||
listen 80; | listen 80; | ||
server_name | server_name mondomaine.tld; | ||
access_log off; | access_log off; | ||
# Autoriser uniquement GET, HEAD, POST | # Autoriser uniquement GET, HEAD, POST | ||
if ($request_method !~ ^(GET|HEAD|POST)$) { | if ($request_method !~ ^(GET|HEAD|POST)$) { | ||
return 444; | return 444; | ||
} | } | ||
location / { | location / { | ||
proxy_pass http://10.0.3.101:80/; | proxy_pass http://10.0.3.101:80/; | ||
| Ligne 82 : | Ligne 155 : | ||
} | } | ||
} | } | ||
</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> | |||
--- | |||
= Résultat = | |||
Infrastructure comprenant : | |||
* VPS sécurisé | |||
* Protection SSH + Fail2Ban + IPSet | |||
* Architecture LXC segmentée | |||
* Reverse proxy Nginx | |||
* Base de connaissance interne sous MediaWiki | |||
* Sauvegardes automatisées | |||
- | --- | ||
Version du 2 mars 2026 à 10:26
Déploiement d’une Infrastructure Web Sécurisée avec LXC
0 - Mise en place de l’infrastructure
VPS
1. Aller sur [[1](https://pulseheberg.com) pulseheberg.com] 2. Acheter le VPS EDU-2 dans l’offre Education Cloud
Nom de domaine
1. Aller sur [[2](https://ovhcloud.com) 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 :
- nginx → 10.0.3.10
- monsite → 10.0.3.101
Installer :
- Apache dans monsite
- Nginx dans nginx
---
Configuration NAT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.3.10:80 iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.3.10:443 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://10.0.3.101:80/;
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
---
Résultat
Infrastructure comprenant :
- VPS sécurisé
- Protection SSH + Fail2Ban + IPSet
- Architecture LXC segmentée
- Reverse proxy Nginx
- Base de connaissance interne sous MediaWiki
- Sauvegardes automatisées
---