10+ вставок кода для htaccess

Apache Htpasswd protection using htaccess

You can also edit the file on your server to protect the contents. It is the easy method and you can create .htaccess file inside sub-directories too! Which means that you can create a new .htaccess file inside a specific directory to protect that directory with basic authentication.

Execute the following command to open the file in the edit mode. If it is not already present, the command will create a new file.

$ sudo nano /var/www/html/protected/.htaccess

Do not forget to replace the path of the directory you want to protect. Once the file is in edit mode, Add the following code at the top of the file.

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

Once done, press CTRL+X followed by Y followed by the Enter key to save the file. Once done, try to access the protected directory or a website in the browser. It will ask you for username and password before the contents are displayed in the browser.

So, this is how you can protect the your website or a specific directory using Htpasswd and Htaccess.

Conclusion: Every application needs some kind of protection from anonymous users. With Htpasswd, you can protect specific directories and you can limit specific directories to specific users only. It is a good way to provide limited access to specific users. Htpasswd is fairly easy to install, create and configure. Let us know if you need help from us by mentioning the problem you are facing or a query you have in the comment section given below. We will reply you with the solution or an answer. If you are InterServer customer, please reach our support staff for further help!

Усиление защищенности Basic/Digest авторизации

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

Будем использовать возможности wsgi. Конфигурацию хоста в части авторизации настраиваем так

<Directory "c:/Apache24/htdocs/test/digest">
  AuthType Digest
  AuthName "orivate"
  Require valid-user
  #AuthUserFile "c:/.ht_digest"
  AuthDigestProvider wsgi
  WSGIAuthUserScript "c:/Apache24/cgi-bin/auth.wsgi"
</Directory>

Теперь прохождением авторизации будет управлять скрипт auth.wsgi. Скрипт должен быть примерно такого содержания

import md5
def get_realm_hash(environ, user, realm):
    value = md5.new()
    value.update('%s%s%s' % (user, realm, 'qwe123'))
    hash = value.hexdigest()

    # теперь легко логировать попытки авторизации
    #f=open('wsgi_auth.log','a')
    #f.write(str(environ)+'\t'+user+'\t'+realm+'\r')
    #f.close()

    if user == 'admin'
        return hash
    return None

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

Что касается защиты пароля от взлома …

Настройка файла .htaccess

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

Как узнать полный путь к файлу?

Полный путь к файлу, можно узнать с помощью функции phpinfo(). Результатом ее выполнения будет подробная таблица настроек веб-сервера.

Создайте файл info.php, с содержимым <?php phpinfo(); ?>, в директории CMS. Запустите файл через браузер. В полученной таблице, найдите переменную SCRIPT_FILENAME, которая содержит полный путь к файлу.

После получения нужных данных, обязательно удалите файл info.php, чтобы информация о настройках веб-сервера не стала общедоступной.

Рис 1. Полный путь к файлу. Результат выполнения функции phpinfo()

Скопируйте полученный путь, замените в нем имя файла, info.php на .htpasswd, и поместите его в директиву AuthUserFile.

AuthUserFile Z:/home/localhost/www/scripts/CMS/.htpasswd

Таким образом, готовый файл .htaccess, будет содержать следующие директивы:

AuthName "Authentication" 
AuthType Basic
AuthUserFile Z:/home/localhost/www/scripts/CMS/.htpasswd
require valid-user

Настройка авторизации Apache

Итак, необходимый файл паролей готов. Теперь нужно настроить Apache для проверки этого файла перед обслуживанием закрытого контента. Это можно сделать двумя способами.

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

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

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

Настройка авторизации через виртуальный хост

Откройте файл виртуального хоста сайта, доступ к которому нужно ограничить. В данном примере используется стандартный файл 000-default.conf, содержащий виртуальный хост по умолчанию.

Раскомментированный файл выглядит так:

Авторизация в Apache настраивается по каталогам. Для этого найдите раздел каталога, к которому нужно ограничить доступ, в блоке <Directory ___>. В данном примере нужно ограничить доступ к document root (при необходимости укажите другой каталог):

