Настройка безопасности
В этом документе собраны все параметры и рекомендации, которые могут влиять на безопасность различных компонентов инфраструктуры Пассворка (веб-сервер, PHP, база данных). Выставление максимальных значений требуется не всегда и может привести к неудобству использования Пассворка конечными пользователями, а также отсутствию поддержки или совместимости со старыми ОС и компонентами.
Изменяйте значения по рекомендациям технической поддержки Пассворк.
Название параметра | Значение | Важно | 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 | | | Если используется одно доменное имя, то его можно указать в этом параметре |
💡 Для продакшен среды требуется обязательная настройка работы по HTTPS протоколу.
Оставить поддержку только TLS 1.2 и 1.3
Рекомендованный набор крипто-алгоритмов (не будут поддерживаться старые ОС и браузеры, например IE6/WinXP)
Расширение HTTP Strict Transport Security предназначено для сохранения настройки в браузере «этот сайт работает только посредством HTTPS».
Атаковать такой ресурс при помощи «человек посередине» (MITM) уже не получится, т.к. в случае подмены сертификата браузер сразу закроет соединение и не даст возможности продолжить работу с поддельным сертификатом.
В параметре max-age указывается на сколько секунд следует кэшировать заголовок HSTS в браузере. Рекомендуется указывать 31536000 (1 год) и выше.
При помощи данного расширения администратор ресурса может указать какой удостоверяющий центр может использоваться для подписания его сертификатов.
Чтобы включить данное расширение, нам необходимо получить отпечаток удостоверяющего центра, выдавшего наш сертификат и закодировать его в base64. Проще всего это сделать так:
Здесь cert.pem — это первый в цепочке сертификат, принадлежащий удостоверяющему центру. На выходе мы получим строку в base64.
Включаем расширение и прописываем отпечаток нашего УЦ (не забудьте указать свой base64 отпечаток):
В параметре max-age указывается на сколько секунд следует кэшировать отпечаток в кэше браузера. Рекомендуется указывать не слишком большое значение, т.к. в случае смены УЦ клиенты не смогут зайти на ваш ресурс до истечения таймаута.
Название параметра | Значение | Комментарий |
Секция [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 пользователь сможет войти только в веб интерфейс. |
Рекомендации по дополнительной настройке: