Web server

Nota

Questo capitolo descrive le funzionalità dell’applicazione Web server, disponibile nel nuovo Server Manager.

L’applicazione Web server è immediatamente disponibile al termine dell’installazione di NethServer. Serve a configurare e avviare il web server HTTP Apache.

L’applicazione Web server mette a disposizione le seguenti funzionalità:

  • Apache HTTP web server

  • Integrazione con i certificati del sistema per HTTPS

  • Hosting di siti web multipli

  • reverse proxy HTTP

  • Linguaggio di scripting PHP per eseguire applicazioni Web

  • FTP server

Le seguenti sezioni descrivono le pagine dell’applicazione Web server. Alcune di esse richiedono componenti software aggiuntivi che vengono scaricati, installati e configurati automaticamente quando sono richiesti per la prima volta.

Dashboard Web server

La pagina Dashboard del server Web mostra lo stato e le statistiche correnti del server Web. Elenca anche i componenti aggiuntivi installati sul sistema.

La configurazione predefinita di Apache serve il contenuto di /var/www/html ed è in grado di eseguire script PHP sul Default web stack.

Impostazioni

La pagina Impostazioni consente di modificare i parametri di configurazione di PHP per l’allocazione delle risorse (ad es. Memoria massima dello script e tempo di esecuzione).

Le modifiche influiscono sulla configurazione globale di PHP: sono pertanto valide sia per le applicazioni Web che per gli script da riga di comando, a meno che non vengano sovrascritti in qualche modo.

Le impostazioni di PHP possono anche essere modificate per un sito web specifico dalla pagina Virtual hosts (vedi anche Versioni e configurazione PHP), o sovrascritte con un file di configurazione personalizzato. Per questo scopo:

  1. per PHP 7.2, verificare le impostazioni correnti di PHP-FPM in /etc/opt/rh/rh-php72/php-fpm.d/000-virtualhost.conf;

  2. creare un file nella stessa directory (es /etc/opt/rh/rh-php72/php-fpm.d/001-custom.conf) e fare riferimento alla documentazione ufficiale di PHP-FPM per adeguare le necessarie direttive;

  3. aggiungere il file creato al backup della configurazione.

Virtual host

È possibile ospitare più siti web su NethServer. È possibile configurare lo spazio di hosting del sito web dalla pagina Virtual Host.

Quando viene creato un nuovo virtual host con uno o più nomi server, il nuovo Server Manager crea contestualmente, per ciascuno di essi, un nome alias nel servizio DNS locale.

Nota

Un nome alias del server è accessibile dai client web se questi utilizzano il NethServer stesso come il loro server DNS. Per i siti Web pubblici, consultare la documentazione del provider DNS e assicurarsi che il nome alias del server sia impostato correttamente nel DNS pubblico.

I nomi alias del server sono elencati nella dashboard del nuovo Server Manager e da lì possono essere direttamente modificati.

Restrizioni accesso sito web

È possibile limitare il modo in cui i client web accedono ad un sito web con le seguenti opzioni, disponibili nella sezione Impostazioni avanzate.

  1. Abilitando l’opzione :guilabel: Consenti accesso solo da reti fidate. Fare riferimento alla sezione Reti fidate per maggiori informazioni.

  2. Abilitare l’opzione Richiedi autenticazione HTTP per concedere l’accesso ai client solo tramite password. Le applicazioni Web di solito forniscono un metodo di autenticazione autonomo: questa opzione potrebbe essere utile per proteggere i contenuti di siti Web statici.

  3. Se fosse necessario accedere al sito web sempre tramite un canale crittografato, è possibile abilitare l’opzione Richiedi connessione crittografata SSL. Qualsiasi richiesta di risorse ricevuta tramite il protocollo HTTP verrà reindirizzata su HTTPS.

Certificato SSL/TLS

A ciascun virtual host può essere assegnato un certificato SSL/TLS dedicato oppure si può utilizzare quello predefinito di sistema. In qualunque caso, i nomi usati per il virtual host devono essere presenti tra i nomi alternativi del certificato, altrimenti i client web potrebbero rifiutare di connettersi.

