Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
pratique:informatique:apache [26/10/2024 15:05] – [Modules à activer] Zatalyz | pratique:informatique:apache [26/10/2024 21:47] (Version actuelle) – [Options propre au proxy] Zatalyz | ||
---|---|---|---|
Ligne 12: | Ligne 12: | ||
===== Modules et configuration à activer ===== | ===== Modules et configuration à activer ===== | ||
- | <WRAP center round todo 60%> | ||
- | Faut pas mettre un " | ||
- | </ | ||
<code txt / | <code txt / | ||
Ligne 82: | Ligne 79: | ||
# HSTS (15768000 seconds = 6 months)(63072000 = 24 mois) ; éviter le vol de cookies et le downgrade SSL. | # HSTS (15768000 seconds = 6 months)(63072000 = 24 mois) ; éviter le vol de cookies et le downgrade SSL. | ||
Header set Strict-Transport-Security " | Header set Strict-Transport-Security " | ||
+ | # Supprimer les en-têtes de serveur par défaut pour la sécurité | ||
+ | Header unset Server | ||
+ | Header unset X-Powered-By | ||
# Enfin, les CSP permettent de vérifier l' | # Enfin, les CSP permettent de vérifier l' | ||
# CSP, pour éviter de charger des scripts d' | # CSP, pour éviter de charger des scripts d' | ||
- | Header set Content-Security-Policy " | + | #Header set Content-Security-Policy " |
+ | </ | ||
+ | |||
+ | <code txt / | ||
+ | ServerName localhost | ||
</ | </ | ||
Enfin, activer modules et conf : | Enfin, activer modules et conf : | ||
sudo a2enmod headers ssl rewrite | sudo a2enmod headers ssl rewrite | ||
- | sudo a2enconf security tracker | + | sudo a2enconf security tracker |
sudo apachectl -t | sudo apachectl -t | ||
sudo apachectl graceful | sudo apachectl graceful | ||
Ligne 110: | Ligne 114: | ||
===== Vhost ===== | ===== Vhost ===== | ||
- | Convention de nommage : '' | + | Convention de nommage : le domaine |
- | <WRAP center round todo 60%> | + | |
- | Voir l' | + | <WRAP center round tip 60%> |
+ | Ici on utilise les macros, ce qui réduit un peu le nombre | ||
+ | sudo a2enmod macro | ||
</ | </ | ||
+ | <WRAP center round important 60%> | ||
+ | Ça c'est sur les serveurs backend, pas sur les parties proxy. | ||
+ | </ | ||
+ | |||
+ | |||
+ | <code txt / | ||
+ | |||
+ | <Macro common_config_80 $domain> | ||
+ | # Les parties "tout le monde pareil" | ||
+ | ServerName $domain | ||
+ | |||
+ | # Redirection tout le trafic HTTP vers HTTPS | ||
+ | RewriteEngine On | ||
+ | RewriteCond %{REQUEST_URI} !.well-known/ | ||
+ | RewriteRule ^(.*)$ https:// | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <code txt / | ||
+ | <Macro common_config_443 $domain> | ||
+ | # Les parties "tout le monde pareil" | ||
+ | ServerName $domain | ||
+ | |||
+ | # Logs | ||
+ | ErrorLog ${APACHE_LOG_DIR}/ | ||
+ | CustomLog ${APACHE_LOG_DIR}/ | ||
+ | |||
+ | # Configuration SSL avec Let’s Encrypt | ||
+ | SSLEngine On | ||
+ | SSLCertificateFile / | ||
+ | SSLCertificateKeyFile / | ||
+ | |||
+ | # Redirection pour les sous-domaines non déclarés (à condition d' | ||
+ | RewriteEngine On | ||
+ | RewriteCond %{HTTP_HOST} !^%{SERVER_NAME}$ [NC] | ||
+ | RewriteRule ^ https:// | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Et les vhosts par site (à adapter donc au site, prendre les morceaux utiles) : | ||
<code txt / | <code txt / | ||
< | < | ||
- | ServerName | + | # Déclare la macro, son appel et la variable pour le nom de domaine |
- | # Déclare les sous-domaines qui sont en réalité le même site | + | Use common_config_80 |
- | ServerAlias www.exemple.org | + | # Déclare les sous-domaines qui sont en réalité le même site |
- | + | ServerAlias www.exemple.org | |
- | # Redirection tout le trafic HTTP vers HTTPS | + | |
- | RewriteEngine On | + | |
- | RewriteCond %{REQUEST_URI} !.well-known/ | + | |
- | RewriteRule ^(.*)$ https:// | + | |
</ | </ | ||
< | < | ||
- | ServerName | + | Use common_config_443 |
- | ServerAlias www.exemple.org | + | ServerAlias www.exemple.org |
+ | # Si besoin d' | ||
+ | Alias /app / | ||
+ | DocumentRoot / | ||
+ | < | ||
+ | Options FollowSymLinks MultiViews | ||
+ | AllowOverride All | ||
+ | Require all granted | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | Ne pas oublier | ||
+ | < | ||
+ | sudo a2ensite common_config_80.conf | ||
+ | sudo a2ensite exemple.org.conf | ||
+ | sudo apachectl -t | ||
+ | sudo apachectl graceful</ | ||
- | DocumentRoot / | + | ==== Options propre au proxy ==== |
- | Alias / | + | |
+ | <WRAP center round todo 60%> | ||
+ | Faut revoir, soit dans l' | ||
- | < | + | Mise à jour : de toute façon c'est pas possible avec Apache. Et pas possible de faire un challenge dns automatisé avec bookmyname. Donc, on fera un transfert du certif post-hook. Mais je bidouille ça un autre jour. |
- | Options Indexes FollowSymLinks MultiViews | + | </WRAP> |
- | AllowOverride All | + | |
- | Order allow,deny | + | |
- | allow from all | + | |
- | </Directory> | + | |
- | # Logs | + | Et la config sur la partie proxy : |
- | | + | <code txt / |
- | | + | < |
+ | | ||
+ | ServerAlias www.exemple.org | ||
+ | </ | ||
- | # Configuration SSL avec Let’s Encrypt | + | < |
- | | + | |
- | SSLCertificateFile / | + | |
- | | + | |
| | ||
- | | + | |
- | | + | |
- | | + | |
- | RewriteCond %{HTTP_HOST} !^www\.exemple\.org$ [NC] | + | |
- | | + | <Proxy *> |
+ | Require all granted | ||
+ | < | ||
+ | Require all granted | ||
+ | </ | ||
+ | < | ||
+ | Require all denied | ||
+ | </ | ||
+ | </ | ||
+ | |||
</ | </ | ||
</ | </ | ||
- | ==== Options propre au proxy ==== | ||
- | a2enmod proxy proxy_http | ||
- | |||
===== Variables utiles ===== | ===== Variables utiles ===== | ||
* '' | * '' | ||
+ | ===== Certificat ssl ===== | ||
+ | sudo apt install certbot | ||
+ | |||
+ | Éteindre apache avant ça (et le rallumer ensuite) : | ||
+ | sudo certbot --pre-hook " | ||
+ | |||
+ | Renouvellement en éteignant/ | ||
+ | sudo certbot renew --pre-hook " | ||