One place for hosting & domains

      паролю

      Настройка аутентификации по паролю для Apache в Ubuntu 18.04 [Краткое руководство]


      Введение

      В этом обучающем руководстве мы познакомимся с защищенными паролем активами на веб-сервере Apache под управлением Ubuntu 18.04. После выполнения этих действий вы сможете обеспечить дополнительную безопасность для вашего сервера, чтобы неавторизованные пользователи не смогли получить доступ к некоторым частям вашей страницы.

      Более подробную версию настоящего обучающего руководства с более подробным описанием каждого действия см. в статье Настройка аутентификации по паролю для Apache в Ubuntu 18.04.

      Предварительные требования

      Для выполнения этого обучающего руководства вам потребуется доступ к следующим компонентам на сервере Ubuntu 18.04:

      • Пользователь sudo на сервере

      • Веб-сервер Apache2

      • Защищенный с помощью SSL сайт

      Шаг 1 — Установка пакета утилит Apache

      Мы установим утилиту с названием htpasswd, которая является частью пакета apache2-utils, для управления именами пользователя и паролями для доступа к ограниченному контенту.

      • sudo apt-get update
      • sudo apt-get install apache2-utils

      Шаг 2 — Создание файла с паролями

      Мы создадим первого пользователя следующим образом (замените `first_username на имя пользователя по вашему выбору):

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

      Вам нужно будет предоставить и подтвердить пароль для пользователя.

      Оставьте аргумент -c для любых дополнительных пользователей, которых вы захотите добавить, чтобы избежать необходимости перезаписывать файл:

      • sudo htpasswd /etc/apache2/.htpasswd another_user

      Шаг 3 — Настройка аутентификации по паролю для Apache

      На этом шаге вам нужно настроить Apache для проверки этого файла перед предоставлением вашего защищенного контента. Для этого мы воспользуемся файлом виртуального хоста на сайте, но есть другая возможность, описанная в подробном обучающем руководстве, если у вас нет доступа к этому файлу или вы предпочитаете использовать файл .htaccess.

      Откройте файл виртуального хоста, в который вы хотите добавить ограничение, в текстовом редакторе, например nano:

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

      Аутентификация выполняется для отдельных директорий. В нашем примере мы ограничим всю корневую директорию документов, но вы можете изменить этот список, указав конкретную директорию внутри вашего веб-пространства.

      На этом шаге добавьте в файл следующие выделенные строки:

      /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>
      

      Проверьте конфигурацию с помощью следующей команды:

      Вы можете перезапустить сервер для вступления вашей политики использования пароля в силу, а затем проверить состояние вашего сервера.

      • sudo systemctl restart apache2
      • sudo systemctl status apache2

      Шаг 4 — Подтверждение аутентификации по паролю

      Чтобы подтвердить, что ваш контент защищен, попробуйте получить доступ к ограниченному контенту в браузере. Вы должны увидеть запрос имени пользователя и пароля:

      Запрос пароля Apache2

      Другие обучающие руководства

      Ниже представлены ссылки на более подробные материалы, связанные с настоящим обучающим руководством:



      Source link

      Настройка аутентификации по паролю для Apache в Ubuntu 18.04


      Введение

      Вам как веб-администратору может быть полезна возможность ограничения доступа посетителей к отдельным частям веб-сайта, как временного, так и постоянного. Хотя веб-приложения могут иметь собственные методы аутентификации и авторизации, вы можете использовать непосредственно сам веб-сервер для ограничения доступа, если имеющиеся методы окажутся для вас бесполезными или недоступными.

      В этом обучающем руководстве вы познакомитесь с защитой по паролю для активов на веб-сервере Apache под управлением Ubuntu 18.04 для обеспечения дополнительной безопасности.

      Предварительные требования

      Для выполнения этого обучающего руководства вам потребуется доступ к серверу Ubuntu 18.04.

      Кроме того, чтобы начать работу, вам потребуется следующее:

      • Пользователь sudo на сервере: вы можете создать пользователя с привилегиями sudo, воспользовавшись инструкциями руководства по начальной настройке сервера Ubuntu 18.04.

      • Веб-сервер Apache2: если вы еще не настроили его, воспользуйтесь руководством Установка веб-сервера Apache в Ubuntu 18.04.

      • Защищенный с помощью SSL сайт: порядок настройки зависит от того, есть ли у вашего сайта доменное имя.

        • Если у вас есть доменное имя, вы можете обеспечить защиту вашего сайта с помощью Let’s Encrypt, предоставляющего бесплатные доверенные сертификаты. Воспользуйтесь нашим Руководством по Let’s Encrypt для Apache для выполнения настройки.
        • Если у вас нет домена, и вы просто используете данную конфигурацию для тестирования или в личных целях, вы можете использовать самоподписанный сертификат. Данный способ обеспечивает аналогичный тип шифрования, но без подтверждения домена. Следуйте указаниям руководства по настройке самоподписанного сертификата SSL для Apache, чтобы выполнить настройку.

      Когда все перечисленное выше будет в вашем распоряжении, выполните вход на ваш сервер с помощью пользователя sudo и перейдите к следующим действиям.

      Шаг 1 — Установка пакета утилит Apache

      Для начала мы обновим сервер и установим пакет, который нам потребуется. В этом обучающем руководстве мы будем использовать утилиту с именем htpasswd из пакета apache2-utils для создания файла и управления именем пользователя и паролями, которые будут использоваться для доступа к ограниченному контенту.

      • sudo apt-get update
      • sudo apt-get install apache2-utils

      После установки мы получим доступ к команде htpasswd.

      Шаг 2 — Создание файла с паролями

      Команда htpasswd позволяет нам создать файл с паролем, который Apache может использовать для аутентификации пользователей. Для этой цели мы создадим скрытый файл с именем .htpasswd в директории конфигурации /etc/apache2.

      При первом использовании этой утилиты нам потребуется добавить параметр -c для создания заданного файла с паролями passwdfile. Мы зададим имя пользователя (sammy в данном примере) в конце команды, чтобы создать новую запись в этом файле:

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

      Вам нужно будет предоставить и подтвердить пароль для пользователя.

      Оставьте аргумент -c для любых дополнительных пользователей, которых вы захотите добавить, чтобы избежать необходимости перезаписывать файл:

      • sudo htpasswd /etc/apache2/.htpasswd another_user

      Если мы посмотрим на содержимое файла, то сможем увидеть имя пользователя и зашифрованный пароль для каждой записи:

      • cat /etc/apache2/.htpasswd

      Output

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

      Теперь у нас есть пользователи и пароли в формате, который сможет прочитать Apache.

      Шаг 3 — Настройка аутентификации по паролю для Apache

      На этом шаге вам нужно настроить Apache для проверки этого файла перед предоставлением вашего защищенного контента. Мы можем сделать это двумя способами: либо напрямую в файле виртуального хоста сайта или с помощью размещения файлов .htaccess в директориях, доступ к которым будет ограничен. Обычно рекомендуется использовать файл виртуального хоста, но если вы хотите разрешить пользователям без прав root управлять собственными ограничениями доступа, проверьте ограничения в системе контроля версий наряду с веб-сайтом, или если вы используете веб-приложение с файлами .htaccess, которые уже используются в других целях, познакомьтесь со вторым способом.

      Выберите, способ, который лучше всего подходит для ваших нужд.

      Способ 1. Настройка контроля доступа в определении виртуального хоста (рекомендуется)

      Первый способ подразумевает изменение конфигурации Apache и добавление защиты по паролю в файл виртуального хоста. Это, как правило, дает лучшие результаты, поскольку в этом случае вам не приходится считывать распределенные файлы конфигурации. Этот способ требует доступа к конфигурации, что не всегда доступно, но если у вас есть доступ, рекомендуется использовать именно его.

      Начнем с открытия файла виртуального хоста, в который вы хотите добавить ограничение. Для нашего примера мы будем использовать файл default-ssl.conf, который хранит виртуальный хост по умолчанию, установленный с пакетом apache для Ubuntu. Откройте файл с помощью текстового редактора командной строки, например nano:

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

      Внутри, после обрезки комментариев, файл должен выглядеть примерно следующим образом:

      /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>
      

      Аутентификация выполняется для отдельных директорий. Для настройки аутентификации вам потребуется указать директорию, для которой вы хотите установить ограничение, с помощью блока <Directory __>. В нашем примере мы ограничим всю корневую директорию документов, но вы можете изменить этот список, указав конкретную директорию внутри вашего веб-пространства:

      /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>
      

      В этом блоке директории укажите, что мы настраиваем аутентификацию Basic (базовую). Для AuthName укажите имя области, которое будет отображаться пользователю при запросе учетных данных. Используйте директиву AuthUserFile для указания Apache на созданный нами файл пароля. Наконец, создайте требование о том, что только действительный пользователь (valid-user) может получить доступ к этому ресурсу, что значит, что любой пользователь, подтвердивший свою личность паролем, получит доступ:

      /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>
      

      Сохраните файл и закройте его после завершения. Если вы используете nano, вы можете сделать это, нажав CTRL+X, затем Y и ENTER.

      Перед перезапуском веб-сервера вы можете проверить конфигурацию с помощью следующей команды:

      • sudo apache2ctl configtest

      Если все в порядке и вы получили вывод Syntax OK, вы можете перезапустить сервер для выполнения политики по паролю. Поскольку systemctl не отображает результаты всех команд управления службами, мы используем status, чтобы убедиться, что сервер запущен:

      • sudo systemctl restart apache2
      • sudo systemctl status apache2

      Теперь заданная вами директория должна быть защищена паролем.

      Способ 2. Настройка контроля доступа с помощью файлов .htaccess

      Apache может использовать файлы .htaccess, чтобы разрешить настраивать определенные элементы конфигурации внутри директории контента. Поскольку Apache должен повторно считывать эти файлы в каждом запросе, который затрагивает директорию, что может негативно повлиять на производительность, рекомендуется использовать способ 1, но если вы уже используете файл .htaccess или вам нужно разрешить пользователям без прав root управлять ограничениями, файлы .htaccess могут быть полезны.

      Чтобы обеспечить защиту по паролю с помощью файлов .htaccess, откройте главный файл конфигурации Apache в текстовом редакторе командной строки, например nano:

      • sudo nano /etc/apache2/apache2.conf

      Найдите блок <Directory> для директории /var/www, где находится корневая директория документов. Запросите обработку .htaccess, изменив значение директивы AllowOverride внутри этого блока с None на All:

      /etc/apache2/apache2.conf

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

      Сохраните файл и закройте его после завершения. Если вы используете nano, вы можете сделать это, нажав CTRL+X, затем Y и ENTER.

      Далее нам потребуется добавить файл .htaccess в директорию, для которой мы хотим ограничить доступ. В нашей демонстрационной версии мы ограничим доступ ко всей корневой директории (всему веб-сайту), т. е. /var/www/html, но вы можете разместить этот файл в любой директории, для которой вы хотите ограничить доступ:

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

      В этом файле укажите, что мы хотим настроить базовую аутентификацию (Basic). Для AuthName укажите имя области, которое будет отображаться пользователю при запросе учетных данных. Используйте директиву AuthUserFile для указания Apache на созданный нами файл пароля. Наконец, нам потребуется действительный пользователь (valid-user) для доступа к этому ресурсу, что означает, что любой пользователь, подтвердивший свою личность с помощью пароля, получит доступ:

      /var/www/html/.htaccess

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

      Сохраните и закройте файл. Перезапустите веб-сервер для защиты по паролю всего контента в директории или во вложенных директориях с помощью файла .htaccess и использования systemctl status для проверки успешного перезапуска:

      • sudo systemctl restart apache2
      • sudo systemctl status apache2

      Теперь заданная вами директория должна быть защищена паролем.

      Шаг 4 — Подтверждение аутентификации по паролю

      Чтобы подтвердить, что ваш контент защищен, попробуйте получить доступ к ограниченному содержанию в браузере. Вы должны увидеть запрос имени пользователя и пароля, который выглядит следующим образом:

      Запрос пароля Apache2

      Если вы введете правильные учетные данные, вы сможете получить доступ к контенту. Если вы введете неверные учетные данные или нажмете Cancel (Отмена), вы увидите страницу ошибки Unauthorized (Неавторизованный пользователь):

      Ошибка отказа доступа Apache2

      Заключение

      Поздравляем! После выполнения описанных выше действий вы настроили базовую аутентификацию для вашего сайта.

      Существует множество вещей, которые вы можете сделать с конфигурацией Apache и .htaccess. Чтобы узнать больше о гибкости и мощности, доступной в конфигурации Apache, воспользуйтесь одним из следующих обучающих руководств:



      Source link