Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
pratique:informatique:apache [26/10/2024 15:04] – créée Zatalyzpratique:informatique:apache [26/10/2024 21:47] (Version actuelle) – [Options propre au proxy] Zatalyz
Ligne 11: Ligne 11:
   sudo apachectl graceful   sudo apachectl graceful
  
-===== Modules à activer =====+===== Modules et configuration à activer =====
  
 <code txt /etc/apache2/conf-available/security.conf> <code txt /etc/apache2/conf-available/security.conf>
Ligne 79: 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 "max-age=63072000; includeSubdomains; preload" Header set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
 +# 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'origine des éléments du site # Enfin, les CSP permettent de vérifier l'origine des éléments du site
 # CSP, pour éviter de charger des scripts d'ailleurs. /!\ partie complexe à gérer suivant vos CMS # CSP, pour éviter de charger des scripts d'ailleurs. /!\ partie complexe à gérer suivant vos CMS
-Header set Content-Security-Policy "default-src 'self' *.monsite.org 'unsafe-eval' 'unsafe-inline' "+#Header set Content-Security-Policy "default-src 'self' *.monsite.org 'unsafe-eval' 'unsafe-inline' " 
 +</code> 
 + 
 +<code txt /etc/apache2/conf-available/full-qualified-domain-name.conf> 
 +ServerName localhost
 </code> </code>
  
 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 full-qualified-domain-name
   sudo apachectl -t   sudo apachectl -t
   sudo apachectl graceful   sudo apachectl graceful
Ligne 105: Ligne 112:
  
  
-===== Configuration =====+
 ===== Vhost ===== ===== Vhost =====
-Convention de nommage : ''domaine.conf''. Par exemple ''exemple.org.conf''. On peut mettre le port 80 et 443 sur le même fichier, c'est aussi lisible et si on utilise let's encrypt en standalone, ça va très bien. Ne pas oublier ''sudo a2ensite exemple.org.conf'' puis de recharger apache ensuite. +Convention de nommage : le domaine du site+conf. Par exemple ''exemple.org.conf''. On peut mettre le port 80 et 443 sur le même fichier, c'est aussi lisible et si on utilise let's encrypt en standalone, ça va très bien.  
-<WRAP center round todo 60%> + 
-Voir l'usage des macros pour générer le fichier en déclarant juste le nom de domaine (un truc d'apache).+<WRAP center round tip 60%> 
 +Ici on utilise les macros, ce qui réduit un peu le nombre de trucs à répéterIl faut activer le module correspondant :  
 + sudo a2enmod macro
 </WRAP> </WRAP>
  
 +<WRAP center round important 60%>
 +Ça c'est sur les serveurs backend, pas sur les parties proxy.
 +</WRAP>
 +
 +
 +<code txt /etc/apache2/sites-available/common_config_80.conf>
 +
 +<Macro common_config_80 $domain>
 +# Les parties "tout le monde pareil" dans les configs apache. Pour vhost 80
 + ServerName $domain
 +
 + # Redirection tout le trafic HTTP vers HTTPS
 + RewriteEngine On
 + RewriteCond %{REQUEST_URI} !.well-known/acme-challenge
 + RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301,L]
 +
 +</Macro>
 +</code>
 +
 +<code txt /etc/apache2/sites-available/common_config_443.conf>
 +<Macro common_config_443 $domain>
 +# Les parties "tout le monde pareil" dans les configs apache. Pour vhost 443
 + ServerName $domain
 +
 + # Logs
 + ErrorLog ${APACHE_LOG_DIR}/$domain_error.log
 + CustomLog ${APACHE_LOG_DIR}/$domain_access.log combined
 +
 + # Configuration SSL avec Let’s Encrypt
 + SSLEngine On
 + SSLCertificateFile /etc/letsencrypt/live/$domain/fullchain.pem
 + SSLCertificateKeyFile /etc/letsencrypt/live/$domain/privkey.pem
 +
 + # Redirection pour les sous-domaines non déclarés (à condition d'avoir son DNS bien configuré aussi)
 + RewriteEngine On
 + RewriteCond %{HTTP_HOST} !^%{SERVER_NAME}$ [NC]
 + RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
 +</Macro>
 +</code>
 +
 +Et les vhosts par site (à adapter donc au site, prendre les morceaux utiles) : 
 <code txt /etc/apache2/sites-available/exemple.org.conf> <code txt /etc/apache2/sites-available/exemple.org.conf>
 <VirtualHost *:80> <VirtualHost *:80>
