Sèrie RHCSA: instal·lació, configuració i seguretat d'un servidor web i FTP - Part 9


Un servidor web (també conegut com a servidor HTTP) és un servei que gestiona contingut (normalment pàgines web, però també altres tipus de documents) a un client d'una xarxa.

Un servidor FTP és un dels recursos més antics i més utilitzats (fins i tot fins al dia d'avui) per posar fitxers a disposició dels clients d'una xarxa en els casos en què no és necessària l'autenticació, ja que FTP utilitza nom d'usuari i contrasenya sense xifratge.

El servidor web disponible a RHEL 7 és la versió 2.4 del servidor HTTP Apache. Pel que fa al servidor FTP, utilitzarem el Very Secure Ftp Daemon (també conegut com vsftpd) per establir connexions protegides per TLS.

En aquest article explicarem com instal·lar, configurar i protegir un servidor web i un servidor FTP a RHEL 7.

Instal·lació d'Apache i servidor FTP

En aquesta guia utilitzarem un servidor RHEL 7 amb una adreça IP estàtica de 192.168.0.18/24. Per instal·lar Apache i VSFTPD, executeu l'ordre següent:

# yum update && yum install httpd vsftpd

Quan finalitzi la instal·lació, inicialment es desactivaran tots dos serveis, per la qual cosa hem d'iniciar-los manualment de moment i habilitar-los per començar automàticament a partir del següent arrencada:

# systemctl start httpd
# systemctl enable httpd
# systemctl start vsftpd
# systemctl enable vsftpd

A més, hem d'obrir els ports 80 i 21, on els dimonis web i ftp estan escoltant, respectivament, per permetre l'accés a aquests serveis des de l'exterior:

# firewall-cmd --zone=public --add-port=80/tcp --permanent
# firewall-cmd --zone=public --add-service=ftp --permanent
# firewall-cmd --reload

Per confirmar que el servidor web funciona correctament, engegueu el vostre navegador i introduïu la IP del servidor. Hauríeu de veure la pàgina de prova:

Pel que fa al servidor ftp, haurem de configurar-lo més, cosa que farem en un minut, abans de confirmar que funciona com s'esperava.

Configuració i seguretat del servidor web Apache

El fitxer de configuració principal d'Apache es troba a /etc/httpd/conf/httpd.conf, però pot dependre d'altres fitxers presents a /etc/httpd/conf.d.

Tot i que la configuració predeterminada hauria de ser suficient per a la majoria dels casos, és una bona idea familiaritzar-se amb totes les opcions disponibles tal com es descriu a la documentació oficial.

Com sempre, feu una còpia de seguretat del fitxer de configuració principal abans d'editar-lo:

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)

A continuació, obriu-lo amb el vostre editor de text preferit i cerqueu les variables següents:

  1. ServerRoot: el directori on es guarden la configuració, l'error i els fitxers de registre del servidor.
  2. Escoltar: indica a Apache que escolti en una adreça IP i/o ports específics.
  3. Inclou: permet la inclusió d'altres fitxers de configuració, que han d'existir. En cas contrari, el servidor fallarà, a diferència de la directiva IncludeOptional, que s'ignora silenciosament si els fitxers de configuració especificats no existeixen.
  4. Usuari i grup: el nom de l'usuari/grup per executar el servei httpd.
  5. DocumentRoot: el directori des del qual Apache servirà els vostres documents. De manera predeterminada, totes les sol·licituds es prenen d'aquest directori, però es poden utilitzar enllaços simbòlics i àlies per apuntar a altres ubicacions.
  6. ServerName: aquesta directiva estableix el nom d'amfitrió (o l'adreça IP) i el port que el servidor utilitza per identificar-se.

La primera mesura de seguretat consistirà en crear un usuari i un grup dedicats (és a dir, tecmint/tecmint) per executar el servidor web com i canviar el port predeterminat a un de més alt (9000 en aquest cas):

ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

Podeu provar el fitxer de configuració amb.

# apachectl configtest

i si tot està bé, reinicieu el servidor web.

# systemctl restart httpd

i no oblideu habilitar el nou port (i desactivar l'antic) al tallafoc:

# firewall-cmd --zone=public --remove-port=80/tcp --permanent
# firewall-cmd --zone=public --add-port=9000/tcp --permanent
# firewall-cmd --reload

Tingueu en compte que, a causa de les polítiques de SELinux, només podeu utilitzar els ports retornats per

# semanage port -l | grep -w '^http_port_t'

per al servidor web.

Si voleu utilitzar un altre port (és a dir, el port TCP 8100), haureu d'afegir-lo al context del port SELinux per al servei httpd:

# semanage port -a -t http_port_t -p tcp 8100

Per assegurar encara més la instal·lació d'Apache, seguiu aquests passos:

1. L'usuari Apache s'està executant perquè no hauria de tenir accés a un shell:

# usermod -s /sbin/nologin tecmint

2. Desactiveu la llista de directoris per evitar que el navegador mostri el contingut d'un directori si no hi ha index.html present en aquest directori.

Editeu /etc/httpd/conf/httpd.conf (i els fitxers de configuració dels amfitrions virtuals, si n'hi ha) i assegureu-vos que la directiva Opcions, tant a la part superior com als nivells de bloc de Directori, estigui configurada. a cap:

Options None

3. Amaga informació sobre el servidor web i el sistema operatiu a les respostes HTTP. Editeu /etc/httpd/conf/httpd.conf de la següent manera:

ServerTokens Prod 
ServerSignature Off

Ara ja esteu preparat per començar a publicar contingut des del vostre directori /var/www/html.

Configuració i seguretat del servidor FTP

Com en el cas d'Apache, el fitxer de configuració principal de Vsftpd (/etc/vsftpd/vsftpd.conf) està ben comentat i, tot i que la configuració predeterminada hauria de ser suficient per a la majoria d'aplicacions, hauríeu de familiaritzar-vos amb el documentació i la pàgina de manual (man vsftpd.conf) per tal de fer funcionar el servidor ftp de manera més eficient (no ho puc subratllar prou!).

En el nostre cas, aquestes són les directrius utilitzades:

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

Si utilitzeu chroot_local_user=YES, els usuaris locals seran (per defecte) col·locats en una presó amb chroot al seu directori d'inici just després d'iniciar sessió. Això vol dir que els usuaris locals no podran accedir a cap fitxer fora dels seus directoris d'inici corresponents.

Finalment, per permetre que ftp llegeixi fitxers al directori inicial de l'usuari, configureu el següent booleà SELinux:

# setsebool -P ftp_home_dir on

Ara us podeu connectar al servidor ftp mitjançant un client com Filezilla:

Tingueu en compte que el registre /var/log/xferlog registra les baixades i les càrregues, que coincideixen amb la llista de directoris anterior:

Resum

En aquest tutorial hem explicat com configurar un servidor web i ftp. A causa de l'extensió de l'assignatura, no és possible cobrir tots els aspectes d'aquests temes (és a dir, amfitrions web virtuals). Per tant, us recomano que consulteu també altres articles excel·lents en aquest lloc web sobre Apache.