Instale Apache en Ubuntu 18.04 Bionic Beaver Linux

Instale Apache en Ubuntu 18.04 Bionic Beaver Linux

Objetivo

Aprenda cómo instalar Apache en Ubuntu 18.04, cómo configurar hosts virtuales, configurar el firewall y usar certificados SSL para una conexión segura

Requisitos

  • Permisos de raíz

Convenciones

  • # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz
    directamente como usuario raíz o mediante el uso de sudo dominio
  • ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Introducción

El servidor web Apache no necesita grandes presentaciones: el software de código abierto, lanzado por la Fundación Apache, es uno de los servidores web más utilizados del mundo. En este tutorial, veremos cómo instalarlo, ajustar la configuración del firewall para permitir el tráfico HTTP y HTTPS, y configurar hosts virtuales en Ubuntu 18.04.

Instalación

Instalación del servidor web Apache en Ubuntu 18.04 Bionic Beaver es un proceso realmente sencillo:

$ sudo apt-get update && apt-get install apache2

Los scripts de instalación de Ubuntu se encargarán de comenzar y habilitar el apache2 servicio al arranque.

Configuración de firewall

Para acceder al contenido predeterminado atendido por Apache, en la misma máquina se ejecuta el servidor, solo tendremos que encender un navegador web y navegar a hostil en la barra de direcciones. Si todo está configurado correctamente, una página debe darnos la bienvenida con el "Funciona!" mensaje:

Página de bienvenida de Apache

Si un firewall está habilitado en nuestro sistema (como debería), para que el contenido sea accesible desde fuera de nuestra máquina, necesitamos permitir el tráfico entrante en el puerto 80. El comando para ejecutar depende del administrador de firewall en uso. Por ejemplo, cuando se usa UFW (Predeterminado de Ubuntu), debemos ejecutar:

$ sudo UFW Permitir http

Del mismo modo, si usa cortafuegos, Podemos correr:

$ sudo firewall-cmd --Permanent --add-service = http && firewall-cmd--Reload

Observe que el comando anterior tendrá su efecto en la zona de firewalld predeterminada. Si queremos operar en otro, debemos especificarlo con el --zona opción.



Configuración de un host virtual

El servidor web Apache tiene la capacidad de ejecutar más de un sitio web en la misma máquina. Cada sitio (un host virtual en la terminología de Apache) que debe servirse debe tener su propia configuración. Un host virtual puede ser IP o nombrado basado.

En este tutorial, nos centraremos en el segundo tipo, ya que es más fácil de configurar y no requiere múltiples direcciones IP (los hosts virtuales basados ​​en el nombre permiten que muchos sitios web compartan la misma dirección).

El host virtual predeterminado

En Ubuntu, el host virtual predeterminado se define en el /etc/apache2/sites disponible directorio, dentro del 000 default.confusión archivo. Echemos un vistazo:

 [… .] ServerAdmin webmaster@localhost documentroot/var/www/html [.. .] ErrorLog $ apache_log_dir/error.Log customLog $ apache_log_dir/access.Log combinado [.. .]  
Copiar

El La directiva en la línea 1 se utiliza para agrupar la configuración utilizada por Apache para un host virtual específico. Lo primero que vimos definido en él es el *: 80 instrucción. Esto indica la dirección IP y el puerto utilizados por el host virtual.

Múltiples hosts virtuales se pueden definir en el mismo archivo o siguiendo el esquema de "una definición de host virtual por archivo". En ambos casos, la primera definición se considera el valor predeterminado, si la solicitud del cliente no coincide con ningún otro host virtual.

El ServerAdmin La directiva en la línea 3 es opcional, y se utiliza para especificar la dirección de contacto que el servidor web mostrará en caso de mensajes de error. Normalmente queremos proporcionar una dirección de correo electrónico válida como argumento de esta directiva, ya que el servidor web usará Mailto: en él, para facilitar el contacto del administrador.

Raiz del documento en la línea 4 es obligatorio y es esencial para la configuración del host virtual. El argumento de esta instrucción debe ser una ruta válida del sistema de archivos. El directorio proporcionado se considerará el directorio raíz del host virtual, y no debe contener un final '/'. En este caso, el directorio de la raíz del documento es /var/www/html. Si echamos un vistazo a su contenido, vemos que contiene el índice.html página utilizada como la página de bienvenida del servidor que vimos antes.

Las dos últimas instrucciones en la línea 8 - 9 proporcionadas en este virtualhost son Registro de errores y Custodleg. Al usar el primero, establecemos el archivo en el que el servidor registrará los errores ocurridos. El segundo, en su lugar, se usa para registrar las solicitudes enviadas al servidor en el formato especificado (puede usar esto como referencia para un conocimiento profundo sobre formatos de registro).



Crear un nuevo host virtual

Vimos cómo se define el VirtualHost predeterminado; Ahora suponga que queremos servir a otro sitio web utilizando nuestro servidor web: debemos definir un nuevo host virtual para poder lograr nuestro objetivo.

Como se dijo anteriormente, los archivos de hosts virtuales deben definirse dentro del /etc/apache2/sites disponible directorio (al menos en distribuciones basadas en Debian): por lo tanto, crearemos nuestro archivo allí. Antes de hacerlo, queremos crear el directorio para ser utilizado como nuestro Raiz del documento, y crear una página básica que se mostrará cuando llegamos al sitio:

$ sudo mkdir/var/www/ejemplo && echo "Bienvenido al ejemplo!">/var/www/ejemplo/index.html 

Ahora podemos continuar con la configuración de nuestro host virtual:

 DocumentRoot/var/www/ejemplo servername www.ejemplo.local 

Esta es la configuración mínima necesaria para ejecutar un host virtual. Aquí podemos ver una nueva directiva, Nombre del servidor: Esto es lo que define nuestro host virtual. Guardemos este archivo como ejemplo.confusión. Para activar nuestro virtualhost usamos el A2ensita Comando: Todo lo que hace este comando es crear un enlace simbólico del archivo en el /etc/apache2/sitios habilitado directorio:

$ sudo a2ensite Ejemplo.confusión

Después de eso, debemos volver a cargar la configuración del servidor:

$ sudo systemctl recarga apache2.servicio

Definimos nuestro virtualhost, sin embargo, ya que esta es una prueba y no tenemos un entrada DNS asociado con él, para verificar que la configuración funciona, debemos agregar una entrada en el /etc/huéspedes Archivo de la máquina estamos tratando de llegar al sitio desde.

$ sudo echo "192.168.122.241 www.ejemplo.local ">> /etc /hosts

Sin esta línea, (y sin una entrada DNS) sería imposible asociar la dirección del servidor al nombre de nuestro VirtualHost, y usar la IP del servidor directamente, "activaría" el host virtual predeterminado.

Desde la máquina del cliente, si ahora navegamos a "www.ejemplo.Local ”Deberíamos ver la página mínima que configuramos arriba:

Ejemplo VirtualHost Índice

Configuración de SSL

SSL, corto para Asegurar la capa de enchufes Es la tecnología la que nos permite cifrar los datos involucrados en la conexión entre el cliente y el servidor. Cuando se usan los certificados SSL, https (Protocolo de transferencia de hyper texto seguro) reemplaza a HTTP en la URL.

Los certificados SSL son emitidos por una autoridad de certificado que, como un tercero confiable, asegura que alguien es realmente que afirma estar en Internet. Los certificados SSL pueden ser muy costosos, sin embargo, hay dos alternativas principales para obtener un certificado: crear un certificado autoestimado o obtener una de Vamos a cifrar.

Generar un certificado SSL autofirmado

Aunque generar un certificado autofirmado, no es una tarea difícil y puede ser útil cuando solo desea lograr el cifrado, no se puede utilizar en contextos donde el certificado en sí debe ser firmado por un tercero de confianza. Podemos generar un certificado autofirmado utilizando el openssl utilidad:

$ sudo openssl req -x509 \ -days 365 \ -sha256 \ -newkey rsa: 2048 \ -nodes \ -keyout ejemplo.clave \ -Out Ejemplo -Cert.pem 

Veamos qué hace este comando. La primera opción que encontramos, -x509, Modifica el comportamiento del comando para que genera un certificado autofirmado en lugar de una solicitud de certificado.

Con -días, Establecemos la validez, en días, para el certificado. La siguiente opción proporcionada es -nueva llave: Con él creamos una nueva clave, en este caso un RSA clave, con el tamaño de 2048 bits. Para nuestro caso de prueba, no queremos cifrar el archivo de clave privada, por lo que utilizamos -nodos. Si se omite esta opción, el archivo en el que se almacena la clave estará protegido por una contraseña, que se nos pedirá que inserte cada vez que se reinicie el servidor web.

Con -llave y -afuera Especificamos el archivo para escribir la clave generada y el certificado, respectivamente. Al iniciar el comando, se nos pedirá que respondamos algunas preguntas, y luego se generará la clave y el certificado.

Está a punto de que se le solicite que ingrese información que se incorporará a su solicitud de certificado. Lo que está a punto de ingresar es lo que se llama un nombre distinguido o un DN. Hay bastantes campos, pero puede dejar algo de blanco para algunos campos, habrá un valor predeterminado, si ingresa '.', el campo se dejará en blanco. ----- Nombre del país (código de 2 letras) [Au]: Nombre de estado o provincia (nombre completo) [algún estado]: Nombre de la localidad (por ejemplo, ciudad) []: Nombre de la organización de Milán (por ejemplo, empresa) [Internet Widgits Pty Ltd] : Daño Inc. Nombre de la unidad organizacional (por ejemplo, sección) []: Nombre común (E.gramo. servidor fqdn o su nombre) []: www.ejemplo.Dirección de correo electrónico local []: 