-    ServerName exemple.org + # 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 exemple.org 
-    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/acme-challenge +
-    RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301,L]+
 </VirtualHost> </VirtualHost>
  
 <VirtualHost *:443> <VirtualHost *:443>
-    ServerName exemple.org + Use common_config_443 exemple.org 
-    ServerAlias www.exemple.org+ ServerAlias www.exemple.org 
 + # Si besoin d'alias  
 + Alias /app /var/www/html 
 + DocumentRoot /var/www/exemple.org 
 + <Directory /var/www/exemple.org/
 + Options FollowSymLinks MultiViews 
 + AllowOverride All 
 + Require all granted 
 + </Directory> 
 +  
 +</VirtualHost> 
 +</code> 
 +Ne pas oublier  
 +<code>sudo a2ensite common_config_443.conf 
 +sudo a2ensite common_config_80.conf 
 +sudo a2ensite exemple.org.conf 
 +sudo apachectl -t 
 +sudo apachectl graceful</code>
  
-    DocumentRoot /var/www/exemple.org/public_html +==== Options propre au proxy ==== 
-    Alias /application /var/www/exemple.org/undossier/monappli+  a2enmod proxy proxy_http 
 +<WRAP center round todo 60%> 
 +Faut revoir, soit dans l'optique "le proxy demande les certifs", soit "le backend les gère". D'un point de vue anonymat c'est mieux si c'est chiffré tout du long mais d'un autre côté la femme du milieu, c'est moi...
  
-        <Directory /var/www/exemple.org/ > +Mise à jour : de toute façon c'est pas possible avec ApacheEt pas possible de faire un challenge dns automatisé avec bookmyname. Doncon 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 :  
-    ErrorLog ${APACHE_LOG_DIR}/exemple.org_error.log +<code txt /etc/apache2/sites-available/exemple.org.conf> 
-    CustomLog ${APACHE_LOG_DIR}/exemple.org_access.log combined+<VirtualHost *:80> 
 +    Use common_config exemple.org 
 +    ServerAlias www.exemple.org 
 +</VirtualHost>
  
-    # Configuration SSL avec Let’s Encrypt +<VirtualHost *:443> 
-    SSLEngine On +    Use common_config exemple.org 
-    SSLCertificateFile /etc/letsencrypt/live/exemple.org/fullchain.pem +    ServerAlias www.exemple.org
-    SSLCertificateKeyFile /etc/letsencrypt/live/exemple.org/privkey.pem+
          
-    # Redirection pour les sous-domaines non déclarés +    ProxyRequests Off 
-    RewriteEngine On +    ProxyPreserveHost On 
-    RewriteCond %{HTTP_HOST} !^exemple\.org$ [NC] +    ProxyPass / http://192.168.20.IP_Interne_de_la_VM/ 
-    RewriteCond %{HTTP_HOST} !^www\.exemple\.org$ [NC] +    ProxyPassReverse / http://192.168.20.IP_Interne_de_la_VM/ 
-    RewriteRule ^ https://exemple.org%{REQUEST_URI} [L,R=301]+ <Proxy *> 
 + Require all granted 
 + <Limit GET POST> 
 + Require all granted 
 + </Limit> 
 + <Limit DELETE PUT> 
 + Require all denied 
 + </Limit> 
 + </Proxy> 
 + 
 </VirtualHost> </VirtualHost>
  
 </code> </code>
-==== Options propre au proxy ==== 
-  a2enmod proxy proxy_http 
- 
 ===== Variables utiles ===== ===== Variables utiles =====
   * ''${APACHE_LOG_DIR}'' : le chemin du dossier des logs   * ''${APACHE_LOG_DIR}'' : le chemin du dossier des logs
  
 +===== Certificat ssl =====
 +  sudo apt install certbot
 +
 +Éteindre apache avant ça (et le rallumer ensuite) :
 +  sudo certbot --pre-hook "service apache2 stop" --post-hook "service apache2 restart" certonly --standalone -d monsite.mondomaine.org 
 +
 +Renouvellement en éteignant/rallumant automatiquement la bête : 
 +  sudo certbot renew --pre-hook "service apache2 stop" --post-hook "service apache2 restart"
  
  
CC Attribution-Noncommercial-Share Alike 4.0 International Driven by DokuWiki
pratique/informatique/apache.1729947894.txt.gz · Dernière modification : 26/10/2024 15:04 de Zatalyz