« 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 :
<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


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


<strong>1 - Sécurité</strong>
3. Associer le domaine à l’adresse IP du VPS via la gestion DNS


- bonnes pratiques SSH (Root, port, ...)
== 1 - Sécurité ==


Désactiver dans /etc/ssh/sshd_config l'acces root et changer le port par défaut.
=== Bonnes pratiques SSH ===


- Fail2Ban
Modifier le fichier :


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


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


- IPSet


Creer une liste d'ip à bloquer avec ipset create blacklist hash:ip


Integrer ipset au firewall avec iptables -I INPUT -m set --match-set blacklist src -j DROP
=== IPSet + Firewall ===


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


<strong>2 - Containerisation</strong>
<pre>
netfilter-persistent save
</pre>


- Mise en place de LXC


apt-get install lxc lxc-templates


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


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


iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.3.10:80
Installer :
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.3.10:443
 
* 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>


- 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://*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 ===


<strong>3 - Documentation</strong>
Préparer la base de données (MySQL/MariaDB).
 
- Mise a disposition d'une base de connaissance (Mediawiki ou autre) sécurisé ("apache-auth")


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


tar -xzf mediawiki-1.41.0.tar.gz
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


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


chown -R www-data:www-data /var/www/html/
=== 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>


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


- mise en place d'une solution de backups (locale pour commencer)
<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