В блоке этого каталога нужно указать тип авторизации, в данном случае – Basic. В параметре AuthName укажите имя области данных, которое будет отображаться при запросе. Используйте директиву AuthUserFile, чтобы указать созданный ранее файл паролей. Установите значение valid-user для директивы Require, чтобы разрешить доступ к контенту только тем пользователям, которые могут пройти авторизацию.

Сохраните и закройте файл. Перезапустите Apache, чтобы обновить конфигурации.

Теперь доступ к контенту, находящемуся в этом каталоге, защищён паролем.

Настройка авторизации при помощи файла .htaccess

Для начала нужно настроить Apache для поддержки файлов .htaccess. Откройте конфигурации Apache:

Найдите блок <Directory> каталога /var/www (как вы понимаете, это настройки каталога document root). Включите поддержку файлов .htaccess, заменив значение директивы AllowOverride на All.

Сохраните и закройте файл.

Затем нужно добавить файл .htaccess в каталог, доступ к которому нужно ограничить. Опять же, в примере доступ будет ограничен к каталогу document root, /var/www/html (то есть ко всему сайту). Чтобы ограничить доступ к другому каталогу, внесите в код соответствующие поправки.

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

Сохраните и закройте файл. Перезапустите веб-сервер, чтобы обновить его настройки.

ЗАЩИТА ОТ ХОТЛИНКОВ

Хотлинк (hotlink)

SetEnvIfNoCase Referer «^http://www.test.com» local_ref=1
SetEnvIfNoCase Referer «^http://test.com» local_ref=1
<FilesMatch «.(gif|jpg)>
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$
RewriteRule .*\.(gif|jpg)$ —
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !.*/foo-with-gif\.html$
RewriteRule ^inlined-in-foo\.(gif|jpg)$ —

RewriteEngine On
#Replace ?mysite\.com/ with your blog url
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your «don’t hotlink» image url
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg

Create the Password File

We now have access to the command. We can use this to create a password file that Apache can use to authenticate users. We will create a hidden file for this purpose called within our configuration directory.

The first time we use this utility, we need to add the option to create the specified file. We specify a username ( in this example) at the end of the command to create a new entry within the file:

You will be asked to supply and confirm a password for the user.

Leave out the argument for any additional users you wish to add:

If we view the contents of the file, we can see the username and the encrypted password for each record:

Установка phpMyAdmin

Использование команды apt-get — самый простой способ установки phpMyAdmin.

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

  • Выбрать Apache2 в качестве веб-сервера;
  • Ответить YES на вопрос, настроить ли базу данных для phpmyadmin с помощью dbconfig-common;
  • Ввести пароль администратора MySQL;
  • Установить пароль для входа в phpmyadmin.

По завершении установки внесите phpMyAdmin в конфигурации Apache.

Внесите конфигурационный файл phpMyAdmin в файл:

Перезапустите Apache:

Теперь можно открыть phpMyAdmin, введя ipадрес/phpmyadmin, что выведет страницу приветствия phpMyAdmin.

Создание файла . htpasswd

Переходим к созданию файла с паролями . htpasswd, для этого воспользуемся утилитой htpasswd.exe. Работать с которой нужно через командную строку. Далее рассмотрены примеры работы с утилитой:

• Создать новый файл с паролями, назначить ему имя .htpasswd, задать шифрование паролей по алгоритму MD5 и добавить в него логин admin:

htpasswd -cm .htpasswd admin

-cm — ключи утилиты:

-с – указывает, что необходимо создать новый файл

-m –шифрует пароли по алгоритму MD5

.htpasswd – имя файла с паролями

admin – логин

Рис. 2. Создание нового файла с паролями, утилитой htpasswd.exe

• Добавить в уже существующий файл с паролями нового пользователя. Для этого нужно в команде указать один ключ –m, ключ –c, опустить.

htpasswd -m .htpasswd user

Рис. 3. Добавление в уже существующий файл с паролями нового пользователя, утилитой htpasswd.exe.

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

htpasswd -m .htpasswd user

Рис 4. Изменение пароля для существующего пользователя, с помощью утилиты htpasswd.exe.

