Як налаштувати авторизацію по паролю на Apache з Ubuntu – База знань Timeweb Community
Вимоги
Перед тим, як розпочати подальші кроки, переконайтеся, що у вас є доступ до сервера Ubuntu 16.04.
Також для виконання інструкції вам знадобиться таке:
- користувач, який може виконувати команди sudo на сервері;
- веб-сервер Apache;
- сайт, де встановлено SSL-сертифікат (наприклад, Let's Encrypt).
Крок 1: встановлюємо пакет із утилітами Apache
Введіть такі команди:
Крок 2: створюємо файл із паролями
Тепер можна скористатися командою htpasswd. За допомогою неї необхідно створити файл з паролями, який Apache буде використовувати для автентифікації користувачів. Для цього потрібно створити прихований файл під назвою .htpasswd всередині директорії з налаштуваннями /etc/apache2.
При першому використанні даної утиліти вам необхідно додати до команди ключ –c для того, щоб створити вказаний файл. Також в кінці команди вам необхідно вказати ім'я користувача (sinatra у даному прикладі) – це потрібно для того, щоб створити новий запис усередині файлу:
У вас буде запитаний пароль та його підтвердження для створеного користувача.
Якщо ви хочете додати ще будь-яких інших користувачів (наприклад, another_user), використовуйте цю команду, але вже без ключа –c:
Перегляньте вміст цього файлу:
Ви побачите ім'я користувача та зашифрований пароль для кожного запису:
Тепер у вас є файл з іменами користувачів та паролями у форматі, доступному для читання Apache.
Наступним кроком необхідно налаштувати Apache так, щоб він звірявся з цим файлом завжди, коли збирається надати доступ до захищеного від сторонніх очей контенту. Ви можете зробити це двома шляхами:або прямо у файлі віртуального хоста сайту, або додавши файли .htaccess у директорії, доступ до яких ви хочете обмежити.
Загалом краще використовувати перший варіант, тобто використовувати файл віртуального хоста. Однак якщо вам потрібно дати непривілейованим користувачам можливість самостійно керувати обмеженнями доступу, стежити за обмеженнями в контролі версій так само, як і на сайті, або ж у вас веб-програми, які вже використовують .htaccess для інших цілей, ви можете піти по другому шляхи.
Тобто вибирайте шлях, виходячи зі своїх вимог.
Перший шлях полягає в тому, щоб відредагувати налаштування Apache та додати віртуальному хосту захист паролем. Це також покращить продуктивність, тому що відпадає необхідність читання розподілених файлів налаштувань. Цей шлях вимагає доступу до налаштувань, який не завжди є, однак якщо у вас є доступ, то такий шлях є кращим.
Спочатку відкрийте файл віртуального хоста, до якого ви збираєтеся обмежити доступ. Для прикладу в цьому посібнику буде використовуватися файл 000-default.conf, який містить віртуальний хост за замовчуванням, встановлений за допомогою пакету Apache в Ubuntu.
Аутентифікація відбувається з урахуванням каталогів. Для того, щоб встановити аутентифікацію, вам потрібно помістити директорію, доступ до якої потрібно заборонити, блоком . У прикладі нижче доступ буде заборонено до кореневого каталогу документів, однак ви можете вибрати будь-яку конкретну директорію:
Всередині блоку директорії вкажіть, що потрібно встановити базову аутентифікацію (Basic). Для графи AuthName необхідно вибрати ім'я, яке відображатиметься користувачеві під час запиту даних для автентифікації. У графі AuthUserFileнеобхідно вказати файл з паролем, який був створений раніше, щоб Apache міг його знайти. Також вам знадобиться valid-user, який може отримати доступ до даних; іншими словами, до директорії буде допущено будь-хто, хто зможе підтвердити свою особу за допомогою пароля.
Після редагування збережіть та закрийте файл.
Перед перезавантаженням сервера перевірте налаштування наступною командою:
Якщо все нормально, і ви побачили Syntax OK, тоді перезавантажте сервер для того, щоб нова політика доступу із запитом пароля набула чинності. Для цього введіть такі команди:
Тепер директорія, яку ви позначили раніше, перебуває під захистом пароля.
Apache може використовувати файли .htaccess для того, щоб давати доступ до деяких налаштувань, які можна встановити через каталог вмісту. Так як Apache буде звертатися до вмісту цих файлів при кожному запиті, який містить даний каталог, що може негативно позначитися на продуктивності, перший шлях краще, проте якщо ви вже використовуєте файли .htaccess, або вам потрібно, щоб непривілейовані користувачі могли самостійно керувати обмеженнями доступу , то тут використання .htaccess файлів зрозуміло і логічно.
Для того, щоб за допомогою .htaccess файлів активізувати захист за допомогою паролів, відкрийте головний конфігураційний файл Apache:
Далі знайдіть блок для директорії /var/www, що містить кореневий каталог документів. Увімкніть підтримку файлів .htaccess, змінивши значення директиви AllowOverride з "None" на "All" - у цьому випадку сервер буде допускати всі директиви .htaccess файлу:
Після цього збережіть та закрийте файл.
Тепер вам необхідно додати файл .htaccess до директорії, доступ до якої вихочете обмежити. У цьому посібнику для прикладу доступ буде заборонено до всього кореневого каталогу документів (тобто повністю до сайту), який знаходиться в /var/www/html, але ви можете помістити цей файл до будь-якої директорії, доступ до якої ви хочете обмежити:
Всередині цього файлу вкажіть, що потрібно встановити базову аутентифікацію (Basic). Для графи AuthName необхідно вибрати ім'я, яке відображатиметься користувачеві під час запиту даних для автентифікації. У графі AuthUserFile необхідно вказати файл з паролем, який був створений раніше, щоб Apache міг його знайти. Також вам знадобиться valid-user, який може отримати доступ до даних; іншими словами, до директорії буде допущено будь-хто, хто зможе підтвердити свою особу за допомогою пароля:
Збережіть та закрийте файл. Перезавантажте сервер, щоб усі зміни, які стосуються захисту паролем вибраної директорії, набрали чинності. Потім використовуйте команду systemctl status для того, щоб переконатися в успішному перезавантаженні:
Крок 4: перевіряємо наявність захисту під час аутентифікації
Щоб переконатися, що ваші дані захищені, спробуйте отримати доступ до них у браузері. Вам має висвітитися вікно із запитом імені користувача та пароля, яке виглядатиме приблизно так:

Висновок
Якщо ви виконали всі перераховані в цьому посібнику кроки, то тепер на вашому сайті є базова автентифікація. Однак не забувайте і про інші способи захисту віднесанкціонованого доступу до ваших даних, наприклад, про SSL-сертифікати та використання SSH.