« Documentation » : différence entre les versions
De wikisio
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| (11 versions intermédiaires par le même utilisateur 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] | [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 | |||
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination | Installer : | ||
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination | |||
* 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 | 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:// | proxy_pass http://*adresse ip*/; | ||
proxy_set_header Host $host; | proxy_set_header Host $host; | ||
proxy_set_header X-Real-IP $remote_addr; | proxy_set_header X-Real-IP $remote_addr; | ||
| Ligne 82 : | Ligne 153 : | ||
} | } | ||
} | } | ||
</pre> | |||
== 3 - Documentation interne == | |||
=== Installation de MediaWiki === | |||
Préparer la base de données (MySQL/MariaDB). | |||
Téléchargement : | |||
<pre> | |||
cd /tmp | cd /tmp | ||
wget https://releases.wikimedia.org/mediawiki/1.41/mediawiki-1.41.0.tar.gz | 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/* | 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