Configurare un’applicazione web

Quando viene definito un nuovo virtual host, viene creata anche la relativa directory radice web. Il percorso completo della radice web viene visualizzato sotto Host virtuali > Elenco > Web root path.

Se l’opzione Abilita accesso FTP è attiva, è possibile caricare i dati, i file di configurazione e gli script nella root web utilizzando un client FTP.

Suggerimento

La password di autenticazione HTTP dovrebbe essere diversa da quella FTP, poiché FTP viene utilizzato per caricare i contenuti del virtual host mentre HTTP viene utilizzato per visualizzarli dal web.

Il sito web visualizza una pagina di «Benvenuto» fino a quando un file chiamato index.html o index.php non viene caricato nella directory web principale. Se non si desidera questo comportamento, è possibile abilitare l’opzione Elenco dei file della directory principale, come alternativa alla pagina di benvenuto.

I file caricati via FTP sono di proprietà del gruppo apache con autorizzazioni di sola lettura. Se fossero necessarie autorizzazioni di scrittura o di esecuzione, sarà possibile concederle tramite un client FTP.

Avvertimento

Se un sito web contiene codice eseguibile, ad esempio script PHP, le implicazioni di sicurezza delle autorizzazioni dei file devono essere valutate attentamente. Si consiglia di concedere l’accesso in scrittura solo a una serie limitata di file e directory speciali, come richiesto dalla documentazione dell’applicazione web.

La configurazione di Apache può essere sovrascritta caricando un file chiamato .htaccess. Fare riferimento alla documentazione ufficiale di Apache per ulteriori informazioni su questa funzione 1.

Versioni e configurazione PHP

Se la versione di PHP fornita da Default web stack non si adatta ad un’applicazione web, è possibile selezionarne e installarne una alternativa e sovrascrivere le impostazioni predefinite globali di PHP, come spiegato nella sezione Impostazioni.

Disabilitazione di un virtual host

L’azione Disabilita nasconde il virtual host, rendendolo inaccessibile ai client web. Questa operazione è reversibile, selezionando l’azione Abilita.

Cancellazione di un virtual host

L’azione :guilabel: Cancella rimuove la configurazione del virtual host e ne cancella la directory web principale. Questa operazione non è reversibile.

Reverse proxy

In alternativa a un virtual host, che ospita file statici o un’applicazione web PHP in una directory radice web locale, è possibile inoltrare richieste web a un altro server HTTP e fornire risposte per conto di esso. Questo comportamento può essere configurato dalla pagina Reverse proxy.

Ogni elemento del reverse proxy è in realtà una regola che può corrispondere a una richiesta web in entrata. A seconda del valore del campo Nome, la corrispondenza può verificarsi per:

  1. il nome del sito web richiesto, se Nome inizia con qualsiasi carattere, tranne la barra` / `, oppure

  2. il resource path richiesto, se Nome inizia con un carattere barra` / `.

Se la regola corrisponde, la richiesta viene inoltrata a un altro server web, definito dal campo URL di destinazione.

Proxy pass per nomi sito web

Scenario per un proxy pass sul nome:

  • NethServer è il firewall della LAN, con nome pubblico http://fw.myfirstdomain.org

  • Si possiede il dominio http://mydomain.com che punta all’IP pubblico di NethServer

  • Si desidera che le richieste per http://mydomain.com vengano inoltrate ad un server interno (IP privato: 192.168.2.100)

In questo scenario, creare una nuova voce cliccando su Crea un reverse proxy. Compilare il campo Nome con mydomain.com e il campo URL destinazione destinazione con http://192.168.2.100.

Proxy pass su resource path

Scenario per un proxy pass basato su url

  • NethServer è il firewall della LAN

  • Si possiede un dominio http://mydomain.com

  • Si desidera che le richieste per http://mydomain.com/mysite vengano inoltrate ad un server interno (IP privato: 192.168.2.100)

In questo scenario, creare una nuova voce cliccando su Crea un reverse proxy. Compilare il campo Nome con /mysite e il campo URL destinazione destinazione con http://192.168.2.100.

Opzioni aggiuntive

