Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

Vhosts Apache supplémentaires sur eole3

De AJLSM
Version datée du 14 avril 2026 à 05:59 par Jlarvers (discussion | contributions) (→Vhosts Apache supplémentaires sur eole3)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Vhosts Apache supplémentaires sur eole3

[modifier | modifier le wikicode]

Les enregistrements DNS de type A doivent pointer vers l’IP publique de eole3 :

  • cockpit.ajlsm.com → IP publique eole3
  • sftpgo.ajlsm.com → IP publique eole3

Modules Apache nécessaires

[modifier | modifier le wikicode]
/usr/sbin/a2enmod proxy proxy_http proxy_wstunnel ssl rewrite headers
/usr/sbin/apachectl configtest
systemctl reload apache2

Fichier : /etc/apache2/sites-available/cockpit.ajlsm.com.conf

<VirtualHost *:80>
    ServerName cockpit.ajlsm.com

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    ErrorLog /var/log/apache2/cockpit.errors.log
    CustomLog /var/log/apache2/cockpit.log combined
</VirtualHost>

Fichier : /etc/apache2/sites-available/cockpit.ajlsm.com-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName cockpit.ajlsm.com

    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"

    ProxyPreserveHost On
    SSLProxyEngine On
    RequestHeader set X-Forwarded-Proto "https"

    RewriteEngine On

    # Restriction IP (à adapter selon whitelist fail2ban / IP autorisées)
    RewriteCond %{REMOTE_ADDR} !127.0.0.1
    RewriteCond %{REMOTE_ADDR} !192.168.123.0/24
    RewriteCond %{REMOTE_ADDR} !109.190.129.96
    RewriteCond %{REMOTE_ADDR} !82.66.151.165
    RewriteCond %{REMOTE_ADDR} !141.95.206.118
    RewriteRule ^ - [F,L]

    # Websocket Cockpit
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /(.*)           wss://127.0.0.1:9090/$1 [P,L]

    ProxyPass / https://127.0.0.1:9090/
    ProxyPassReverse / https://127.0.0.1:9090/

    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off

    ErrorLog /var/log/apache2/cockpit.errors.log
    CustomLog /var/log/apache2/cockpit.log combined

    SSLCertificateFile /etc/letsencrypt/live/cockpit.ajlsm.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/cockpit.ajlsm.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
/usr/sbin/a2ensite cockpit.ajlsm.com.conf
/usr/sbin/apachectl configtest
systemctl reload apache2
certbot --apache -d cockpit.ajlsm.com
curl -I http://cockpit.ajlsm.com/
curl -Ik https://cockpit.ajlsm.com/

Remarque sécurité

[modifier | modifier le wikicode]

Une fois le proxy Apache opérationnel, il est recommandé de fermer l’accès public direct au port 9090 et de ne conserver que :

  • Apache en 443
  • restriction IP dans Apache

Fichier : /etc/apache2/sites-available/sftpgo.ajlsm.com.conf

<VirtualHost *:80>
    ServerName sftpgo.ajlsm.com

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    ErrorLog /var/log/apache2/sftpgo.errors.log
    CustomLog /var/log/apache2/sftpgo.log combined
</VirtualHost>

Fichier : /etc/apache2/sites-available/sftpgo.ajlsm.com-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName sftpgo.ajlsm.com

    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"

    ProxyPreserveHost On
    RequestHeader set X-Forwarded-Proto "https"

    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    ErrorLog /var/log/apache2/sftpgo.errors.log
    CustomLog /var/log/apache2/sftpgo.log combined

    SSLCertificateFile /etc/letsencrypt/live/sftpgo.ajlsm.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/sftpgo.ajlsm.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
/usr/sbin/a2ensite sftpgo.ajlsm.com.conf
/usr/sbin/apachectl configtest
systemctl reload apache2
certbot --apache -d sftpgo.ajlsm.com
curl -I http://sftpgo.ajlsm.com/
curl -Ik https://sftpgo.ajlsm.com/

Vérifications utiles

[modifier | modifier le wikicode]

Vhosts chargés

[modifier | modifier le wikicode]
/usr/sbin/apachectl -S

Modules actifs

[modifier | modifier le wikicode]
/usr/sbin/a2query -m proxy
/usr/sbin/a2query -m proxy_http
/usr/sbin/a2query -m proxy_wstunnel
/usr/sbin/a2query -m ssl

Test local des backends

[modifier | modifier le wikicode]
curl -Ik https://127.0.0.1:9090/
curl -I  http://127.0.0.1:8080/

Ordre recommandé

[modifier | modifier le wikicode]
  1. créer les entrées DNS
  2. créer les fichiers vhosts Apache
  3. activer les sites Apache
  4. tester la configuration Apache
  5. générer les certificats avec certbot
  6. tester les FQDN en HTTPS
  7. restreindre ensuite finement l’accès à Cockpit
  8. restreindre ensuite l’accès à SFTPGo selon les IP clientes

  • cockpit.ajlsm.com est exposé proprement en HTTPS via Apache, avec restriction IP
  • sftpgo.ajlsm.com est exposé proprement en HTTPS via Apache, proxy vers le port 8080
  • les ports internes ne sont plus exposés directement aux utilisateurs finaux