Непоганий огляд по роботі з 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:
- пересилання поштових повідомлень root
- автоапдейт пакетів
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:
інші параметри
Параметри нижче більше стосуються проівзодітельний, але має сенс додати їх зараз.
Що б не виконувати SSL handshake кожен раз для одного клієнта - можна додати keepalive_timeout:
Забороняємо доступ, якщо запит до сервера не включає в себе ім'я віртуалхоста:
HTTP код 444 - закрити з'єднання без відповіді.
Дозволяємо тільки певні типи запитів до сервера:
DELETE. SEARCH і інші - будуть відкидатися.
Заблокувати hotlink-і зображень (за трафік картинок з нашого сервера платимо ми, тому дозволяємо доступ тільки зі свого домену):
Конфігурація, що вийшла в результаті: