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


- IPSet
<pre>
/etc/ssh/sshd_config
</pre>


Recommandations :


<pre>
PermitRootLogin no
Port 2222
</pre>


Puis redémarrer le service :


<pre>
systemctl restart ssh
</pre>






=== Fail2Ban ===


<strong>2 - Containerisation</strong>
Installer Fail2Ban :


- Mise en place de LXC
<pre>
apt install fail2ban -y
</pre>


- Reverse proxy configurer
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>






<strong>3 - Documentation</strong>
=== IPSet + Firewall ===


- mise en place du sous-domaine doc.votredomaine.ovh
Créer une liste noire :


- Mise a disposition d'une base de connaissance (Mediawiki ou autre) sécurisé ("apache-auth")
<pre>
ipset create blacklist hash:ip
</pre>


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