Настройка безопасности
Общая информация
В этом документе собраны все параметры и рекомен дации, которые могут влиять на безопасность различных компонентов инфраструктуры Пассворка (веб-сервер, PHP, база данных). Выставление максимальных значений требуется не всегда и может привести к неудобству использования Пассворка конечными пользователями, а также отсутствию поддержки или совместимости со старыми ОС и компонентами.
Изменяйте значения по рекомендациям технической поддержки Пассворк.
Настройки PHP (php.ini)
| Название параметра | Значение | Важно | Commentary |
|---|---|---|---|
| expose_php | Off | Да | Скрывает информацию о ве рсии PHP в заголовках ответа веб-сервера |
| display_errors | Off | Да | Отключает вывод информации об ошибках PHP. Всегда должно быть Off, так как все ошибки пишутся в лог-файлы. |
| post_max_size | 10MB | Ограничивает максимальный размер получаемых от клиента данных, что защищает от DOS атак. | |
| max_execution_time | 120 до 600 | Максимальное время выполнения скрипта в секундах. При необходимости можно увеличить | |
| max_input_time | 120 | Максимальное время чтения данных от клиента в секундах. | |
| memory_limit | 256MB до 2GB | Максимальный объем RAM, который может использовать скрипт. При необходимости можно увеличить | |
| max_input_vars | 1000 | Количество параметров в POST запросе. Можно увеличить, если наблюдаются проблемы с импортом больших CSV или JSON файлов. | |
| session.cookie_lifetime | 0 | При значении 0 браузер не хранит куки и очищает их при перезапуске браузера | |
| session.use_only_cookies | On | Да | Сессия будет передавать только через куки |
| session.use_strict_mode | On | Да | PHP не будет принимать куки с сессией, номер который установлен пользователем, а не выдан PHP. Защищает от Cookie Fixation |
| session.cookie_httponly | On | Да | Запрещает доступ к кукам из JavaScript |
| session.cookie_secure | On | Да | Куки будут доступны только по HTTPS |
| session.use_trans_sid | Off | Да | Запрещает предавать номер сессии через GET параметры |
| session.cache_limiter | nocache | Отключает кеш | |
| session.sid_length | 100 | Да | Устанавливает длину сессии. Длинный номер сессии защищает ее от перебора (максимально 256). |
| session.sid_bits_per_character | 5 | Да | Максимальная вариативность символов в номере сессии. '4' (0-9, a-f), '5' (0-9, a-v), '6' (0-9, a-z, A-Z, "-", ","). Значение 6 не поддерживается |
| session.cookie_domain | Если используется одно доменное имя, то его можно указать в этом параметре |
Веб-сервер
Настройка SSL
💡 Для продакшен среды требуется обязательная настройка работы по HTTPS протоколу.
Оставить поддержку только TLS 1.2 и 1.3
ssl_protocols TLSv1.2 TLSv1.3;
Рекомендованный набор крипто-алгоритмов (не будут поддерживаться старые ОС и браузеры, например IE6/WinXP)
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
HTTP Strict Transport Security
Расширение HTTP Strict Transport Security предназначено для сохранения настройки в браузере «этот сайт работает только посредством HTTPS».
Атаковать такой ресурс при помощи «человек посередине» (MITM) уже не получится, т.к. в случае подмены сертификата браузер сразу закроет соединение и не даст возможности продолжить работу с поддельным сертификатом.
add_header Strict-Transport-Security max-age=31536000;
В параметре max-age указывается на сколько секунд следует кэшировать заголовок HSTS в браузере. Рекомендуется указывать 31536000 (1 год) и выше.
Настройка Пассворка
Настройка параметров безопасности config.ini
| Название параметра | Значение | Комментарий |
|---|---|---|
| Секция [crypt] | ||
| secret | Не изменять вручную | Ключ серверного шифрования базы данных. Генерируется автоматически при первом запуске Пассворк. |
| disableClientSide | Включить при необходимости | Off — включает режим шифрование на клиенте On — без шифрования на клиенте (значение по умолчанию) |
| algorithm | Рекомендуется не изменять | Можно указать алгоритм шифрования из openssl библиотеки |
| source | Пример: config/config.ini … [crypt] source = key.ini … config/key.ini [crypt] secret = base64:…. | |
| Секция [application] | ||
| csrf | On | Включает отправку CSRF токен при каждом AJAX запросе |
| disableEncodeResponse | Не указывать | По умолчанию сервер кодирует все клиентские данные в base64 кодировке. Значение On отключается этот режим (только для отладки). |
| Секция [mongo] | ||
| source | Позво ляет вынести строку подключения в отдельный файл config/config.ini … [mongo] source = mongo.ini … config/mongo.ini [mongo] connectionString = mongodb://db:27017 dbname = production … | |
| Без секции | ||
| devmode | Не указывать | Включает режим отладки |
Системные параметры Пассворка
| Название параметра | Значение | Комментарий |
|---|---|---|
| Дополнительная защита и подпись кук | Включить | Куки с PHP сессией подписываются с помощью энтропии и данных из заголовка HTTP запроса, в том числе IP пользователя. Это повышает защиту от перебора номера сессии, а так же от переноса (кражи) кук между браузерами. Каждый пользователь автоматически будет терять сессию при смене IP адреса. |
| Обязательная двухфакторная аутентификация | Включить | Все пользователи должны будут настроить 2ФА перед началом работы |
| Время жизни токена CSRF после последней активности в часах | 24 | |
| Ротация API-ключей | Включить | Все клиентские приложения будут автоматически терять сессию и требовать повторного входа в систему. |
| Самостоятельное восстановление пароля авторизации | Запрещено | Сбросить забытый пользовательский пароль авторизации сможет только администратор Пассворк |
| Автоматический выход из системы при неактивности | Пассворк выполнит автоматический выход пользователя, если от него не приходят запросы | |
| Использование API | Позволяет отключить использование API. По API работают все клиентские приложения (мобильные приложения, браузерные расширения). С отключенным API пользователь сможет войти только в веб интерфейс. |