« Documentation » : différence entre les versions

De wikisio
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
<strong>0 - Mise en place </strong>
= Déploiement d’une Infrastructure Web Sécurisée avec LXC =


- VPS:
== 0 - Mise en place de l’infrastructure ==


Aller sur pulseheberg.com et acheter le VPS EDU-2 dans Education Cloud.
=== VPS ===


- Nom de domaine
1. Aller sur [[https://pulseheberg.com](https://pulseheberg.com) pulseheberg.com]
2. Acheter le VPS '''EDU-2''' dans l’offre '''Education Cloud'''


Aller sur ovhcloud.com et acheter un domaine, puis l'associer a son IP dans la section
=== 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é ==


<strong>1 - Sécurité</strong>
=== Bonnes pratiques SSH ===


- bonnes pratiques SSH (Root, port, ...)
Modifier le fichier :


Désactiver dans /etc/ssh/sshd_config l'acces root et changer le port par défaut.
<pre>
/etc/ssh/sshd_config
</pre>


- Fail2Ban
Recommandations :


Ajouter dans /etc/fail2ban/jail.local:
<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 :


Enregistrer avec systemctl restart fail2ban
<pre>
systemctl restart fail2ban
</pre>


- IPSet
---


Creer une liste d'ip à bloquer avec ipset create blacklist hash:ip
=== IPSet + Firewall ===


Integrer ipset au firewall avec iptables -I INPUT -m set --match-set blacklist src -j DROP
Créer une liste noire :


Enregistrer la regle iptables avec netfilter-persistent save
<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>


<strong>2 - Containerisation</strong>
---


- Mise en place de LXC
== 2 - Containerisation avec LXC ==


apt-get install lxc lxc-templates
=== 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>


Changer l'ip des deux contenaires en 10.0.3.10 et 101
Configurer les IP :
Installer apache dans monsite, nginx dans nginx


* 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>


- Reverse proxy configurer
---


=== Configuration Reverse Proxy (Nginx) ===


<pre>
server {
server {
     listen 80;
     listen 80;
     server_name *nom du site*;
     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).


<strong>3 - Documentation</strong>
Téléchargement :


- Mise a disposition d'une base de connaissance (Mediawiki ou autre) sécurisé ("apache-auth")
<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 ===


Mettre en place une BDD
* 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


cd /tmp
---
 
=== Mise en place des sauvegardes ===
 
Sauvegarde locale simple :


wget https://releases.wikimedia.org/mediawiki/1.41/mediawiki-1.41.0.tar.gz
<pre>
tar -czf /backup/wiki_$(date +%F).tar.gz /var/www/html
mysqldump -u root -p wikidb > /backup/wikidb_$(date +%F).sql
</pre>


tar -xzf mediawiki-1.41.0.tar.gz
Automatiser avec cron :


rm -rf /var/www/html/*
<pre>
crontab -e
</pre>


mv mediawiki-1.41.0/* /var/www/html/
Exemple :


chown -R www-data:www-data /var/www/html/
<pre>
0 3 * * * /script/backup.sh
</pre>


chmod -R 755 /var/www/html/
---


= Résultat =


Securiser avec cerificat SSL
Infrastructure comprenant :


Securiser apache auth dans fail2ban
* VPS sécurisé
* Protection SSH + Fail2Ban + IPSet
* Architecture LXC segmentée
* Reverse proxy Nginx
* Base de connaissance interne sous MediaWiki
* Sauvegardes automatisées


- mise en place d'une solution de backups (locale pour commencer)
---

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

---