« Auto Hebergement » : différence entre les versions
mAucun résumé des modifications |
m (Apache basic) |
||
Ligne 16 : | Ligne 16 : | ||
* Un OS Debian GNU/Linux 12 en 64 bits version lite. (sans X, sans desktop) | * Un OS Debian GNU/Linux 12 en 64 bits version lite. (sans X, sans desktop) | ||
* Une adresse IP fixe dans le LAN (soit présélection dans le DHCP soit en dur dans la machine) | * Une adresse IP fixe dans le LAN (soit présélection dans le DHCP soit en dur dans la machine) | ||
* Une nom de domaine qui pointe vers l'IP fixe en question. | |||
On fait la mise à jour:<syntaxhighlight lang="bash"> | On fait la mise à jour:<syntaxhighlight lang="bash"> | ||
Ligne 55 : | Ligne 57 : | ||
On va d'abord installer les briques de bases.<syntaxhighlight lang="bash"> | On va d'abord installer les briques de bases.<syntaxhighlight lang="bash"> | ||
sudo apt-get install apache2 | sudo apt-get install apache2 | ||
</syntaxhighlight>'''[[Fichier:Attention.png|sans_cadre|24x24px]]Attention le serveur en question n'est pas sécurisé par TLS on reste en HTTP. Pour le HTTPS voir ci dessous.''' | |||
On considère que notre DNS comme <code>principal.mondomaine.com</code>. | |||
==== Création du répertoire DocumentRoot ==== | |||
Il suffit de créer le répertoire et de le remplir avec un indec.html de test.<syntaxhighlight lang="html"> | |||
sudo su - | |||
mkdir -f /var/www/html/doctest | |||
cat > /var/www/html/doctest/index.html | |||
<html> | |||
<head> | |||
<title>Not secured</title> | |||
</head> | |||
<body> | |||
<h1>Not secured</h1> | |||
</body> | |||
</html> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==== Fichier /etc/apache2/sites-available/000-principal.conf ==== | |||
On crée le fichier suivant a partir d'une copie de <code>000-default.conf</code><syntaxhighlight lang="apacheconf"> | |||
<VirtualHost *:80> | |||
# The ServerName directive sets the request scheme, hostname and port that | |||
# the server uses to identify itself. This is used when creating | |||
# redirection URLs. In the context of virtual hosts, the ServerName | |||
# specifies what hostname must appear in the request's Host: header to | |||
# match this virtual host. For the default virtual host (this file) this | |||
# value is not decisive as it is used as a last resort host regardless. | |||
# However, you must set it for any further virtual host explicitly. | |||
ServerName principal.mondomaine.com | |||
ServerAdmin webmaster@mondomaine.com | |||
DocumentRoot /var/www/html/secured | |||
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn, | |||
# error, crit, alert, emerg. | |||
# It is also possible to configure the loglevel for particular | |||
# modules, e.g. | |||
#LogLevel info ssl:warn | |||
ErrorLog ${APACHE_LOG_DIR}/error-principal.log | |||
CustomLog ${APACHE_LOG_DIR}/access-principal.log combined | |||
# For most configuration files from conf-available/, which are | |||
# enabled or disabled at a global level, it is possible to | |||
# include a line for only one particular virtual host. For example the | |||
# following line enables the CGI configuration for this host only | |||
# after it has been globally disabled with "a2disconf". | |||
#Include conf-available/serve-cgi-bin.conf | |||
</VirtualHost> | |||
</syntaxhighlight>On crée un lien dans sites-enabeled (on doit être toujours root):<syntaxhighlight lang="bash"> | |||
cd /etc/apache2/sites-enabled/ | |||
ln -s ../sites-available/000-principal.conf 000-principal.conf | |||
systemctl reload apache2 | |||
</syntaxhighlight>Et avec un navigateur si on entre : <code><nowiki>http://prinncipal.mondomaine.com</nowiki></code> | |||
[[Fichier:Default-index.png|sans_cadre|400x400px]] | |||
Attention si on oublie "http://" chrome va utiliser "https://" par défaut et ça va pas marcher. | |||
OK ca marche! | |||
== Installation apache en https avec let's encrypt == | == Installation apache en https avec let's encrypt == | ||
Maintenant on va sécuriser tout ça.! |
Version du 10 février 2025 à 17:27
Héberger des ressources sur internet est, à la base, assez bon marché mais si on commence à avoir besoin de plusieurs machines, du stockage... ça finit par coûter cher.
J'ai un opérateur qui présente les caractéristiques suivantes :
- Accès fibre
- Fiable
- Débit montant correct
- IP fixe
Tout devrait être parfait pour que je m'autohéberge.
Prérequis
On considérera que j'ai a disposition :
- Un Raspberi PI 4 ram 4Go
- Un OS Debian GNU/Linux 12 en 64 bits version lite. (sans X, sans desktop)
- Une adresse IP fixe dans le LAN (soit présélection dans le DHCP soit en dur dans la machine)
- Une nom de domaine qui pointe vers l'IP fixe en question.
On fait la mise à jour:
sudo apt-get update
sudo apt-get upgrade
sudo reboot
Normalement, avec un linux tout frais ca devrait âtre rapide mais moi.... ça a duré 15 min :(
Installations de base
Ajouter les logs de connexions
Pour une raison étrange l'installation de base de linux pour Raspberry PI ne comporte pas les logs de connexion. C'est assez dommageable pour en contrôler les accès!
Peut-être est-ce dû au "lite" choisit lors de l'installation? Ou alors pour préserver la carte SD....
Bref sur un serveur visible sur internet je trouves que c'est indispensable.
sudo apt install rsyslog
Ensuite on configure en ajoutant :
# enable basic logging information
SyslogFacility AUTH
# basic logging
LogLevel INFO
Dans le fichier /etc/ssh/sshd_config
.
Ensuite on relance le service:
sudo service ssh restart
On trouve alors un répertoire
Fail2ban
En plus d'un VRAI mot de passe il est necessaire de se protéger des attaques par un petit bout de code : "fail2ban".
Il évite que des "méchants" tentent des attaques en force brutes.
systemctl start fail2ban
Apache
On va d'abord installer les briques de bases.
sudo apt-get install apache2
Attention le serveur en question n'est pas sécurisé par TLS on reste en HTTP. Pour le HTTPS voir ci dessous.
On considère que notre DNS comme principal.mondomaine.com
.
Création du répertoire DocumentRoot
Il suffit de créer le répertoire et de le remplir avec un indec.html de test.
sudo su -
mkdir -f /var/www/html/doctest
cat > /var/www/html/doctest/index.html
<html>
<head>
<title>Not secured</title>
</head>
<body>
<h1>Not secured</h1>
</body>
</html>
Fichier /etc/apache2/sites-available/000-principal.conf
On crée le fichier suivant a partir d'une copie de 000-default.conf
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName principal.mondomaine.com
ServerAdmin webmaster@mondomaine.com
DocumentRoot /var/www/html/secured
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error-principal.log
CustomLog ${APACHE_LOG_DIR}/access-principal.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
On crée un lien dans sites-enabeled (on doit être toujours root):
cd /etc/apache2/sites-enabled/
ln -s ../sites-available/000-principal.conf 000-principal.conf
systemctl reload apache2
Et avec un navigateur si on entre : http://prinncipal.mondomaine.com
Attention si on oublie "http://" chrome va utiliser "https://" par défaut et ça va pas marcher.
OK ca marche!
Installation apache en https avec let's encrypt
Maintenant on va sécuriser tout ça.!