Un servidor web (también conocido como servidor HTTP. es un servicio que maneja contenido (más comúnmente páginas web, pero también otros tipos de documentos) a un cliente en una red.
Un servidor FTP es uno de los recursos más antiguos y más utilizados (incluso hasta el día de hoy) para hacer que los archivos estén disponibles para los clientes en una red en los casos en los que no es necesaria la autenticación, ya que FTP utiliza nombre de usuario. y contraseña. sin cifrado.
El servidor web disponible en RHEL 7. es la versión 2.4. de Apache HTTP Servidor. En cuanto al servidor FTP, usaremos Very Secure Ftp Daemon (también conocido como vsftpd. para establecer conexiones protegidas por TLS.
RHCSA: Instalación, configuración y protección de Apache y FTP-Parte 9
En este artículo explicaremos cómo instalar, configurar y asegurar un servidor web y un servidor FTP en RHEL 7.
Table of Contents
Instalación de Apache y servidor FTP
En esta guía usaremos un servidor RHEL 7 con una dirección IP estática de 192.168.0.18/24. Para instalar Apache y VSFTPD, ejecute el siguiente comando:
# yum update && yum install httpd vsftpd
Cuando la instalación se completa, ambos servicios se deshabilitarán inicialmente, por lo que debemos iniciarlos manualmente por el momento y habilitarlos para que comiencen automáticamente comenzando con el siguiente arranque:
# systemctl start httpd
# systemctl enable httpd
# systemctl start vsftpd
# systemctl enable vsftpd
Además, tenemos que abrir los puertos 80. y 21. donde los demonios web y ftp están escuchando, respectivamente, para permitir el acceso a esos servicios del exterior:
# firewall-cmd–zone = public–add-port = 80/tcp–permanent
# firewall-cmd–zone = public–add-service = ftp–permanent
# firewall-cmd–reload
Para confirmar que el servidor web está funcionando correctamente, encienda su navegador e ingrese la IP del servidor. Debería ver la página de prueba:
Confirmar Apache Web Server
En cuanto al servidor ftp, tendremos que configurarlo más, lo que haremos en un minuto, antes de confirmar que está funcionando como se esperaba.
Configuración y protección del servidor web Apache
El archivo de configuración principal para Apache. se encuentra en/etc/httpd/conf/httpd. conf, pero puede depender de otros archivos presentes dentro de/etc/httpd/conf.d.
Aunque la configuración predeterminada debería ser suficiente para la mayoría de los casos, es una buena idea familiarizarse con todas las opciones disponibles como se describe en la documentación oficial.
Como siempre, haga una copia de seguridad copia del archivo de configuración principal antes de editarlo:
# cp/etc/httpd/conf/httpd.conf/etc/httpd/conf/httpd.conf.$(date +% Y% m% d)
Luego ábralo con su editor de texto preferido y busque las siguientes variables:
- ServerRoot. el directorio donde se guardan los archivos de configuración, error y registro del servidor.
- Escuchar. indica a Apache que escuche en direcciones IP y/o puertos específicos.
- Incluir. permite la inclusión de otros archivos de configuración, que deben existir. De lo contrario, el servidor fallará, a diferencia de la directiva IncludeOptional, que se ignora silenciosamente si los archivos de configuración especificados no existen.
- Usuario y grupo. el nombre del usuario/group para ejecutar el servicio httpd como.
- DocumentRoot. el directorio desde el cual Apache servirá sus documentos. De forma predeterminada, todas las solicitudes se toman de este directorio, pero se pueden usar enlaces simbólicos y alias para señalar a otras ubicaciones.
- ServerName. esta directiva establece el nombre de host (o la dirección IP ) y el puerto que utiliza el servidor para identificarse.
La primera medida de seguridad consistirá en crear un usuario y un grupo dedicados (es decir, tecmint. tecmint. para ejecutar el servidor web y cambiar el puerto predeterminado a uno superior ( 9000. en este caso):
ServerRoot “/etc/httpd” Escuche 192.168.0.18: 9000 Usuario grupo tecmint tecmint DocumentRoot “/var/www/html” ServerName 192.168.0.18:9000
Puede probar el archivo de configuración con.
# apachectl configtest
y si todo está OK. luego reinicie el servidor web.
# systemctl reinicie httpd
y no olvide habilitar el nuevo puerto (y deshabilitar el antiguo) en el firewall:
# firewall-cmd–zone = public–remove-port = 80/tcp–permanente # firewall-cmd–zone = public–add-port = 9000/tcp–permanent # firewall-cmd–reload
Tenga en cuenta que, debido a las políticas de SELinux. solo puede usar los puertos devueltos por
# semanage port-l | grep-w ‘^ http_port_t’
para el servidor web.
Si desea utilizar otro puerto (es decir, el puerto TCP 8100. , deberá agregarlo a Contexto del puerto SELinux. para el servicio httpd.
# semanage port-a-t http_port_t-p tcp 8100
Agregar puerto Apache a las políticas de SELinux
Para asegurar aún más su instalación de Apache, siga estos pasos:
1.. El usuario Apache se está ejecutando ya que no debería tener acceso a un shell:
# usermod-s/sbin/nologin tecmint
2.. Desactive la lista de directorios para evitar que el navegador no muestre el contenido de un directorio si no hay index.html. presente en ese directorio.
Edite/etc/httpd/conf/httpd.conf (y los archivos de configuración para hosts virtuales, si los hay) y asegúrese de que la directiva Opciones. tanto en la parte superior como en los niveles de bloque de directorio, se establece en Ninguno.
Opciones Ninguno
3.. Ocultar información sobre el servidor web y el sistema operativo en las respuestas HTTP. Edite/etc/httpd/conf/httpd.conf de la siguiente manera:
ServerTokens Prod ServerSignature Off
Ahora está listo para comenzar a servir contenido desde su directorio /var/www/html.
Configuración y protección del servidor FTP
Como en el caso de Apache, el archivo de configuración principal para Vsftpd. (/etc/vsftpd/vsftpd.conf) es bien comentado y si bien la configuración predeterminada debería ser suficiente para la mayoría de las aplicaciones, debe familiarizarse con la documentación y la página de manual (man vsftpd.conf) para operar el servidor ftp de manera más eficiente (¡no puedo enfatizar eso lo suficiente!).
En nuestro caso, estas son las directivas utilizadas:
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_write = YES YES listen = NO listen_ipv6 = YES pam_service_name = vsftpd userlist_enable = YES tcp_wrappers = YES
Al usar chroot_local_user = YES, los usuarios locales serán (por defecto) colocados en una cárcel con chroot en su directorio de inicio inmediatamente después de iniciar sesión. Esto significa que los usuarios locales no podrán acceder a ningún archivo fuera de sus directorios de inicio correspondientes.
Finalmente, para permitir que ftp lea archivos en el directorio de inicio del usuario, configure el siguiente SELinux. booleano:
# setsebool-P ftp_home_dir on
Ahora puede conectarse al servidor ftp usando un cliente como Filezilla.
Compruebe la conexión FTP
Tenga en cuenta que el registro de/var/log/xferlog registra las descargas y cargas, que coinciden con la lista de directorios anterior:
Monitor FTP Descarga y Subir
Leer también. Limitar el ancho de banda de la red FTP utilizado por las aplicaciones en un sistema Linux con Trickle
Resumen
En este tutorial hemos explicado cómo configurar una web y un servidor ftp. Debido a la amplitud del tema, no es posible cubrir todos los aspectos de estos temas (es decir, servidores web virtuales). Por lo tanto, te recomiendo que consultes también otros excelentes artículos en este sitio web sobre Apache.