Захистити сайт паролем за допомогою htpasswd

53

Всім привіт! сьогодні ми поговоримо про те, як захистити сайт паролем за допомогою htpasswd . Така необхідність може виникнути при розробці нового сайту або при будь-якій іншій ситуації, коли вам потрібно закрити доступ до сайту або директорії паролем. Це може бути обумовлено необхідністю заборонити індексування контенту пошуковими роботами в період розробки або може з’явитися необхідність закрити доступ до певних розділів, документів сайту.

Як обмежити доступ до сайту

Доступ до вмісту будь-якого каталогу на сервері можна обмежити майже на всіх web-серверах за допомогою htpasswd файлу. При зверненні до каталогу через браузер користувачеві буде виводитися діалогове вікно, для введення логіна і пароля.

Як створити файл паролів .htpasswd

На першому етапі придумайте новий логін і згенеруйте новий пароль, скориставшись сторінкою c інструментом генератора паролів. Збережіть отримані паролі.

Потім, вам потрібно згенерувати вміст для .htpasswd файлу, скориставшись htpasswd генератором. В поле ” користувач (логін)» вкажіть придуманий вами логін (тільки латинськими літерами), в поле «пароль», — згенерований раніше пароль. Після цього ви отримаєте результат, щось на зразок цього:

admin:$apr1$evskxt6q$p3rzumyh.mvzn9nvmij850

Щоб зрозуміти, що ми отримали в результаті, отриманий рядок можна представити як :, де admin — це наш «користувач(логін)», а $apr1$evskxt6q$p3rzumyh.mvzn9nvmij850 це наш зашифрований пароль.

Далі нам необхідно створити звичайний текстовий файл з ім’ям .htpasswd. І в цей файл нам необхідно вставити нашу рядок admin:$apr1$evskxt6q$p3rzumyh.mvzn9nvmij850 і зберегти файл. Якщо вам потрібно зробити кілька облікових записів, то вам потрібно повторити всі кроки описані вище ще раз і додати ще одну запис в цей же файл, але вже з нового рядка. Припустимо якщо нам потрібно 2 облікові записи, то вміст файлу буде виглядати так:

admin:$apr1$evskxt6q$p3rzumyh.mvzn9nvmij850 developer: $ apr1$pngk7j62$z / coxozmvrwurogxrbmiy /

Де ми бачимо 2 облікові записи для логіна admin і developer.

увага:

  • вміст файлу має бути тільки з рядків згенерованих за допомогою генератора, якщо їх кілька — то додавати їх з нового рядка.
  • порожніх рядків у файлі не повинно бути
  • файл повинен бути в кодуванні utf-8

Ще варто зауважити, що ви можете згенерувати .htpasswd файл за допомогою програм, які ви можете завантажити в інтернеті, але це не рекомендується робити, так як програми можуть містити віруси.

Тепер нам залишилося підключити.htpasswd файл до web-сервера. У цій статті ми розглянемо підключення до apache і nginx.

Як підключити.htpasswd в nginx

Щоб захистити певну директорію на сайті, вам необхідно оновити конфіг nginx вашого сайту, і додати туди щось на зразок цього:

location /protect { auth_basic “admin area”; auth_basic_user_file /path/to/.htpasswd; }

  • location / protect — означає що ми будемо захищати директорію / protect паролем.
  • auth_basic «administrator’s area»; — назва діалогового вікна в якому вам потрібно буде ввести логін і пароль.
  • auth_basic_user_file /path/to/.htpasswd ;— шлях до.htpasswd файлу.

Щоб перевірити, що ваш контент захищений, спробуйте отримати доступ до обмеженого контенту в браузері, для цього на потрібно перейти за адресою www.example.com/protect (якщо ви вказали location /protect, в іншому випадку вам потрібно вказати свій шлях). Ви повинні побачити вікно для введення імені користувача та пароля.

Також ми можемо обмежити доступ до всього сайту, але при цьому зробити деякі області сайту загальнодоступними. У цьому випадку вкажіть auth_basic off у певній директорії:

примітка! як захистити сайт на wordpress від злому. 17 способів захисту.

Як підключити.htpasswd в apache

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

documentroot /var/www/html …authtype basic authname “admin area” authuserfile /path/to/.htpasswd require valid-user

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

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

allowoverride all

Ця настройка включає можливість використовувати файли .htaccess. Тепер перейдіть в каталог, до якого хочемо обмежити доступ по паролю, створюємо файл .htaccess з такими директивами:

authtype basic authname” admin area ” authuserfile / path / to/.htpasswd require valid-user

Якщо ви файл .htpasswd поклали десь в директорії з сайтом, то тепер вам потрібно захистити його, для цього вам потрібно створити .htaccess файл в тій же директорії де лежить файл з паролями. Якщо там вже є файл .htaccess, то тоді вам його потрібно відкрити для редагування і додати наступні рядки: