One place for hosting & domains

      autenticación

      Cómo instalar y configurar SimpleSAMLphp para la autenticación SAML en Ubuntu 18.04


      Introducción

      SimpleSAMLphp es una aplicación de autenticación PHP de código abierto que ofrece soporte para SAML 2.0 como Proveedor de servicios (SP) o Proveedor de identidad (IdP).

      SAML (Security Assertion Markup Language) es un mecanismo de comunicación seguro basado en XML para intercambiar datos de autenticación y autorización entre organizaciones y aplicaciones. Se utiliza a menudo para implementar SSO web (autenticación única). Esto elimina la necesidad de mantener múltiples credenciales de autenticación en múltiples organizaciones. O dicho de otro modo, puede usar una identidad, como un nombre de usuario y contraseña, para acceder a múltiples aplicaciones.

      Una instancia de SimpleSAMLphp se conecta con una fuente de autenticación, que es un proveedor de identidad como LDAP o una base de datos de usuarios. Autentica a los usuarios contra esta fuente de autenticación antes de conceder acceso a los recursos disponibles de los Proveedores de servicios vinculados.

      A través de este tutorial, instalará SimpleSamlPHP y lo configurará para que utilice una base de datos de MySQL como fuente de autenticación. Almacenará los usuarios y las contraseñas cifradas en la base de datos MySQL y probará que puede utilizar esos usuarios para iniciar sesión.

      Requisitos previos

      Paso 1: Descargar e instalar SimpleSAMLphp

      Es necesario realizar un par de pasos para instalar SimpleSAMLphp. Tenemos que descargar el software en sí mismo así como algunos componentes y requisitos previos adicionales. También deberemos realizar algunos cambios en la configuración de nuestro host virtual.

      Inicie sesión en su servidor si no lo ha hecho aún.

      Descargue SimpleSAMLphp desde el sitio web del proyecto. SimpleSAMLphp siempre enlaza la última versión estable de su software a la misma URL. Esto significa que podemos obtener la última versión escribiendo esto:

      • wget https://simplesamlphp.org/download?latest

      Con esto, se descargará un archivo comprimido llamado download?latest que contiene SimpleSAMLphp. Extraiga el contenido con el comando tar:

      Los archivos se extraerán a un directorio nuevo con la etiqueta simplesamlphp-1.x.y​​​, donde x.y es el número de la versión actual. Utilice el comando ls para identificar el archivo:

      Verá el nombre del archivo:

      Ouptut

      simplesamlphp-1.18.5

      Ahora, copie el contenido del directorio a /var/simplesamlphp usando el comando cp. Asegúrese de sustituir el número de versión con la versión que tenga:

      • sudo cp -a simplesamlphp-1.x.y/. /var/simplesamlphp/

      El conmutador -a garantiza que los permisos del archivo se copien junto con los archivos y carpetas. El punto al final del archivo de origen garantiza que todo en el directorio de origen, incluyendo los archivos ocultos, se copian al directorio de destino.

      Nota: Si necesita instalar los archivos en una ubicación diferente, deberá actualizar varios archivos. Consulte la documentación de instalación oficial de SimpleSAMLphp para ver los detalles específicos.

      SimpleSAMLphp necesita algunos paquetes de software adicionales, como las extensiones de PHP para trabajar con XML, cadenas de bytes múltiples, curl y LDAP. También necesita memcached. Instale estos usando su administrador de paquetes.

      Primero, actualice su lista de paquetes:

      A continuación, instale los paquetes:

      • sudo apt install php-xml php-mbstring php-curl php-memcache php-ldap memcached

      Una vez que se complete la instalación, reinicie Apache para activar las nuevas extensiones de PHP:

      • sudo systemctl restart apache2

      Ahora que SimpleSAMLphp está instalado, configuraremos Apache para presentar los archivos.

      Paso 2: Configurar Apache para presentar SimpleSAMLphp

      Ya ha configurado un dominio y apuntado a este servidor, y ha configurado un host virtual para que funcione con HTTPS protegiendo Apache con Let´s Encrypt. Usaremos eso para presentar SimpleSAMLphp.

      El único directorio de SimpleSAMLphp que debe estar visible para la web es /var/simplesamlphp/www. Para exponerlo a la Web, edite el archivo de configuración de host virtual SSL de Apache para su dominio.

      Si su archivo de configuración de host virtual se llama your_domain.conf, Let´s Encrypt creó un nuevo archivo de configuración llamado your_domain-le-ssl.conf que gestiona las solicitudes HTTPS para su dominio. Abra el archivo de configuración SSL con el siguiente comando para editar el archivo. Asegúrese de sustituir your_domain por el nombre real del archivo:

      • sudo nano /etc/apache2/sites-available/your_domain-le-ssl.conf

      El archivo debería tener el siguiente aspecto, pero el archivo real puede tener comentarios más descriptivos:

      your_domain-le-ssl.conf’>/etc/apache2/sites-available/your_domain-le-ssl.conf

      <IfModule mod_ssl.c>
      <VirtualHost *:443>
              ServerName your_domain
      
              ServerAdmin webmaster@localhost
              DocumentRoot /var/www/html
      
              ErrorLog ${APACHE_LOG_DIR}/error.log
              CustomLog ${APACHE_LOG_DIR}/access.log combined
      
      SSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pem
      SSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pem
      Include /etc/letsencrypt/options-ssl-apache.conf
      </VirtualHost>
      </IfModule>
      

      La directiva ServerName aquí define el dominio base que debería coincidir con la definición de este host virtual. Este debería ser el nombre de dominio para el que configuró un certificado SSL en la sección de requisitos previos. Vamos a añadir una directiva Alias que proporciona control a SimpleSAMLphp para todas las URLs que coinciden con https://your_domain/simplesaml/*. Haga esto añadiendo la siguiente línea al archivo de configuración:

      your_domain-le-ssl.conf’>/etc/apache2/sites-available/your_domain-le-ssl.conf

      ...
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
      
        Alias /simplesaml /var/simplesamlphp/www
      
      ...
      

      Esto significa que domain_name/simplesaml/* se dirigirán al directorio /var/simplesamlphp/www que proporciona el control a SimpleSAMLphp.

      A continuación, concederemos acceso al directorio /var/simplesamlphp/www especificando un control de acceso Require all granted para el mismo. Esto hará que el servicio SimpleSAMLphp sea accesible en la Web. Haga esto añadiendo lo siguiente al archivo de configuración:

      your_domain-le-ssl.conf’>/etc/apache2/sites-available/your_domain-le-ssl.conf

      ...
        Alias /simplesaml /var/simplesamlphp/www
        <Directory /var/simplesamlphp/www/>
            Require all granted
        </Directory>
      ...
      

      Guarde y cierre el archivo. Reinicie Apache para implementar los cambios:

      • sudo systemctl restart apache2

      Ahora que Apache está configurado para presentar archivos de aplicación, vamos a configurar SimpleSAMLphp.

      Paso 3: Configurar SimpleSAMLphp

      A continuación, debemos realizar varios cambios en la configuración principal de SimpleSAMLphp ubicada en /var/simplesamlphp/config/config.php. Abra el archivo en su editor:

      • nano /var/simplesamlphp/config/config.php

      Configure la contraseña del administrador buscando la línea 'auth.adminpassword' y sustituyendo el valor predeterminado de 123 por una contraseña más segura. Esta contraseña le permite acceder a algunas de las páginas en su interfaz web de la instalación de SimpleSAMLphp:

      /var/simplesamlphp/config/config.php

      . . .
      'auth.adminpassword'        => 'your_admin_password',
      . . .
      

      A continuación, establezca un salt secreto, que debería ser una cadena de caracteres generada aleatoriamente. Algunas partes de SimpleSAMLphp utilizan este valor sal para crear hashes que ofrezcan seguridad a nivel criptográfico. Obtendrá errores si el salt no se cambia desde el valor predeterminado.

      Puede usar la función rand de OpenSSL para generar una cadena aleatoria que pueda usar como su cadena de valores sal secreta. Abra un nuevo terminal, conecte de nuevo con su servidor y ejecute el siguiente comando para generar esta cadena:

      La opción -base64 32 garantiza una cadena Base64 codificada de 32 caracteres.

      A continuación, en el archivo de configuración, localice la entrada 'secretsalt' y sustituya defaultsecretsalt por la cadena que generó:

      /var/simplesamlphp/config/config.php

      . . .
      'secretsalt' => 'your_generated_salt',
      . . .
      

      Luego establezca la información de contacto técnico. Esta información estará disponible en los metadatos generados y SimpleSAMLphp enviará informes de error generados automáticamente a la dirección de correo electrónico que especifique. Localice la siguiente sección:

      /var/simplesamlphp/config/config.php

      . . .
      'technicalcontact_name'     => 'Administrator',
      'technicalcontact_email'    => 'na@example.org',
      . . .
      

      Sustituya Administrator y na@example.org por los valores apropiados.

      A continuación, configure la zona horaria que desea usar. Localice esta sección:

      /var/simplesamlphp/config/config.php

      . . .
      'timezone' => null,
      . . .
      

      Sustituya null por una zona horaria preferida de esta lista de zonas horarias para PHP. Asegúrese de poner el valor entre comillas:

      /var/simplesamlphp/config/config.php

      . . .
      'timezone' => 'America/New_York',
      . . .
      

      Guarde y cierre el archivo. Con esto, debería poder acceder al sitio en su navegador visitando https://your_domain/simplesaml. Verá la siguiente pantalla en su navegador:

      Interfaz web de simplesaml

      Para asegurarse de que su instalación de PHP cumpla con todos los requisitos para que SimpleSAMLphp se ejecute sin problemas, seleccione la pestaña Configuration y haga clic en el enlace Login as administrator. A continuación utilice la contraseña del administrador que configuró en el archivo de configuración en el Paso 3.

      Una vez que inicie sesión, verá una lista de las extensiones necesarias y opcionales de PHP que utiliza SimpleSAMLphp. Compruebe que haya instalado todas las extensiones, a excepción de predis/predis:

      Todas las extensiones instaladas

      Si falta algún componente necesario, revise este tutorial e instale los componentes que faltan antes de continuar.

      También verá un enlace que dice Sanity check de su configuración de SimpleSAMLphp. Haga clic en este enlace para obtener una lista de los controles aplicados a su configuración para ver si se realizan correctamente.

      Ahora configuraremos una fuente de autenticación para SimpleSAMLphp.

      Paso 4: Configurar la fuente de autenticación

      Ahora que tenemos SimpleSAMLphp instalado y configurado, vamos a configurar una fuente de autenticación para poder autenticar a los usuarios. Usaremos una base de datos MySQL a fin de almacenar una lista de nombres de usuarios y contraseñas con los que se realizará la autenticación.

      Para comenzar, inicie sesión en la cuenta root de MySQL:

      Se le solicitará la contraseña root de la cuenta de MySQL. Facilítela para continuar.

      A continuación, cree una base de datos que funcionará como la fuente de autenticación. La llamaremos auth. Puede llamarla como prefiera:

      • CREATE DATABASE auth DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

      Ahora, crearemos un usuario de MySQL independiente para que funcione exclusivamente en nuestra base de datos auth. Desde un punto de vista de la administración y la seguridad, se recomienda crear bases de datos y cuentas de una función. Llamaremos a nuestro usuario authuser. Ejecute el siguiente comando para crear el usuario, configurar una contraseña y conceder a este acceso a nuestra base de datos auth. Recuerde elegir una contraseña segura para el usuario de su nueva base de datos:

      • GRANT ALL ON auth.* TO 'authuser'@'localhost' IDENTIFIED BY 'your_mysql_auth_user_password';

      Ahora, cree una tabla users que constará de dos campos: username y password. Para mayor seguridad, vamos a usar la función MySQL AES_ENCRYPT() para cifrar la cadena de contraseña de forma que no almacenemos las contraseñas en texto sin formato. Esta función cifra una cadena y muestra una cadena binaria.

      • CREATE TABLE auth.users(username VARCHAR(30), password VARBINARY(30));

      A continuación, inserte tres usuarios en la tabla recién creada. Aquí es donde usaremos la función AES_ENCRYPT() para cifrar los valores del campo de contraseña. Debe proporcionar una cadena que se utilice como clave de cifrado. Asegúrese de sustituir esta cadena con su propia cadena, que puede ser cualquier cadena que desee, siempre y cuando sea compleja.

      • INSERT INTO auth.users(username, password) VALUES
      • ('user1', AES_ENCRYPT('user1pass','your_secret_key')),
      • ('user2', AES_ENCRYPT('user2pass','your_secret_key')),
      • ('user3', AES_ENCRYPT('user3pass','your_secret_key'));

      Utilice la misma clave para cada usuario y asegúrese de recordar la clave para que pueda usarla de nuevo para crear usuarios adicionales en el futuro. También usará esta clave secreta en la configuración de SimpleSAMLphp para poder descifrar las contraseñas y compararlas con las que introduzca el usuario.

      Debemos eliminar los privilegios de modo que la instancia actual de MySQL registre los cambios recientes en el privilegio:

      Salga de la línea de comandos de MySQL escribiendo lo siguiente:

      Para habilitar la funcionalidad del proveedor de identidad en SimpleSAMLphp, debemos editar el archivo /var/simplesamlphp/config/config.php. Existen varias opciones disponibles pero, dado que esta guía se centra en el soporte SAML 2.0, queremos habilitar la opción enable.saml20-idp. Para hacerlo, abra /var/simplesamlphp/config/config.php y habilite el soporte SAML 2.0.

      • nano /var/simplesamlphp/config/config.php

      Localice esta sección del archivo y sustituya false por true:

      /var/simplesamlphp/config/config.php

      ...
      'enable.saml20-idp' => true,
      ...
      

      Guarde el archivo y cierre el editor.

      Ahora que tenemos habilitada la funcionalidad del proveedor de identidad, debemos indicar el módulo de autenticación que se utilizará. Debido a que disponemos de una tabla de usuarios en una base de datos de MySQL, usaremos el módulo de autenticación de SQL. Abra el archivo de configuración authsources:

      • nano /var/simplesamlphp/config/authsources.php

      Localice el siguiente bloque, que está eliminado:

      /var/simplesamlphp/config/authsources.php

      ...
          /*
          'example-sql' => array(
              'sqlauth:SQL',
              'dsn' => 'pgsql:host=sql.example.org;port=5432;dbname=simplesaml',
              'username' => 'simplesaml',
              'password' => 'secretpassword',
              'query' => 'SELECT uid, givenName, email, eduPersonPrincipalName FROM users WHERE uid = :username AND password = SHA2(CONCAT((SELECT salt FROM users WHERE uid = :username), :password),256);',
          ),
          */
      ...
      

      Este código define una conexión con la base de datos y una consulta que SimpleSAMLphp puede usar para buscar un usuario en una tabla de base de datos llamada users. Necesitamos habilitarla y cambiar la consulta para que busque un usuario desde nuestra tabla usando la función AES_DECRYPT() de MySQL. Necesitaremos proporcionar a la función AES_DECRYPT() la misma clave que usamos para cifrar las contraseñas en la consulta.

      Modifique la sección del archivo para especificar los datos de la conexión con la base de datos y la consulta:

      /var/simplesamlphp/config/authsources.php

      ...
          'example-sql' => array(
              'sqlauth:SQL',
              'dsn' => 'mysql:host=localhost;port=5432;dbname=auth',
              'username' => 'authuser',
              'password' => 'your_mysql_auth_user_password',
              'query' => 'SELECT username FROM users WHERE username = :username AND AES_DECRYPT(password,"your_secret_key") = :password',
          ),
      ...
      

      Asegúrese de colocar la clave secreta que especificó en lugar de your_secret_key.

      Guarde y cierre el archivo. Probaremos nuestro proveedor de identidad.

      Paso 5: Probar el proveedor de identidad con la Demo SAML 2.0 SP

      Puede probar la fuente de autenticación que acaba de configurar navegando a la pestaña Authentication y haciendo clic en el enlace Test configured authentication sources (Probar fuentes de autenticación configuradas). Se le presentará una lista de las fuentes de autenticación ya configuradas.

      La lista de fuentes de autenticación configuradas

      Haga clic en example-sql, ya que este es el proveedor que configuró en el paso anterior. Se mostrará una solicitud para introducir un nombre de usuario y contraseña. Introduzca cualquiera de las combinaciones de usuario y contraseña de prueba que insertó en la tabla de usuarios de MySQL. Pruebe user1 con la contraseña user1pass.

      Con un intento correcto, se le presentará la página SAML 2.0 SP Demo Example:

      La página de Demo correcta

      Si no puede iniciar sesión y sabe que la contraseña es correcta, asegúrese de usar la misma clave con la función AES_ENCRYPT() cuando creó el usuario, y con la función AES_DECRYPT() cuando buscó el usuario.

      Ahora puede integrar SimpleSAMLphp con sus propias aplicaciones siguiendo la documentación de la API de SimpleSAMLphp.

      Conclusión

      Ahora tiene la aplicación SimpleSAMLphp debidamente instalada y configurada en su VPS Ubuntu 18.04. SimpleSAMLphp también permite personalizar ampliamente la interfaz de usuario con temas. Puede consultar sus documentos sobre temas para obtener más información.



      Source link

      Cómo configurar la autenticación de contraseña con Apache en Ubuntu 18.04 [Quickstart]


      Introducción

      En este tutorial, verá los recursos de protección con contraseña en un servidor web de Apache ejecutándose en Ubuntu 18.04. Completar estos pasos le proporcionará una seguridad adicional para su servidor, de modo que se le prohíba a usuarios no autorizados acceder a determinadas partes de su página.

      Para obtener una versión más detallada de este tutorial, con explicaciones más detalladas de cada paso, consulte Cómo configurar la autenticación con contraseña con Apache en Ubuntu 18.04.

      Requisitos previos

      Para completar este tutorial, necesitará acceso a lo siguiente en un servidor de Ubuntu 18.04:

      Paso 1: Instalar el paquete de utilidades de Apache

      Instalaremos una utilidad llamada htpasswd, que forma parte del paquete apache2-utils para administrar los nombres de usuarios y las contraseñas con acceso a contenido restringido.

      • sudo apt update
      • sudo apt install apache2-utils

      Paso 2: Crear el archivo de contraseña

      Crearemos el primer usuario de la siguiente manera (sustituya `first_username por el nombre de usuario que elija):

      • sudo htpasswd -c /etc/apache2/.htpasswd first_username

      Se le solicitará que proporcione y confirme una contraseña para el usuario.

      Deje el argumento -c para cualquier usuario adicional que desee añadir, de manera de no tener que sobreescribir el archivo:

      • sudo htpasswd /etc/apache2/.htpasswd another_user

      Paso 3: Configurar la autenticación con contraseña de Apache

      En este paso, debemos configurar Apache para que verifique este archivo antes de divulgar nuestro contenido protegido. Haremos esto usando el archivo de host virtual del sitio, pero existe otra opción detallada en el tutorial más extenso si es que no tiene acceso o prefiere usar archivos .htaccess en su lugar.

      Abra el archivo de host virtual al que quiera añadir una restricción con un editor de texto como nano:

      • sudo nano /etc/apache2/sites-enabled/default-ssl.conf

      La autenticación se realiza por directorio. En nuestro ejemplo, restringiremos el root de todo el documento, pero puede modificar este listado para apuntar solo a un directorio específico dentro del espacio web.

      En este paso, añada las siguientes líneas resaltadas en su archivo:

      /etc/apache2/sites-enabled/default-ssl.conf

      <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
      
        <Directory "/var/www/html">
            AuthType Basic
            AuthName "Restricted Content"
            AuthUserFile /etc/apache2/.htpasswd
            Require valid-user
        </Directory>
      </VirtualHost>
      

      Verifique la configuración con el siguiente comando:

      Puede reiniciar el servidor para implementar su política de contraseña y luego verificar el estado de su servidor.

      • sudo systemctl restart apache2
      • sudo systemctl status apache2

      Paso 4: Confirmar la autenticación con contraseña

      Para confirmar que su contenido esté protegido, intente acceder a su contenido restringido desde un navegador web. Debería aparecer una solicitud de ingreso de nombre de usuario y contraseña:

      Apache2 password prompt

      Tutoriales relacionados

      A continuación, se ofrecen los enlaces a más guías detalladas relacionadas con este tutorial:



      Source link

      Cómo configurar la autenticación con contraseña con Apache en Ubuntu 18.04


      Introducción

      Al tener rol de administrador web, puede resultarle útil restringir el acceso de los visitantes a algunas partes de un sitio web, ya sea de forma temporal o permanente. Aunque puede ser que las aplicaciones web proporcionen sus propios métodos de autenticación y autorización, también puede confiar en el servidor web en sí a la hora de restringir el acceso si los otros no son adecuados o no están disponibles.

      Este tutorial te mostrará los recursos de protección de contraseña en un servidor web de Apache que se ejecuta en Ubuntu 18.04 a fin de brindarle más seguridad a tu servidor.

      Requisitos previos

      Para completar este tutorial, necesitará acceso a un servidor de Ubuntu 18.04.

      Además, necesitará la siguiente configuración para poder comenzar:

      Cuando todo esto esté en orden, inicie sesión en su servidor como usuario sudo y continúe con lo siguiente.

      Paso 1: Instalar el paquete de servicios de Apache

      Comencemos por actualizar nuestro servidor e instalar un paquete que necesitaremos. Para completar este tutorial, usaremos una herramienta llamada htpasswd, parte del paquete de apache2-utils, para crear el archivo y administrar el nombre de usuario y las contraseñas necesarias para acceder a contenido restringido.

      • sudo apt update
      • sudo apt install apache2-utils

      Una vez instalada, tenemos acceso al comando htpasswd.

      Paso 2: Crear el archivo de contraseña

      El comando htpasswd nos permitirá crear un archivo de contraseña que Apache puede usar para autenticar usuarios. Crearemos un archivo oculto para este propósito, llamado .htpasswd dentro de nuestro directorio de configuración /etc/apache2.

      La primera vez que usemos esta utilidad, debemos añadir la opción -c para crear el _passwdfile _especificado. Especificamos un nombre de usuario (sammy en este ejemplo) al final del comando para crear una entrada nueva dentro del archivo:

      • sudo htpasswd -c /etc/apache2/.htpasswd sammy

      Se le solicitará que proporcione y confirme una contraseña para el usuario.

      Deje el argumento -c para cualquier usuario adicional que desee añadir, de manera de no tener que sobreescribir el archivo:

      • sudo htpasswd /etc/apache2/.htpasswd another_user

      Si vemos el contenido del archivo, podemos ver el nombre de usuario y la contraseña cifrada de cada registro:

      • cat /etc/apache2/.htpasswd

      Output

      sammy:$apr1$.0CAabqX$rb8lueIORA/p8UzGPYtGs/ another_user:$apr1$fqH7UG8a$SrUxurp/Atfq6j7GL/VEC1

      Ahora, tenemos nuestros usuarios y contraseñas en un formato que Apache puede leer.

      Paso 3: Configurar la autenticación de contraseña de Apache

      En este paso, debemos configurar Apache para que verifique este archivo antes de divulgar nuestro contenido protegido. Podemos hacerlo de una de estas dos formas: ya sea directamente en el archivo de host virtual de un sitio o mediante la colocación de archivos .htaccess en los directorios que requieren restricción. Generalmente, es mejor usar el archivo host virtual, pero si necesita que los usuarios no root puedan administrar sus propias restricciones de acceso, verificar las restricciones de control de versiones junto con el sitio web, o contar con una aplicación web que use archivos .htaccess ya para otros fines, consulte la segunda opción.

      Seleccione la opción que mejor se adapte a sus necesidades.

      Opción 1: Configurar el control de acceso dentro de la definición de host virtual (Preferida)

      La primera opción es editar la configuración de Apache y añadir la protección de contraseña al archivo de host virtual. Esto, generalmente, brindará un mejor desempeño porque evita el esfuerzo de leer archivos de configuración distribuida. Esta opción requiere acceso a la configuración, que no siempre está disponible, pero si tiene acceso, es la opción recomendada.

      Comience por abrir el archivo de host virtual al que le desea añadir una restricción. Para nuestro ejemplo, usaremos el archivo default-ssl.conf que contiene el host virtual predeterminado instalado a través del paquete de apache de Ubuntu. Abra el archivo con un editor de texto de línea de comandos como nano:

      • sudo nano /etc/apache2/sites-enabled/default-ssl.conf

      Dentro de este, con los comentarios vaciados, el archivo debería verse parecido a esto:

      /etc/apache2/sites-enabled/default-ssl.conf

      <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      La autenticación se realiza por directorio. Para configurar la autenticación, necesitará apuntar al directorio que desea restringir con un bloque <Directory ___>. En nuestro ejemplo, restringiremos el root de todo el documento, pero puede modificar este registro de modo de apuntar solo a un directorio específico dentro del espacio web:

      /etc/apache2/sites-enabled/default-ssl.conf

      <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
      
        <Directory "/var/www/html">
        </Directory>
      </VirtualHost>
      

      Dentro de este bloque de directorio, especificaremos que configuraremos la autenticación Basic. Para el AuthName, seleccione un nombre de territorio que el usuario verá cuando se le solicite que ingrese las credenciales. Utilice la directiva AuthUserFile para guiar a Apache al archivo de contraseña que creamos. Por último, cree un requisito para que solo un valid-user pueda tener acceso a este recurso, lo que significa que podrá ingresar quien sea capaz que verificar su identidad con una contraseña:

      /etc/apache2/sites-enabled/default-ssl.conf

      <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
      
        <Directory "/var/www/html">
            AuthType Basic
            AuthName "Restricted Content"
            AuthUserFile /etc/apache2/.htpasswd
            Require valid-user
        </Directory>
      </VirtualHost>
      

      Guarde y cierre el archivo cuando termine. Si utiliza nano, puede hacerlo presionando CTRL+X seguido de Y y ENTER.

      Antes de reiniciar el servidor web, puede verificar la configuración con el siguiente comando:

      • sudo apache2ctl configtest

      Si todo está comprobado y el resultado es Syntax OK, puede reiniciar el servidor para implementar su política de contraseña. Debido a que systemctl no muestra el resultado de todos los comandos de gestión de servicio, usaremos el status para asegurarnos de que el servidor esté en ejecución:

      • sudo systemctl restart apache2
      • sudo systemctl status apache2

      Ahora, el directorio que especificó debe estar protegido con contraseña.

      Opción 2: Configurar el control de acceso con archivos .htaccess

      Apache puede usar archivos .htaccess para que determinados elementos de configuración se puedan establecer dentro de un directorio de contenido. Debido a que Apache debe volver a leer estos archivos por cada solicitud relacionada con el directorio, lo cual puede tener un efecto negativo en el desempeño, la Opción 1 es la preferida, pero si ya usa el archivo .htaccess o necesita permitir que los usuarios no root puedan administrar restricciones, convienen los archivos .htaccess.

      Para habilitar la protección con contraseña usando archivos .htaccess, abra el archivo de configuración principal de Apache con un editor de texto de línea de comandos como nano:

      • sudo nano /etc/apache2/apache2.conf

      Encuentre el bloque <Directory> del directorio /var/www que contiene la root del documento. Active el procesamiento de .htaccess cambiando la directiva AllowOverride dentro de ese bloque de None a All:

      /etc/apache2/apache2.conf

      . . .
      
      <Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
      </Directory>
      
      . . .
      

      Guarde y cierre el archivo cuando termine. Si utiliza nano, puede hacerlo presionando CTRL+X seguido de Y y ENTER.

      A continuación, debemos añadir un archivo .htaccess al directorio que deseamos restringir. En nuestra prueba, restringiremos la root de todo el documento (todo el sitio web), que tiene base en /var/www/html, pero usted puede colocar este archivo en cualquier directorio en que desee restringir el acceso:

      • sudo nano /var/www/html/.htaccess

      Dentro de este archivo, especifique que deseamos establecer la autenticación Basic. Para el AuthName, seleccione un nombre de territorio que el usuario verá cuando se le solicite que ingrese las credenciales. Utilice la directiva AuthUserFile para guiar a Apache al archivo de contraseña que creamos. Por último, solicitaremos que este recurso sea accesible para un valid-user, lo que significa que podrá ingresar quien sea capaz de verificar su identidad con una contraseña:

      /var/www/html/.htaccess

      AuthType Basic
      AuthName "Restricted Content"
      AuthUserFile /etc/apache2/.htpasswd
      Require valid-user
      

      Guarde y cierre el archivo. Reinicie el servidor web para que proteja con contraseña todo el contenido que se encuentre en o debajo del directorio con el archivo .htaccess y utilice systemctl status para verificar el éxito del reinicio:

      • sudo systemctl restart apache2
      • sudo systemctl status apache2

      El directorio que especificó debe estar protegido con contraseña.

      Paso 4: Confirmar la autenticación con contraseña

      Para confirmar que su contenido esté protegido, intente acceder a su contenido restringido desde un navegador web. Debería aparecer una ventana para que ingrese nombre de usuario y contraseña, que luce como esta:

      Apache2 password prompt

      Si escribe las credenciales correctas, se le permitirá acceder al contenido. Si escribe credenciales incorrectas o presiona “Cancel”, verá la página de error “Unauthorized”:

      Apache2 unauthorized error

      Conclusión

      ¡Felicitaciones! Si siguió estas instrucciones, configuró la autenticación básica de su sitio.

      Se puede hacer mucho más con la configuración de Apache y .htaccess. Para obtener más información sobre la flexibilidad y el poder disponibles en la configuración de Apache, consulte uno de los siguientes tutoriales:



      Source link