После создания файла с паролями, поместите его в директорию, путь к которой указан в директиве AuthUserFile файла .htaccess. (в нашем случае в папку CMS)

Conclusion

Congratulations! If you’ve followed along, you’ve now set up basic authentication for your site. Apache configuration and .htaccess can do much more than basic authentication, however. To find out more about the flexibility and power available in Apache configuration, try one of these tutorials:

  • For a better understanding of the with the main configuration file, see How To Configure the Apache Web Server on an Ubuntu or Debian VPS

  • Learn more about the virtual host files in How To Set Up Apache Virtual Hosts on Ubuntu 16.04

  • Learn about rewriting URLs, customizing error pages like the “Unauthorized” message above, or including common elements on all your pages with Server Side Includes in our guide How To Use the .htaccess File .

Htpasswd Generator Formats

Apache Servers recognize 5 formats for representing a password hash in the text file usually named .

BCRYPT
Use bcrypt encryption for passwords. This is currently considered to be very secure.
CRYPT
crypt(3) is the library function which is used to compute a password hash. Technically the name is a misnomer since it is actually a cryptographic hash function. The output of the function is not merely the hash: it is a text string which also encodes the salt and identifies the hash algorithm used. Apache uses the traditional Unix crypt function with a randomly-generated 32-bit salt (only 12 bits used) and the first 8 characters of the password.
MD5
MD5 is one in a series of message digest algorithms designed by Professor Ronald Rivest of MIT. The 128-bit (16-byte) MD5 hashes (also termed message digests) are typically represented as a sequence of 32 hexadecimal digits. In .htpasswd files the hash is: + an Apache-specific algorithm using an iterated (1,000 times) MD5 digest of various combinations of a random 32-bit salt and the password.
SHA-1
The SHA hash functions are a set of cryptographic hash functions designed by the National Security Agency (NSA) and published by the NIST as a U.S. Federal Information Processing Standard. SHA-1 produces a 160-bit digest from a message with a maximum length of (264 — 1) bits. SHA-1 is the most widely employed of the SHA family. It forms part of several widely used security applications and protocols, including TLS and SSL, PGP, SSH, S/MIME, and IPsec. In .htpasswd files the hash is as follows: + Base64-encoded SHA-1 digest of the password.
PLAIN TEXT
Unencrypted for Windows, BEOS, & Netware only.

Security Info

Web password files such as those managed by htpasswd should not be within the Web server’s URI space — that is, they should not be fetchable with a browser.

The SHA encryption format does not use salting: for a given password, there is only one encrypted representation. The crypt() and MD5 formats permute the representation by prepending a random salt string, to make dictionary attacks against the passwords more difficult.

Безопасность

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

Подбор пароля основан на том, что basic и digest авторизация в чистом виде не контролируют количество неудачных попыток авторизации. Поэтому достаточно просто создать программу, автоматически генерирующую запросы доступа в защищенную с подставлением различных паролей (из заранее подготовленного словаря) до тех пор пока один из паролей не подойдет

Другой способ — взлом пароля реализуется в два этапа. Сначала необходимо получить информацию о логине-пароле пользователя (из данных сохраненных браузером клиента или перехваченного трафика). Затем из полученной информации извлекается пароль. Если для basic-авторизации это труда не составляет, то с digest-авторизацией сложнее. Но вполне осуществимо. Здесь применяется программное обеспечение использующее различные подходы:

  • прямой подбор паролей из словаря — наименне эффективный метод но при удачно составленном словаре вполне действенный (см пример ниже)
  • использование «радужных таблиц»
  • метод «туннелирования»
  • используя вычислительные мощности отдельных видов видеокарт

Обработка ошибок

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

ErrorDocument, перечень ошибок:

  • 400 Bad Request (Синтаксическая ошибка в запросе пользователя);
  • 401 Unauthorized (Пользователь должен авторизироваться, для просмотра страницы);
  • 403 Forbidden (Доступ к ресурсу запрещен);
  • 404 Not Found (Страница не найдена);
  • 408 Request Time-out (Время запроса истекло);
  • 410 Gone (Ресурс удален навсегда);
ErrorDocument 403 http://site.ru/error/403.html
ErrorDocument 404 http://site.ru/error/404.html

