Openbsd установка nginx і налаштування безпеки, rtfm linux, devops і системне адміністрування

Непоганий огляд по роботі з OpenBSD можна почитати тут >>>.

Перевіряємо список користувачів, які можуть логінитися в систему:

У OpenBSD є пакет doas. як більш проста альтернатива sudo. але якщо sudo звичніше - то встановлюємо його:

doas встановлений за замовчуванням.

Додаємо нового користувача setevoy. додавши його в групу wheel:

Додаємо правило для doas:

Перевіряємо ще раз:

Міняємо пароль root:

Забороняємо вхід root по SSH і міняємо порт - редагуємо / etc / ssh / sshd_config і встановлюємо:

Перевіряємо з робочої машини під рутом:

Під новим користувачем:

OpenBSD firewall - PF

PF (Packer Filter) - фаєрвол в OpenBSD за замовчуванням.

Основні команди для роботи з ним.

Або через pfctl:

  • pfctl -f /etc/pf.conf - завантажити pf.conf
  • pfctl -nf /etc/pf.conf - прочитати, але не застосовувати правила
  • pfctl -sr - відобразити поточні набори правил
  • pfctl -ss - відобразити поточні таблиці стану
  • pfctl -si - вивести статистику пакетів і лічильників
  • pfctl -sa - вивести все

Основні правила доступу до хосту будуть задані через настройки самого AWS. тому PF можна використовувати тільки для ручного бана (і Fail2ban).

Редагуємо файл /etc/pf.conf. додаємо опис таблиці і файлу, в якому зберігатимуться правила:

Перевіряємо. Банимо IP:

І пробуємо підключитися з 77.120.103.20:

  1. пересилання поштових повідомлень root
  2. автоапдейт пакетів

NGINX на OpenBSD

Опис всіх пакетів можна знайти тут >>> (naxsi - цікаве рішення, почитати тут >>>).

У файл /etc/rc.conf.local додаємо рядок:

Додаємо автозагрузку в файл /etc/rc.conf:

SSL для NGINX - Let's encrypt

Створюємо каталоги для файлів налаштувань і балок:

У файл /etc/nginx/nginx.conf додаємо:

У файл /etc/nginx/nginx.conf додаємо:

Встановлюємо клієнт ACME (Automated Certificate Management Environment protocol).

Повний список клієнтів можна знайти тут >>>. в даному випадку використовуємо certbot.

У разі помилки виду:

Додайте в / etc / fstab параметр wxallowed:

Створюємо файл настройок віртуалхоста /etc/nginx/conf.d/openbsdtest.setevoy.org.ua.conf:

Створюємо індексний файл:

Перевіряємо та перезапускаємо NGINX:

За допомогою openssl:

Посилання по темі Let's Encrypt і OpenBSD:

автопоновлення сертифіката

У cron додаємо завдання:

NGINX security

За замовчуванням - NGINX повідомляє свою версію:

Відключаємо, додавши в server <> файлу /etc/nginx/nginx.conf рядок:

Додаємо заголовок X-Frame-Options для заборони відображення сторінок в frame / iframe:

Відключаємо автоматичну перевірку типу контенту для IE. Chrome. Safari:

Корисним може бути заголовок Content-Security-Policy (застарілі - X-Content-Security-Policy і X-WebKit-CSP).

Налаштування SSL

Генеруємо ключ параметрів для встановлення сесії по протоколу Diffie-Hellman:

Подивитися його можна так:

Додаємо в файл настройок:

Додаємо список підтримуваних протоколів:

Задаємо підтримувані алгоритми шифрування:

Включаємо кешування сесій SSL (1MB під кеш, зберігати 1 година):

Доабвляем OCSP Stapling:

Openbsd установка nginx і налаштування безпеки, rtfm linux, devops і системне адміністрування

інші параметри

Параметри нижче більше стосуються проівзодітельний, але має сенс додати їх зараз.

Що б не виконувати SSL handshake кожен раз для одного клієнта - можна додати keepalive_timeout:

Забороняємо доступ, якщо запит до сервера не включає в себе ім'я віртуалхоста:

HTTP код 444 - закрити з'єднання без відповіді.

Дозволяємо тільки певні типи запитів до сервера:

DELETE. SEARCH і інші - будуть відкидатися.

Заблокувати hotlink-і зображень (за трафік картинок з нашого сервера платимо ми, тому дозволяємо доступ тільки зі свого домену):

Конфігурація, що вийшла в результаті:

Схожі статті