Kann die CGI-Ausführung an den Servernamen gebunden werden?

Kann die CGI-Ausführung an den Servernamen gebunden werden?

Ich habe mehrere VirtualHost-Einträge konfiguriert.

<VirtualHost *:80>
        ServerName subdomain1.domain.tld
        [...]
        DocumentRoot /var/www/html/subdomain1
        [...]
</VirtualHost>

<VirtualHost *:80>
        ServerName subdomain2.domain.tld
        [...]
        DocumentRoot /var/www/html/subdomain2
        [...]
</VirtualHost>

Später habe ich aus irgendeinem Grund CGI (CGID) aktiviert. Seitdem ist CGIwird ausgelöstindem Sie in einem Pfad nachfragen domain.tld/a_path_for_a_cgi/. Soweit ich sehen kann, ist dies nicht von den für VirtualHost-Einträge konfigurierten Subdomänen abhängig.

Ich möchte, dass dies für die meisten Subdomains deaktiviert wird:

subdomain1.domain.tld/a_path_for_a_cgi/ => disallow or not to find
subdomain2.domain.tld/a_path_for_a_cgi/ => disallow or not to find
subdomain3.domain.tld/a_path_for_a_cgi/ => allow

Ist dies auf einem Apache-Server möglich oder sollte ich das Szenario aufspalten, um zwei Apache-Server zu haben? Sollte ich das Szenario aus Sicherheitsgründen trotzdem aufspalten, da CGI deaktiviert ausgeliefert wurde (Debian Stretch)?

Antwort1

Wenn Sie CGI nur in einem bestimmten aktivieren möchten VirtualHost, verschieben Sie Ihre CGI-spezifischen Anweisungen ( ScriptAliasoder den <Directory/>-Block, der es enthält Options +ExecCGI, je nachdem, was konfiguriert ist) von der Hauptserverkonfiguration in das Ziel VirtualHost.

Das Modul mod_cgi(oder mod_cgid) ist natürlich in allen virtuellen Hosts aktiv, wenn es im Server aktiviert ist, aber Sie müssen es nicht in jedem virtuellen Host verwenden.

Es stimmt, dass die meisten Module aus Sicherheits- und Performancegründen standardmäßig deaktiviert sind, aber meiner Meinung nach muss man keinen zweiten Server aufsetzen, nur weil man dieses Modul in einem virtuellen Host braucht. Es sollte ausreichen, wenn man in den anderen virtuellen Hosts keine Skripte ausführen kann (fehlender ScriptAlias/ ExecCGIoder verbotener Zugriff auf das Skript <Directory/>).

Links:

verwandte Informationen