Вредные советы

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

BaseAuth

Классический пример такой «медвежьей услуги» связан с Apache и настройкой базовой авторизации, которая применяется для ограничения доступа к какому-либо файлу или части ресурса. Один из типичных примеров, который может попасться в Сети, выглядит следующим образом:

На первый взгляд все выглядит вроде бы нормально. И такая настройка может работать долго и не приносить никакой головной боли. Так в чем же тут проблема? Дело в том, что она только частично ограничивает доступ к защищаемому ресурсу. Причина в теге , который ограничивает доступ к ресурсу только в случае, если используются — или -запросы. И хотя это самые распространенные методы, но не единственные — есть еще , , , , и . Другими словами, если кто-то решит использовать другой тип запроса, то сможет обойти авторизацию.

Как правильно

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

PHP-FPM & nginx

Еще один пример связан с настройкой связки PHP-FPM + nginx. Те, кто настраивал, вполне вероятно могли натыкаться в Сети на код, содержащий следующие строки:

Где тут собака зарыта? Дело в том, что если попросить у сервера отдать , то URI примет вид , что, в свою очередь, подпадет под , а станет . В случае если переменная в будет установлена в (а по дефолту это так), то станет равным , а — . Результатом всего вышеизложенного будет то, что любой пользователь, у которого будет возможность заливать файлы на сервер (допустим, добавлять себе аватарки), сможет создать специальное изображение, которое будет проходить валидацию и в то же время исполняться PHP-интерпретатором. Что позволит выполнять произвольный код на стороне сервера с привилегиями PHP-процесса.

Как правильно

Вариант первый — установить в переменную в . Вариант второй — добавить в блок :

Примеры использования .htaccess

  • Изменение названия индексной страницы:

    DirectoryIndex index.html index.php index.shtml

    Указать можно несколько индексных страниц. При запросе каталога они будут искаться в том порядке, в котором перечислены в директиве DirectoryIndex. Если не будет найден файл index.html, будет произведен поиск файла index.php и т.д.

  • Выполнять код PHP в файлах HTML

    RemoveHandler .html .htm
    AddType application/x-httpd-php .php .htm .html .phtml
    AddHandler application/x-httpd-php .css

    Добавив эти строки в .htaccess вы дадите директиву серверу выполнять инструкции PHP не только в файлах с расширением *.php и *.phtml, но и в файлах с расширением *.htm и *.html.

  • Выполнять код PHP в файлах Основы работы с CSS

    AddHandler application/x-httpd-php .css
  • Переопределение обработчиков для PHP и Perl. То есть в директории с этими настройкам все файлы будут восприниматься как текстовые.

    RemoveHandler .php .phtml .pl
    AddType text/plain .php .phtml .pl
  • Обработка ошибок Apache

    ErrorDocument 401 /401.html
    ErrorDocument 403 /403.html
    ErrorDocument 404 /404.html
    ErrorDocument 500 /500.html

    При возникновении этих ошибок посетитель будет перенаправлен на специально созданные страницы.

         401 ошибка — Требуется авторизация (Authorization Required).
         403 ошибка — пользователь не прошел аутентификацию, доступ запрещен (Forbided).
         404 ошибка — Документ не найден (Not Found).
         500 ошибка — Внутренняя ошибка сервера (Internal Server Error).
  • Запрет на отображение содержимого каталога при отсутствии индексного файла(например, index.html)

    Options -Indexes - запрещает отображение.
    Options Indexes или Options +Indexes - разрешает.
  • Определение кодировки (utf-8, windows-1251), в которой сервер «отдает» файлы

    AddDefaultCharset utf-8
    
  • Определение кодировки на загружаемые файлы

    CharsetSourceEnc windows-1251
  • Отключение волшебных кавычек.

    php_flag magic_quotes_gpc Off

Перенаправление (редирект)

/pub/home/server1/html/

phpinfo()

Перенаправление (редирект) только при запросе определенных страниц.

Redirect /location/from/root/file.ext http://www.serv.ru/new/file/location.xyz

/location/from/root/file.ext

www.serv.ru/new/file/location.xyz