Se fossero consentite solo connessioni cifrate, abilitare l’opzione Richiedi connessione SSL cifrata.

Si può restringere l’accesso solo ai client appartenenti ad alcune reti, specificando un elenco separato da virgola di reti in notazione CIDR nel campo Accedi da reti CIDR.

Opzioni disponibili solo per proxy pass basti su nome:

  • Abilita o disabilita l’inoltro dell’header Host

  • Abilita o disabilita l’inoltro dei WebSocket

  • Accetta certificato SSL di destinazione non valido: utilizzare questa opzione solo se la destinazione dispone di un certificato autofirmato

Impostazioni avanzate reverse proxy

Quando la regola del reverse proxy corrisponde a un nome di sito web è possibile assegnargli un certificato dedicato, scegliendolo dall’elenco Certificato SSL/TLS.

Non è possibile selezionare il certificato se la regola corrisponde a un resource path. In questo caso è possibile utilizzare solo il certificato predefinito.

Indipendentemente dal tipo di regola, sono disponibili anche le seguenti impostazioni:

  • Accesso dalle reti CIDR: limita l’accesso ad un dato elenco di reti CIDR. Solo i client web che si connettono da tali reti sono autorizzati ad aprire il sito web.

  • Richiedi connessione crittografata SSL: se abilitato, qualsiasi richiesta `http:// ` viene reindirizzata a `https:// `.

  • Accetta certificato SSL non valido dalla destinazione: se l’URL di destinazione inizia con https:// e viene restituito un certificato non valido, abilitando questa opzione si ignora l’errore di convalida del certificato.

  • inoltra l’intestazione «Host» HTTP alla destinazione: se abilitato, un’intestazione HTTP Host contenente il nome host della richiesta originale viene inoltrata all’URL di destinazione. Ciò potrebbe essere richiesto dall’applicazione del server di destinazione per funzionare correttamente.

Server FTP

Avvertimento

Il protocollo FTP non è sicuro. Le password e i dati dei file vengono inviati in chiaro sulla rete.

Il File Transfer Protocol è un protocollo di rete standard utilizzato per il trasferimento di file tra un client e un server 2. La pagina FTP abilita il servizio FTP e permette di configurare account utente aggiuntivi limitati al solo servizio FTP.

Gli utenti del servizio FTP possono essere limitati ad accedere alla propria directory home abilitando Chroot utente nella home directory. Quando questa opzione è abilitata, l’utente non può vedere le altre directory di sistema. Questa configurazione è anche nota come jailing.

Quando viene creato un virtual host, gli viene assegnato un nome utente FTP casuale. È possibile quindi caricare il contenuto del virtual host attraverso FTP. Fare riferimento a Configurare un’applicazione web per maggiori informazioni.

Utenti di sistema

Avvertimento

Questa configurazione è altamente sconsigliata. Si noti inoltre che, se abilitata, l’integrazione con il server Web verrà interrotta.

Dopo aver abilitato gli utenti di sistema, gli utenti virtuali saranno disabilitati. Tutta la configurazione deve essere eseguita da linea di comando.

Abilitare gli utenti di sistema:

config setprop vsftpd UserType system
signal-event nethserver-vsftpd-save

Dato l’utente goofy, per prima cosa assicurarsi che sia abilitato per l’accesso remoto da shell. Vedi Accesso ai servizi. Quindi, abilitare l’accesso:

db accounts setprop goofy FTPAccess enabled
signal-event user-modify goofy
signal-event nethserver-vsftpd-save

Per disabilitare l’accesso ad un utente precedentemente abilitato:

db accounts setprop goofy FTPAccess disabled
signal-event nethserver-vsftpd-save

Se non esplicitamente disabilitato, tutti gli utenti di sistema hanno l’opzione di chroot all’interno della propria home. Per disabilitare il chroot di un utente di sistema:

db accounts setprop goofy FTPChroot disabled
signal-event nethserver-vsftpd-save

Riferimenti

1

Documentazione Apache per i file .htaccess https://httpd.apache.org/docs/2.4/howto/htaccess.html

2

File Transfer Protocol https://en.wikipedia.org/wiki/File_Transfer_Protocol