A web server (also known as a HTTP server) is a service that handles content (most commonly web pages, but other types of documents as well) over to a client in a network.
A FTP server is one of the oldest and most commonly used resources (even to this day) to make files available to clients on a network in cases where no authentication is necessary since FTP uses username and password without encryption.
Il server web disponibile in RHEL 7 è la versione 2.4 dell’Apache HTTP Server. Per quanto riguarda il server FTP, utilizzeremo il Very Secure Ftp Daemon (noto anche come vsftpd) per stabilire connessioni protette da TLS.

In questo articolo spiegheremo come installare, configurare e proteggere un server web e un server FTP in RHEL 7.
Installazione di Apache e del server FTP
In questa guida utilizzeremo un server RHEL 7 con un indirizzo IP statico di 192.168.0.18/24. Per installare Apache e VSFTPD, eseguire il seguente comando:
# yum update && yum install httpd vsftpd
Quando l’installazione è completata, entrambi i servizi saranno disabilitati inizialmente, quindi dovremo avviarli manualmente per il momento ed abilitarli per l’avvio automatico a partire dal prossimo avvio:
# systemctl start httpd # systemctl enable httpd # systemctl start vsftpd # systemctl enable vsftpd
Inoltre, dovremo aprire le porte 80 e 21, dove i demoni web e ftp sono in ascolto, rispettivamente, per consentire l’accesso a tali servizi dall’esterno:
# firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --zone=public --add-service=ftp --permanent # firewall-cmd --reload
Per confermare che il server web funziona correttamente, aprire il browser e inserire l’IP del server. Dovresti vedere la pagina di test:

Per quanto riguarda il server ftp, dovremo configurarlo ulteriormente, cosa che faremo tra un minuto, prima di confermare che funzioni come previsto.
Configurazione e Sicurezza del Server Web Apache
Il file di configurazione principale per Apache si trova in /etc/httpd/conf/httpd.conf
, ma potrebbe fare affidamento su altri file presenti all’interno di /etc/httpd/conf.d
.
Anche se la configurazione predefinita dovrebbe essere sufficiente per la maggior parte dei casi, è una buona idea familiarizzare con tutte le opzioni disponibili come descritto nella documentazione ufficiale.
Come sempre, fare una copia di backup del file di configurazione principale prima di modificarlo:
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)
Quindi aprirlo con il tuo editor di testo preferito e cercare le seguenti variabili:
- ServerRoot: la directory in cui vengono conservati i file di configurazione, errori e log del server.
- Listen: istruisce Apache ad ascoltare su un indirizzo IP specifico e/o porte specifiche.
- Include: consente l’inclusione di altri file di configurazione, che devono esistere. In caso contrario, il server fallirà, a differenza della direttiva IncludeOptional, che viene ignorata silenziosamente se i file di configurazione specificati non esistono.
- User and Group: il nome dell’utente/gruppo con cui eseguire il servizio httpd.
- DocumentRoot: la directory da cui Apache servirà i tuoi documenti. Per impostazione predefinita, tutte le richieste provengono da questa directory, ma possono essere utilizzati collegamenti simbolici e alias per puntare ad altre posizioni.
- ServerName: questa direttiva imposta l’hostname (o l’indirizzo IP) e la porta che il server utilizza per identificarsi.
La prima misura di sicurezza consisterà nella creazione di un utente e gruppo dedicato (cioè tecmint/tecmint) per eseguire il server web e nel cambiare la porta predefinita con una più alta (9000 in questo caso):
ServerRoot "/etc/httpd" Listen 192.168.0.18:9000 User tecmint Group tecmint DocumentRoot "/var/www/html" ServerName 192.168.0.18:9000
Puoi testare il file di configurazione con.
# apachectl configtest
e se tutto è OK, allora riavvia il server web.
# systemctl restart httpd
e non dimenticare di abilitare la nuova porta (e disabilitare quella vecchia) nel firewall:
# firewall-cmd --zone=public --remove-port=80/tcp --permanent # firewall-cmd --zone=public --add-port=9000/tcp --permanent # firewall-cmd --reload
Nota che, a causa delle politiche di SELinux, puoi utilizzare solo le porte restituite da
# semanage port -l | grep -w '^http_port_t'
per il server web.
Se desideri utilizzare un’altra porta (cioè porta TCP 8100), dovrai aggiungerla al contesto della porta SELinux per il servizio httpd:
# semanage port -a -t http_port_t -p tcp 8100

Per proteggere ulteriormente l’installazione di Apache, segui questi passaggi:
1. L’utente con cui Apache è in esecuzione non dovrebbe avere accesso a una shell:
# usermod -s /sbin/nologin tecmint
2. Disabilita l’elenco delle directory per impedire al browser di visualizzare i contenuti di una directory se non è presente un file index.html in quella directory.
Modifica /etc/httpd/conf/httpd.conf
(e i file di configurazione per gli host virtuali, se presenti) e assicurati che la direttiva Options, sia al livello superiore che ai livelli dei blocchi di Directory, sia impostata su None:
Options None
3. Nascondi le informazioni sul server web e sul sistema operativo nelle risposte HTTP. Modifica /etc/httpd/conf/httpd.conf
come segue:
ServerTokens Prod ServerSignature Off
Ora sei pronto per iniziare a servire contenuti dalla tua directory /var/www/html.
Configurazione e Sicurezza del Server FTP
Come nel caso di Apache, il file di configurazione principale per Vsftpd (/etc/vsftpd/vsftpd.conf)
è ben commentato e mentre la configurazione predefinita dovrebbe essere sufficiente per la maggior parte delle applicazioni, è consigliabile familiarizzare con la documentazione e la pagina man (man vsftpd.conf)
per operare in modo più efficiente il server ftp (non posso sottolinearlo abbastanza!).
Nel nostro caso, queste sono le direttive utilizzate:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES allow_writeable_chroot=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
Utilizzando chroot_local_user=YES
, gli utenti locali verranno (per impostazione predefinita) collocati in una “prigione” chroot nel loro directory home subito dopo il login. Ciò significa che gli utenti locali non potranno accedere a file al di fuori delle rispettive directory home corrispondenti.
Infine, per consentire a ftp di leggere i file nella directory home dell’utente, impostare il seguente booleano SELinux:
# setsebool -P ftp_home_dir on
Ora puoi connetterti al server ftp utilizzando un client come Filezilla:

Nota che il registro /var/log/xferlog
registra i download e gli upload, che corrispondono all’elenco delle directory sopra:

Leggi Anche: Limitare la larghezza di banda di rete FTP utilizzata dalle applicazioni in un sistema Linux con Trickle
Riepilogo
In questo tutorial abbiamo spiegato come configurare un server web e un server ftp. A causa dell’ampiezza dell’argomento, non è possibile coprire tutti gli aspetti di questi argomenti (ad esempio gli host web virtuali). Pertanto, ti consiglio di controllare anche altri eccellenti articoli su questo sito web su Apache.
Source:
https://www.tecmint.com/rhcsa-series-install-and-secure-apache-web-server-and-ftp-in-rhel/