/oldfile.html

/old/oldfile.html

напр.

Redirect /oldfolder http://www.serv.ru/newfolder

www.oldserv.ru/oldfolder/images/smile.gifwww.serv.ru/newfolder/images/smile.gif

Глобальное перенаправление (редирект) на другой адрес.Redirect / http://www.newsite.ru

Перенаправление (редирект) только посетителей с определенным IP-адресом.

Защита файла wp-login.php паролем от взлома

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

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

Данная защита включает обязательное требование ввода дополнительного логина и пароля для доступа к файлу wp-login.php, исключая отправку POST-запросов при подборе пароля к админ-панели сайта. Здесь используются параметры:

  • AuthType — тип аутентификации, в нашем случае — базовый,
  • AuthName — эту фразу видит пользователь, можете её заменить,
  • AuthUserFile — путь к файлу с логином и паролем,
  • Require — требования, разрешает доступ пользователям из .

Путь к файлу с логином и паролем является абсолютным и отличается в зависимости от хостинга. Обратитесь за помощью к техподдержке или изучите справку, чтобы узнать путь к корневому каталогу. В моём примере файл называется .htpasswd. Содержимое файла представлено парой логин:пароль и имеет следующий вид:

Мой хостинг-провайдер рекомендует пользоваться сервисом Htpasswd Generator для онлайн-генерации хэша пароля. Указываем логин, который хотим использовать для HTTP-аутентификации, затем пароль для его хэширования в MD5.

Важно: пароль в файле .htpasswd не должен быть указан в открытом виде, используйте его хэш с применением алгоритма шифрования MD5.

После нажатия кнопки «Create .htpasswd file» на выходе получаем нужную связку, которую следует скопировать и вставить в файл .htpasswd. Вот и всё, настройка защиты файла wp-login.php завершена. Теперь, прежде чем получить доступ к консоли администратора нам потребуется указать дополнительные логин и пароль (именно пароль, а не его хэш).

Внешний вид формы доступа отличается в зависимости от браузера и операционной системы пользователя. Наиболее симпатичным мне показалось окно авторизации в Internet Explorer, в остальных браузерах оно более сдержано и лаконично, без излишеств.

Используйте разные логины и пароли для HTTP-авторизации и входа в консоль WordPress! Это первая статья из серии уроков по защите сайта от взлома, в планах сформировать новую рубрику про безопасность. Продолжение следует…

MySQL

Ну а теперь пришло время немного поговорить о безопасности популярной СУБД. Как ты помнишь, ее конфигурационный файл называется . Обычно первой из настроек тут проверяют/изменяют , которая отвечает за то, с каких адресов можно будет подключиться к СУБД. Так как обычно база данных физически располагается на том же сервере, что и сам ресурс, то данная опция выставляется в значение . То есть база данных принимает только локальные подключения. Кстати говоря, как вариант, можно еще просто запретить MySQL открывать сетевой сокет, добавив в конфигурационный файл .

Запрет на чтение файлов

Одна из часто встречающихся уязвимостей — SQL-инъекция. Помимо того, что с ее помощью злоумышленник получает данные из БД, он может также получить возможность читать локальные файлы. Чтобы этого не произошло, необходимо установить параметр в значение .

Меняем рут

Еще одним неплохим шагом на пути к безопасности будет изменение имени и пароля суперпользователя. По дефолту это обычно пользователь root. Делается это следующими командами:

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

Чистим историю

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

Алфавитный список

  • А
  • Б
  • В
  • Г
  • Д
  • Е
  • Ё
  • Ж
  • З
  • И
  • Й
  • К
  • Л
  • М
  • Н
  • О
  • П
  • Р
  • С
  • Т
  • У
  • Ф
  • Х
  • Ц
  • Ч
  • Ш
  • Щ
  • Ъ
  • Ы
  • Ь
  • Э
  • Ю
  • Я
  • A
  • B
  • C
  • D
  • E
  • F
  • G
  • H
  • I
  • J
  • K
  • L
  • M
  • N
  • O
  • P
  • Q
  • R
  • S
  • T
  • U
  • V
  • W
  • X
  • Y
  • Z

