Створення профілю apparmor для nginx в ubuntu

Розміщення серверів в надійних дата-центрах Європи. Відкрийте хмарний VPS / VDS сервер на швидких SSD за 1 хвилину!

Кращий хостинг:
- захистить дані від несанкціонованого доступу в охоронюваному європейському ЦОДі
- прийме оплату хоч в bitcoin.
- дозволить поставити свій дистрибутив

- захист від DDos-атак
- безкоштовний backup
- Uptime 99,9999%
- ЦОД - TIER III
- провайдер - TIER I

Підтримаємо російською мовою 24/7/365 Працюємо з юрособами і фізособами. Вам прямо зараз потрібно 24 ядра і 72 Gb RAM. Будь ласка!

Наші вигідні тарифи доведуть, що дешевий хостинг ви ще не знали!

Хвилинна справа: виберіть конфігурацію, оплатіть і CMS на VPS готова.
Money Back - 30 днів!

Банківськими картами, електронною валютою, через термінали Qiwi, Webmoney, PayPal, Новоплат і ін.

Задайте питання в службу підтримки 24/7/365

Знайдіть відповіді в нашій базі і познайомтеся з рекомендаціями

При адмініструванні сервера необхідно постійно відстежувати появу нових вразливостей.

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

Примітка: 0day, або атаки нульового дня - це невідомі уразливості і шкідливі програми, від яких ще немає захисних механізмів.

AppArmor - це базовий модуль Linux, який використовується в якості системи контролю доступу, яка захищає сервер від подібних атак. Цей модуль за замовчуванням доступний в системах Ubuntu з моменту виходу Ubuntu 8.04.

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

Даний посібник допоможе створити простий профіль AppArmor для веб-сервера Nginx.

Для демонстрації прикладів Nginx обслуговуватиме статичні файли з каталогів / data / www / safe і / data / www / unsafe. AppArmor налаштує Nginx для обслуговування тільки / data / www / safe.

Таким чином, коли AppArmor відключений, зовнішній користувач зможе отримати доступ до файлів з обох каталогів. З включеним модулем AppArmor буде доступний тільки контент каталогу / data / www / safe.

вимоги

1: Установка Nginx

Встановити Nginx можна за допомогою стандартного пакетного менеджера apt-get.

sudo apt-get update
sudo apt-get install nginx

За замовчуванням сервер Nginx прослуховує порт 80. Щоб переконатися в цьому, відкрийте в браузері домен або IP сервера і вкажіть порт:

На екрані з'явиться привітальна сторінка Nginx:

Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. ...

2: Налаштування Nginx для обслуговування статичних файлів

Створіть наступні каталоги статичних файлів:

sudo mkdir -p / data / www / safe
sudo mkdir -p / data / www / unsafe

Додайте файл в каталог safe:

sudo nano /data/www/safe/index.html

Помістіть в нього такий код:


Hello! Accessing this file is allowed.

Потім додайте в каталог / data / www / unsafe файл на ім'я index.html і помістіть в нього такий код:


Hello! Accessing this file is NOT allowed.

Конфігураційний файл Nginx знаходиться в /etc/nginx/nginx.conf. Відредагуйте цей файл, налаштуйте прослуховування поту 8080 і підтримку каталогу / data / www.

user www-data;
worker_processes 4;
pid /run/nginx.pid;
events worker_connections 768;
>
http sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application / octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
server listen 8080;
location / root / data / www;
>
>
>

Збережіть і закрийте файл. Перезапустіть Nginx, щоб оновити налаштування:

sudo nginx -s reload

Сторінка з каталогу safe виглядає так:

Hello! Accessing this file is allowed.

3: Перевірка профілів AppArmor

Ubuntu 14.04 поставляється з попередньо завантаженими профілями AppArmor. Встановити більшу їх частину можна за допомогою команди:

sudo apt-get install apparmor-profiles

Список містить досить багато профілів. Деякі з них будуть в активні (enforce mode), а деякі в режимі complain (це означає, що AppArmor буде реєструвати активність такого додатка, не обмежуючи його в доступі).

Лог-файли будуть зберігатися в каталозі / var / log / nginx.

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

Також ви помітите, що в списку немає профілю для Nginx. Його потрібно створити самостійно.

4: Створення профілю AppArmor для Nginx

Встановіть apparmor-utils - набір утиліт для управління AppArmor.

sudo apt-get install apparmor-utils

Команда aa-autodep створить порожній профіль в каталозі /etc/apparmor.d.

cd /etc/apparmor.d/
sudo aa-autodep nginx

Потім використовуйте наступну команду, щоб включити режим complain.

sudo aa-complain nginx

sudo service nginx restart

Відкрийте в браузері:

Після цього в балці Nginx з'являться записи про відвідування даного сайту.

Ця команда сканує лог-файли і оновлює профіль Nginx. AppArmor кілька разів запропонує дозволити або відхилити функцію. Якщо на даний момент сервер не схильний до атаки, можна просто натиснути А на всі запити програми (оскільки всі запропоновані функції важливі для роботи Nginx). Щоб зберегти зміни, натисніть S.

Отже, щоб включити AppArmor для нового додатка:

  • Створіть порожній профіль додатки.
  • Відкрийте програму і виконайте кілька простих дій, щоб в логах з'явилися записи.
  • Запустіть утиліту AppArmor, яка перевірить логи і схвалить (або відхилить) перераховані в них дії програми.

5: Редагування профілю AppArmor для Nginx

Профіль для Nginx був створений автоматично, потім він вимагає додаткового редагування. Відкрийте файл /etc/apparmor.d/usr.sbin.nginx:

sudo nano /etc/apparmor.d/usr.sbin.nginx

Зміни, які потрібно внести:

  • Додайте рядок (обов'язково зі знаком дієз):
  • Додайте рядки capability setgid і capability setuid.
  • У рядку / data / www / safe / задайте весь каталог (за допомогою символу *).
  • Додайте рядок (обов'язково з комою в кінці):

deny / data / www / unsafe / * r,

  • Щоб Nginx отримав право на запис в балці помилок, встановіть w в рядку /var/log/nginx/error.log.

Рядок apache2-common дозволяє Nginx слухати різні порти. Рядки capability дозволяють запускати нові процеси. Правило deny блокує доступ до каталогу / data / www / unsafe /.

В результаті профіль буде виглядати так:

#include
/ Usr / sbin / nginx #include
#include
#include
capability dac_override,
capability dac_read_search,
capability net_bind_service,
capability setgid,
capability setuid,
/ Data / www / safe / * r,
deny / data / www / unsafe / * r,
/ Etc / group r,
/etc/nginx/conf.d/ r,
/etc/nginx/mime.types r,
/etc/nginx/nginx.conf r,
/etc/nsswitch.conf r,
/ Etc / passwd r,
/etc/ssl/openssl.cnf r,
/run/nginx.pid rw,
/ Usr / sbin / nginx mr,
/var/log/nginx/access.log w,
/var/log/nginx/error.log w,
>

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

Щоб ввімкнути режим AppArmor для Nginx, використовуйте:

sudo aa-enforce nginx

Рекомендується перезапустити всі профілі та Nginx, щоб оновить настройки.

sudo /etc/init.d/apparmor reload
sudo service nginx restart

У разі виникнення помилки на будь-якому етапі налаштування перевірте конфігураційний файл і / var / log / syslog.

Перевірте стан AppArmor:

Процес Nginx повинен бути у виконанні.

Знову відкрийте браузер і відвідайте сторінку:

На екрані повинна з'явитися сторінка з каталогу safe. Потім відвідайте:

Сервер повинен повернути помилку 403 Forbidden.

Усунення несправностей

Якщо сервер Nginx не починається після включення профілю, то, швидше за все, у нього недостатньо прав. Зверніть увагу на:

Відредагуйте профіль, щоб вирішити проблему.

Наприклад, якщо в файл профілю не додати рядок abstractions / apache2-common, виникне помилка:

[Emerg] 3611 # 0: socket () 0.0.0.0:8080 failed (13: Permission denied)

Налаштування профілю AppArmor вимагає уваги.

висновок

Профілі AppArmor дуже важливі в виробничих системах, оскільки блокують доступ до уразливих крапках сервера.

Схожі статті