El siguiente paso es copiar nuestra clave y certificado generados en /etc/ssl/privado y /etc/ssl/ssl-certs directorios respectivamente:

$ sudo MV Ejemplo-Cert.PEM/etc/ssl/certs

El certificado es público, por lo que no necesita permiso especial. Ahora, la clave:

$ sudo MV Ejemplo.clave/etc/ssl/privado

Es importante que ajustemos los permisos de archivo de clave. Si examinamos el /etc/ssl/privado carpeta, podemos ver que pertenece al raíz usuario y el SSL-CERT grupo, y tiene 710 Como permisos, lo que significa que, si bien el propietario tiene privilegios completos, el propietario del grupo solo puede acceder a él y enumerar su contenido, y no se permite ningún permiso para los demás:

$ ls -ld/etc/ssl/private drwx-x --- 2 root ssl-cert 4096 marzo 16 11:57/etc/ssl/privado 

Cambiemos nuestros permisos de archivo clave en consecuencia, dando permisos de lectura y escritura del propietario, y privilegios de solo lectura para el grupo:

$ sudo root de chown: ssl-cert/etc/ssl/private/ejemplo.clave $ sudo chmod 640/etc/ssl/private/ejemplo.llave 

Para usar nuestro certificado, ahora tenemos que habilitar el módulo SSL Apache. Lo hacemos usando el a2enmod dominio:

$ sudo a2enmod ssl

Estamos casi alli. Ahora es el momento de modificar nuestro host virtual y establecerlo de esta manera:

 DocumentRoot/var/www/ejemplo servername www.ejemplo.Local # habilitar SSL Engine SSLEngine en SSLCertificateFile/Etc/SSL/Certs/Ejemplo-Cert.PEM SSLCertificAtekeyFile/Etc/SSL/Private/Ejemplo.llave 
Copiar

El puerto 443 En línea 1 es el puerto utilizado para HTTPS (en lugar del puerto 80 utilizado para HTTP). También agregamos el SSLEGINE ON Instrucción en la línea 6, que se explica por sí misma.

Finalmente en la línea 8 - 9 hemos especificado las rutas para nuestro certificado y archivos clave, utilizando el Sslcertificatefile y Sslcertificatekeyfile instrucciones.

Ahora, siga las instalaciones para abrir los puertos de firewall utilizados al comienzo del tutorial, pero esta vez para permitir el https servicio:

$ sudo UFW Permitir https

Finalmente, recargar la configuración de Apache:

$ sudo systemctl recarga apache2

Todo listo. Ahora, si desde el cliente, navegamos a https: // www.ejemplo.local Dirección, deberíamos ver que el servidor web nos alertó de que el certificado usado no es seguro (ya que es autosuficiente). Esto es, sin embargo, el signo de nuestra configuración funciona y el tráfico entre el cliente y el servidor estará encriptado (deberá agregar una excepción para que el certificado lo use).

Alerta del navegador SSL

Configuración Vamos en cifrado

La alternativa a los certificados comerciales y autofirmados está representado por "Vamos en cifrado". Vamos a encrypt es una autoridad de certificado gratuita, automatizada y abierta; Su objetivo es hacer posible obtener automáticamente un certificado confiable por el navegador sin ninguna intervención humana.

Esto se puede lograr mediante el uso del CUMBRE protocolo y un agente de gestión de certificados que se ejecuta en el servidor.

Para obtener un certificado, debemos demostrar que tenemos control sobre el dominio que queremos usar el certificado para. Si no tenemos acceso de shell en el servidor, debemos comunicarnos con nuestro proveedor de servicios para activar Let's Ciftpt en nuestro nombre, pero probablemente hay una sección dedicada en el panel de configuración del servicio.

Si, en cambio, tenemos acceso de shell al servidor en cuestión, en primer lugar debemos instalar el certbot Cliente acme. Instalación de CertBot en Ubuntu 18.04 Es solo cuestión de correr:

$ sudo apt-get update && apt-get install certbot python-certbot-apache

El paquete CertBot viene con un temporizador de systemd Unidad que ejecutará CERTBOT dos veces al día para mantener el certificado actualizado. Obtener un certificado es bastante simple:

$ sudo certbot --apache -m -d 

Obviamente, para que esto funcione, el dominio debe apuntar correctamente a nuestra IP de servidor de acceso público. CERTBOT le solicitará algunas preguntas que ajusten la configuración, y si todo va bien, el certificado y la clave deberían guardar en el /etc/letsencrypt/live/ directorio. Simplemente modifique su archivo de host virtual para señalarlos y ya está terminado!

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Instale Arch Linux en VMware Workstation
  • Ubuntu 20.04: WordPress con instalación de Nginx
  • Cosas para instalar en Ubuntu 22.04
  • Habilitar/deshabilitar el firewall en Manjaro Linux
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
  • Ubuntu 20.04 WordPress con instalación de Apache
  • Configurar servidor FTP en Linux
  • Cómo configurar VSFTPD en Debian