Htpasswd

htpasswd — файл, который сохраняет пароли для доступа к интернет-ресурсу у веб-сервера Apache.

С данным файлом могут работать также другие сервера, например, nginx. При использовании данного файла используется базовый метод авторизации (basic authentication).

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

Файл .htpasswd состоит из определенных строк, которые соответствуют паре логин и хеш пароля. В названии логин и хеш отделяются двоеточием. Далее в файле сохраняется хеш, а не пароль. Он может рассчитываться несколькими способами:

  1. crypt;
  2. MD5;
  3. SHA;
  4. пароль сохраняется в открытом виде и ничем не защищается (встречается редко).

Системная функция crypt — самая распространенная, так как используется по умолчанию практически для всех операционных систем, кроме Windows и ТРF.

Применение

Для генерации данных в .htpasswd используют утилиту htpasswd. Файлом предусматривается только ограничение для чтения. Утилита htpasswd служит для работы с файлом паролей. Она обычно входит в состав дистрибутива Apache. С ее помощью создаются файлы паролей, а также добавляются новые записи или же изменяются имеющиеся.

Для добавления нового пользователя используется новая строка с файлом .htpasswd и утилитой htpasswd. Например, файл с добавлением нового пользователя Lilu25 будет выглядеть так: htpasswd /usr/local/www/data/.htpasswd Lilu25. Это уже существующий файл, но если нужно создать новый, то добавляется ключ -c.

Apache Htpasswd protection using VirtualHost

Virtual host is a file that tells the web browser (Apache) to redirect a request to specific document root, based on the domain name. If you do not know anything about virtual hosts, learn more about virtual hosts from our guide.

We can protect a specific directory or an entire application by injecting few lines of code in our virtual host file. To open your virtual host file in edit mode, execute the following command.

$ sudo nano /etc/apache2/sites-available/000-default.conf

Here I am editing a default Apache virtual host. But you can open the one you want to edit by changing the file name. Once it is in edit mode, add the following code (Colored) to the file. I have excluded all the other code to show the exact location to add the code.

<VirtualHost *:80>
    .
    .
    .
    <Directory /var/www/html/protected>
        AuthType Basic
        AuthName "Protected"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    <Directory>
</VirtualHost>

Do not forget to replace the absolute path to the directory you want to protect and also the location of the htpasswd file. Once done, press CTRL+X followed by Y followed by Enter to save the configuration file. Next, execute the following command to restart the Apache web server.

$ sudo service apache2 restart

We have to restart the Apache server to apply the changes. Once done, try to access the directory or website you wanted to protect. You will see an alert asking for username and password. Entering the correct username and password will allow you to access the website/directory.

Prerequisites

In order to complete this tutorial, you will need access to an Ubuntu 16.04 server.

In addition, you will need the following before you can begin:

  • A user on your server: You can create a user with privileges by following the Ubuntu 16.04 initial server setup guide.

  • An Apache2 web server: If you haven’t already set one up, the Apache section of the in-depth article, How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 16.04, can guide you.

  • A site secured with SSL: How you set that up depends on whether you have a domain name for your site.

    • If you have a domain name… the easiest way to secure your site is with Let’s Encrypt, which provides free, trusted certificates. Follow the Let’s Encrypt guide for Apache to set this up.
    • If you do not have a domain… and you are just using this configuration for testing or personal use, you can use a self-signed certificate instead. This provides the same type of encryption, but without the domain validation. Follow the self-signed SSL guide for Apache to get set up.

When all of these are in place, log into your server as the user and continue below.

Create Apache htpasswd file

The actual name of the htpasswd file is . It’s the default name that everyone uses but you can name it whatever you want. The “.” as the first character of the filename says that the file should be hidden in the list. Let’s create an htpasswd file on our server. Execute the following command to create a blank .htpasswd inside Apache’s configuration directory. Again, you can store it wherever you want, as per your requirements.

$ sudo touch /etc/apache2/.htpasswd

Once done, we can add new users to the .htpasswd file. For this task, we will use the command that comes with the package we installed in the previous step. Let’s add some users to our brand new htpasswd file.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector