Este tutorial le explica cómo configurar el servidor web Apache en Linux paso a paso con ejemplos prácticos. Aprenda a configurar hosts virtuales, configurar el directorio de inicio del usuario como raíz del sitio, cambiar la raíz del documento, implementar una aplicación CGI básica y permitir el tráfico HTTP y HTTPS a través del firewall de Linux y SELinux.
Apache es el servidor web más popular, seguro, confiable y potente. Apache es utilizado por más sitios web que todos los demás servidores web combinados.
En este tutorial usaré tres sistemas: Servidor, cliente Linux y cliente ventana de nuestro entorno LAB. Configuraré el servidor web Apache en el sistema del servidor y probaré el sistema inuxclient y windowclient. Si desea comprobar la topología de red utilizada en este artículo, consulte el siguiente artículo. Configuración de laboratorio para capacitación en RHEL
- Instalando Apache
- Reglas iptables de marca para el servidor web
- Configurar SELinux para un servidor web
- Seguridad del anfitrión
- Seguridad de usuarios
- Protección del servidor web utilizando el archivo . htaccess
- Configurar la carpeta public_html en el directorio de inicio del usuario
- Cómo crear hosts virtuales
- Cómo expandir la aplicación CGI básica
- Host virtual seguro
Instalando Apache
Se requieren dos paquetes para instalar el servidor Apache
El paquete httpd instala el servidor web Apache.
mod_ssl es un paquete adicional necesario para crear sitios web seguros
elinks es un paquete complementario para un navegador web basado en texto.
Si tiene un repositorio yum configurado, use el siguiente comando para instalar el servidor web Apache con el paquete adicional
# yum instala r-y httpd mod_ssl
# yum instalar enlaces electrónicos
O puedes hacerlo de una forma más sencilla usando groupinsatall. Con el siguiente comando puede instalar los paquetes necesarios y todos los predeterminados.
# yum groupinstall "Servidor web"
Si el repositorio yum no está configurado, use el comando rpm para instalar los RPM requeridos. Monte el disco de instalación de RHEL6 en la carpeta de medios y muévalo a la carpeta Paquetes.
Ejecute el siguiente comando para instalar httpd
#rp m-ivh httpd* --nodeps --force
Ejecute el siguiente comando para instalar mod_ssl
#rp m-ivh mod_ssl* --nodeps --force
Ejecute el siguiente comando para instalar elinks
#rp m-ivh elinks* --nodeps --force
Comprobar que los paquetes se instalaron correctamente
Ejecute el siguiente comando para iniciar el servicio al iniciar el sistema
Iniciando el servicio httpd
El servicio httpd requiere al menos una conexión de red activa, si no detecta ninguna conexión activa mostrará el siguiente mensaje
Ejecutando httpd: httpd: apr_sockaddr_info_get() falló para el servidor
El servicio httpd intenta resolver la dirección IP del sistema en un nombre de dominio. Si falla, arrojará el siguiente error.
httpd: No se pudo determinar de manera confiable el nombre de dominio completo del servidor usando 127. 0. 0. 1 para ServerName
En el mundo real, el servidor DNS se usa para vincular una dirección IP con un nombre de dominio. En el entorno de laboratorio, donde tenemos un número limitado de sistemas, también podemos usar el archivo hosts para este propósito.
Cambie el nombre de host a server. example. com y guarde el archivo.
Recargar el sistema
Asegúrese de que el nombre del host se cambie.
Antes de actualizar el archivo hosts en el servidor, también verifique el nombre del host y la dirección IP LinuxClient.
Ahora en el servidor, abra el archivo /etc /hosts
Agregue el registro del servidor LinuxClient y guarde el archivo
Verifique el estado de la tarjeta de red
Ahora reinicie el servicio HTTPD
Las versiones estándar de HTTPD crean un servicio general del servidor web, que es suficiente para la mayoría de las operaciones básicas. Después de comenzar el servicio HTTPD, inicie el navegador web e ingrese la URL http: // localhost.
La misma prueba se puede realizar utilizando un navegador web de texto si la interfaz gráfica no está disponible.
# Elinks 127. 0. 0. 1
Recibimos la página de prueba de Apache, que confirma el ajuste exitoso de Apache.
Deja el navegador Elinks. Haga clic en Q y cuando aparezca el menú de texto de salida de Elinks, haga clic en Y para salir de Elinks.
Instalamos con éxito el servidor web Apache. Hasta ahora, este es un servidor web ordinario para que sea un servidor web ordinario y seguro, necesitamos configurarlo.
Reglas iptables de marca para el servidor web
El servidor web Apache instalado por el puerto predeterminado 80 para el tráfico HTTP y 443 para el tráfico HTTPS.
Puede crear una regla de usuario iptable para limitar el acceso a una o más redes o sistemas. Por ejemplo, las siguientes reglas permiten el acceso a todas las computadoras en la red 192. 168. 1. 0, excepto una con la dirección IP 192. 168. 1. 25 a través del puerto 80.
-A Entrad a-m estado --m tc p-p tc p-s -с 192. 168. 1. 25 --dport 8 0-j Rechaz o-A Inpu t-m State - -M TC P-P TC P-S 192. 168. 1. 0/ 24 8 0-J aceptar
Tenemos un artículo bien escrito sobre el firewall iptable, úselo para crear reglas de usuarios de firewall para un servidor web. Para este artículo, crearemos reglas que permitan todo el tráfico en los puertos 80 y 443.
#iptable s-a Enum e-m State - -State Ne w-M TCP TCP - -DPort 8 0-J Aceptar #iptable s-A Inpu t-M State - -State Ne w-M TCP TC P-dport 44 3-J Aceptar
Guardar solo las reglas creadas y reiniciar el servicio iptable
# Servicio iptables Guardar # Servicio iptables reiniciar
Hasta que cambie el valor de la directiva DocumentRoot en el archivo httpd. conf, Apache está buscando una página web en el catálogo/var/www/html, ubicado de forma predeterminada.
Para iniciar un servidor web, es suficiente transferir la página web o los sitios web al catálogo/var/www/html.
Crearemos dos sitios para realizar pruebas. Para las pruebas usaremos la página html más simple.
Cree dos directorios mysite1 y mysite2 en la carpeta /var/www/html.
Cree una página html de muestra en ambos directorios.
Nuestros sitios web de ejemplo están listos para usar.
Configurar SELinux para un servidor web
Utilice el siguiente comando para verificar todos los valores booleanos relacionados con SELinux en httpd.
La mayoría de estas opciones se explican por sí solas y se relacionan con la interacción con otros servicios. Por ejemplo, httpd_enable_ftp_server permite que Apache actúe como un servidor FTP, lo cual está fuera del alcance de este artículo.
Opciones de SELinux habilitadas por defecto
Booleano | Descripciones |
httpd_builtin_scripting | Se utiliza para otorgar permiso al contenido php. |
httpd_dbus_avahi | Admite el acceso desde servicios HTTP |
httpd_enable_cgi | Permite que los servicios HTTP ejecuten scripts GCI |
httpd_tty_comm | Proporciona comunicación con terminales de control. |
httpd_unificado | Admite acceso de lectura/escritura/ejecución a archivos httpd_t |
httpd_enable_homedirs admite el acceso a archivos desde los directorios de inicio de los usuarios; el valor predeterminado está desactivado. Lo incluiremos más adelante en este artículo.
Las opciones habilitadas de forma predeterminada son suficientes para proporcionar servicios web básicos; no es necesario realizar ningún cambio. Pero necesita configurar contextos SELinux, el contexto de usuario es system_u y el tipo es http_sys_content_t.
Verifique el contexto del archivo actual
#l s-Z /var/www #l s-Z /var/www/html
Necesitamos establecer el contexto de cualquier archivo o directorio recién creado para que el usuario del servidor web pueda acceder a él.
Para cambiar el contexto use el comando chcon
#chco n-R -u system_u /var/www/html #chco n-R -t httpd_sys_content_t /var/www/html/
Verifique que todos los campos de contexto se hayan modificado correctamente.
#l s-Z /var/www/html
Pruebe estos sitios en un sistema cliente Linux [asegúrese de que rpm elinks esté instalado en el sistema cliente].
enlaces 192. 168. 1. 1/mystie1/index. htm
revisa el sitio
En un cliente de Windows, abra un navegador e ingrese 192. 168. 1. 1/mysite2/index. htm
Hemos instalado el servidor web Apache con la configuración por defecto.
Haga una copia de seguridad del archivo httpd. conf estándar en una ubicación segura.
Abra el archivo /etc/httpd/conf/httpd. conf
Este es el archivo de configuración principal para el servicio web httpd, que se puede utilizar directamente para un servicio web general.
Este archivo está agrupado en tres secciones, y cada una de ellas está bien comentada.
- Directivas de entorno global que controlan todo el funcionamiento del proceso del servidor Apache.
- Dirige que determine los parámetros del servidor principal o el servidor predeterminado, que responde a las solicitudes no procesadas por un host virtual. Estas directivas también establecen los valores predeterminados para la configuración de todos los hosts virtuales.
- La configuración de hosts virtuales que le permiten enviar verificaciones web a diferentes direcciones IP o nombres de host y procesarlos con el mismo proceso de Apache del servidor.
Para simplificar la navegación, active la numeración del ESC +: + Establecer Nu + Ingrese las líneas clave
Seguridad del anfitrión
Si el servidor tiene varias direcciones IP, puede limitar la dirección IP y el puerto en el que el servidor puede escuchar las conexiones entrantes. De manera predeterminada, el servidor escucha al puerto 80, pero se puede actualizar.
Por ejemplo, para limitar el servidor solo escuchando la dirección IP 192. 168. 1. 1 con el puerto 80, configure la directiva de escuchar
Escucha 192. 168. 1. 1:80
Ahora el servidor solo escuchará la dirección IP 192. 168. 1. 1 con el puerto 80 para las solicitudes entrantes.
Apache también le permite configurar hosts, que se les debe permitir acceder al servidor web. La sección le permite especificar la seguridad básica de los hosts.
Significado | Ejemplo | Descripciones |
Permitir de todos | Valor predeterminado, permitir el acceso desde todos los hosts | |
Permitir con [dirección IP] | Permitir desde 192. 168. 1. 10 | Para resolver el acceso solo a una dirección IP o host específica |
Permitir con [el nombre del host] | Permitir con LinuxClient | Resolver solo un host específico |
Permitir de [red] | Permitir de . example. com | Permitir solo la red Ejemplo. com |
Permitir de [red] | 192. 168. 1. 0/24 192. 168. 1. 0/255. 255. 255. 0 | Permitir solo desde la red 192. 168. 1. 0 |
Prohibir de todos | Prohibir el acceso de todos los anfitriones | |
Prohibir el acceso a [dirección IP] | Prohibir el acceso desde 192. 168. 1. 10 | Prohibir solo una dirección IP o host específica |
Prohibir el acceso a [Nombre del host] | Prohibir con LinuxClient | Prohibir solo un host específico |
Prohibir de [red] | Prohibir . example. com | Prohibir el acceso solo a ejemplo. com |
Prohibir de [red] | 192. 168. 1. 0/24 192. 168. 1. 0/255. 255. 255. 0 | Prohibir solo la red 192. 168. 1. 0 |
Recuerda por el examen
- Si el servicio DNS no es confiable, use la dirección IP.
- Al especificar un nombre de dominio para permiso o prohibición, asegúrese de encender el punto de liderazgo [.]
- Al indicar la subred en el último octeto, no debe haber un punto final [.].
- El pedido juega el papel más importante en la instalación de permiso o prohibición del acceso.
- Si establece un orden de Permitir, niegue, entonces el acceso solo se permitirá a los nombres de hosts o direcciones IP asociadas con la Directiva Permitir. Se negarán todos los demás hosts o direcciones IP.
- Si instala el pedido de NEGY, permita solo aquellos nombres de hosts o direcciones IP que están asociadas con la directiva de Deny se le negará el acceso. Todos los demás hosts o direcciones IP se permitirán acceso.
El valor predeterminado es permitir a todos
En nuestro sistema de laboratorio, tenemos dos clientes de LinuxClient [192. 168. 1. 10] y WindowClient [192. 168. 1. 20]. Solo permitiremos el acceso al sistema LinuxClient.
Guarde el archivo y reinicie el servicio HTTPD.
Intente ir a los mismos sitios de ambos sistemas de clientes nuevamente. Esta vez, el sistema LinuxClient podrá acceder al servidor web, como de costumbre, pero se le negará el sistema de Windows.
Seguridad de usuarios
La autenticación del usuario nos permite permitir el acceso al servidor web solo a ciertos usuarios o grupos.
Podemos usar las siguientes opciones para configurar la autenticación en función del usuario.
Opción | Descripciones |
Tipo de autenticación | Determina el método de autenticación |
Autodame | Comentario para los usuarios |
AutuserFile | Archivo utilizado para determinar el nombre del usuario y la contraseña |
Authgroupfile | Archivo utilizado para determinar grupos |
Requerir | Define usuarios o grupos que pueden ingresar al sistema |
Abra el archivo httpd. conf nuevamente
En el último ejercicio, limitamos el acceso a todos los anfitriones excepto uno.
Antes de hacer este ejercicio, permitamos que todos los hosts tengan acceso al servidor web.
En capítulo< directory >Sección Agregue lo siguiente y guarde el archivo
AuthType Basic Authname "Área restringida de contraseña" AuthuserFile/Etc/Httpd/UsraAuthFile Reader RHCEUSER01
Use el comando htpasswd para crear un usrauthfile, en el que se almacenarán las cuentas de los usuarios.
# htpassw d-cm/etc/httpd/usraauthfile rhceuser01
-C crea un archivo nuevo y llévelo por el primer usuario y contraseña.
-Las contraseñas de M se encriptarán en MD5 antes de guardar.
No use la opció n-c para crear usuarios posteriores, de lo contrario bloqueará completamente el archivo. Use la opció n-C solo por primera vez para el primer usuario, para los segundos usuarios, no use la opció n-C.
Reiniciar el servidor web
Intente ir a los mismos sitios del cliente nuevamente, esta vez solicitará un nombre de usuario y contraseña.
Si cancela la solicitud o usa el nombre y la contraseña incorrectos, el acceso se cerrará.
Use el nombre de usuario y la contraseña correctos
Después de la autenticación exitosa, se proporcionará acceso
Protección del servidor web utilizando el archivo . htaccess
En el ejercicio anterior, defendimos sitios enteros. Sin embargo, en la vida real, desea que ciertas partes del sitio estén disponibles públicamente, mientras que otras solo son usuarios autenticados. Para hacer esto, usaremos el archivo . htaccess.
Abra el archivo /etc/httpd/conf/httpd. conf nuevamente
Cambiar el valor de la Directiva de EllowoverRide a Authconfig
En el ejemplo anterior, utilizamos autenticación en la base de usuarios.
Eliminar esto y guardar el archivo
Cree un catálogo y archivo para MySite1
Supongamos que la carpeta salarial contiene el salario de los empleados, y queremos permitir el acceso solo al grupo de recursos humanos.
Cree un archivo . htaccess en la carpeta salarial
Agregue los siguientes parámetros y guarde el archivo
AuthType Basic Authname "Área restringida de contraseña" AuthGroupFile/Etc/Httpd/RhCeGroupFile requiere grupo HR HR
Ahora, solo los usuarios del grupo de recursos humanos, determinados por V/ETC/HTTPD/RHCEGROUPFILE, podrán evaluar esto.
Crear algunas cuentas más
Cree un archivo RhCeGroupFile, este archivo se almacenará registros sobre grupos
Agregue las cuentas de usuario al grupo de recursos humanos y guarde el archivo
Actualizar el contexto de Selinux en el archivo . htaccess
Reiniciar el servidor web
Intente acceder nuevamente al sitio del cliente, se permite el acceso a otras partes del sitio, a excepción del salario
Para acceder a la carpeta salarial, debe especificar el nombre de usuario y la contraseña
Después de la autenticación exitosa, se proporcionará acceso
Configurar la carpeta public_html en el directorio de inicio del usuario
El archivo httpd. conf incluye la directiva comentada userdir public_html, ubicada inmediatamente bajo el estado de usuario estándar, cuando está activado, permite a los usuarios ver y acceder al directorio public_html en su carpeta de inicio.
Abra el archivo /etc/httpd/conf/httpd. conf
Comentario sobre la directiva predeterminada
Elimine el comentario de la directiva usrdir public_html y guarde el archivo.
Ahora cualquiera tendrá acceso a páginas web que el usuario ponga en su~/public_html. Esta opción puede ser útil si desea que cada usuario pueda intercambiar archivos a través de la red. Para esta opción, debe ejecutar un catálogo de usuarios caseros para todo el mundo. También es necesario hacer que public_html sea legible y ejecutable. Por defecto, esta opción está deshabilitada, ya que esto requiere alguna violación de seguridad. Por lo tanto, si no necesita poder compartir contenidos del directorio de inicio del usuario, no encienda esta opción. Si tiene que encenderlo en el mundo real, siga todas las precauciones al configurar esta opción.
Crear un nuevo usuario ordinario
Cree una carpeta public_html en su carpeta de inicio y cree un archivo de prueba en la carpeta public_html.
Cambiar la resolución de archivos
Encienda la función de libro Selinux asociada con el catálogo de inicio
Reiniciar el servidor web
Vaya a él desde el sistema del cliente escribiendo 192. 168. 1/~rh_user1/index. htm
Cómo crear hosts virtuales
La función de los hosts virtuales en Apache le permite determinar varios sitios web en una dirección IP. Se necesitan los siguientes parámetros para configurar hosts virtuales
Namvirtualhost | El nombre del host o la dirección IP del host virtual |
ServerAdmin | Webmaster de dirección de correo electrónico |
Raiz del documento | La ubicación del directorio en el que se almacenan los archivos de host virtuales |
Nombre del servidor | URL de host virtual |
Registro de errores | La ubicación de la revista de error |
Custodleg | La ubicación de la revista de usuarios |
Supongamos que queremos publicar el nuevo sitio web ejemplo. com en un host virtual.
Cree un nuevo catálogo en el que se ubicará nuestro nuevo sitio
Cree un ejemplo de archivo en un nuevo sitio web
Actualización de contexto de Selinux
Abra el archivo de configuración principal nuevamente
Por defecto, la directiva NameVirtualHost está deshabilitada
Al final del archivo en la sección de host virtual, agregue las siguientes líneas y guarde el archivo
ServerAdmin [correo electrónico protegido] documentroot /webdata/example. com servername ejemplo. com errorlog logs/ejemplo. com-error_log customlog logs/ejemplo. com-access_log común
Si tiene un servidor DNS, actualice las zonas, de lo contrario, actualice los archivos del hosts. En el servidor, abra el archivo /etc /hosts
Agregue una entrada para un nuevo sitio de host virtual y guarde el archivo
Restaurar el servicio HTTPD
El sistema LinuxClient también debe actualizar el archivo de hosts antes de probar. Abra el archivo de hosts
Agregue una entrada para un nuevo sitio de host virtual y guarde el archivo
Ahora use el comando Elinks para ver un nuevo sitio
La página de prueba confirma que hemos configurado con éxito un host virtual.
Cómo expandir la aplicación CGI básica
En esta sección, implementaremos una aplicación CGI básica. La tarea de examen de RHCE «Detershal de la aplicación CGI básica» no verifica sus habilidades de programación, por lo que no necesita preocuparse por el lenguaje de programación. Solo necesitas conocer el método.
Cree un catálogo en el que se almacenará su aplicación web:
# mkdir/var/www/webapp
Crear un nuevo ejemplo de archivo perl
Agregue lo siguiente al archivo y guárdelo.[Esto creará un ejemplo de un script Perl para imprimir hola, mundo. Basado en la gestión de Apache]
#!/Usr/bin/perl print "Tipo de contenido: texto/html \ n \ n"; Imprima "¡Hola, mundo!";
Actualización de acceso a archivos y contexto Selinux
Abra el archivo de configuración
Al final del archivo, agregue lo siguiente y guarde el archivo
Scriptalias/webapp "/var/www/webapp"<Directory "/var/www/webapp/">Opciones Execcgi SIGUSMLINKS ORDER Permitir, Denegar Permitir de todos
Reiniciar el servidor web
Ahora en el cliente puede acceder a esta aplicación CGI.
Host virtual seguro
En esta última sección del liderazgo, configuraremos un host virtual seguro con un certificado autofirmado. Cree un catálogo para publicar nuestro sitio seguro
Cree en él un ejemplo de archivo index. htm.
Cambiar los derechos para acceder a los archivos y actualizar el contexto de Selinux
Abra el archivo de configuración principal /etc/httpd/conf. d/ssl. conf
Asegúrese de que la Directiva de escuchar permanezca en
Agregue el nuevo nameVirtualHost * Directiva *: 443 un poco más alto y reemplace _default_ con * en la etiqueta. Contrata las directivas de DocumentRoot y ServerName.
Cambie los valores de la Directiva y guarde el archivo.
Vaya al catálogo del titular del certificado/etc/pki/tls/certs y use el comando Genkey para generar un nuevo certificado y una clave cerrada para un sitio seguro.
Seleccione Siguiente y haga clic en Enter
Durante el examen, siempre elija el tamaño mínimo de clave. Incluso el tamaño clave más pequeño puede tomar hasta varios minutos, y en el examen el camino cada minuto. Seleccione 512, vaya a la siguiente pestaña y haga clic en Enter.
Espere la clave para generar
Seleccione No y haga clic en Ingresar en la ventana Generar CSR
Guarde los datos predeterminados, seleccione Siguiente y haga clic en Intro.
Hemos creado con éxito un certificado, ahora necesitamos actualizar el archivo de hosts en el servidor
Restaurar el servicio HTTPD
En el cliente actualizar el archivo de hosts
Para verificar un sitio seguro, abra el navegador web e ingrese https://host1. example. com/index. htm en la URL.
Verá una ventana de una conexión sin electricidad, a menos que adquiera un certificado real en el Centro de Certificación (CA), como Verisign o Thawte. Para las pruebas, no necesitamos un certificado de un fabricante de terceros partidos, ya que tenemos un certificado autointiviado. Haga clic en I Underand the Risks (entiendo los riesgos) y haga clic en la excepción Agregar (agregue una excepción).
Haga clic en la confirmación de la exclusión de la seguridad
La página de prueba confirma que hemos ajustado con éxito un host virtual seguro
Para probar sitios seguros en el navegador de prueba Elinks, necesitamos comentar sobre dos directivas estándar
Abra el archivo /etc/elinks. conf
Necesitas hacer estas directivas
Comentarlos y guardar el archivo
Ahora puede acceder a sitios seguros a través del formulario Elinks
La página de prueba confirma la seguridad de nuestro alojamiento
Cuando reinicie el servicio HTTPD, el proceso de reinicio en realidad detiene el servicio antes de comenzarlo nuevamente. Este proceso toma solo unos segundos, lo cual es normal para las pruebas, pero en la vida real, cuando miles de personas vienen a su sitio, no puede permitirse ninguna interrupción en el trabajo incluso durante unos segundos. En tal situación, puede usar la opción Reboad, que le permite volver a leer la configuración principal sin el apagado real del servicio.
#Service httpd recargar
Otra opción importante que necesitas saber para el mundo real es elegante
#Service httpd elegante
Esta opción vuelve a leer un nuevo archivo de configuración sin desconectar a todos los usuarios conectados. El único inconveniente de esta opción es que las conexiones activas actuales usan el archivo de configuración anterior hasta que interrumpen su conexión y se conectan nuevamente.
Otra opción genial es ConfigTest, cuando se usa el cual el servicio verifica el archivo de configuración principal para los errores y los informa si se encuentra algo. Esta es su mano de ayuda durante el examen para detectar cualquier error sintáctico en el archivo de configuración.
# Servicio Httpd Configtest Syntax OK
Si este equipo encuentra algún error sintáctico, devolverá el mensaje sobre esto, de lo contrario, devolverá el mensaje de sintaxis OK.
Eso es todo para este artículo.
Por ComputernetWorkingNotes actualizado el 2023-08-29 02:00:01 IST
ComputernetWorkingNotes Libros de texto de Linux Cómo configurar el servidor web Apache en Redhat Linux