Настройки безопасности системы
Данный раздел предназначен для описания дополнительных настроек обеспечения безопасности системы.
Смена всех паролей в системе
- Необходимо сменить системного пользователя для
pauth-server
- Сменить пароли для системных пользователей Postgresql
- Сменить пароль системных пользователей ClickHouse
- Смена пароля системного пользователя для komrad-bus
Rate Limit или защита от DOS-атак
В файле конфигурации вы можете задать ограничения числа запросов к HTTP:
# Настройки алгоритма ограничения числа запросов к HTTP
rate-limit:
# Включить лимиты на HTTP запросы
enabled: true
# Максимальное число запросов от одного пользователя на один метод API в секунду.
# На ограничение стоит допуск со стандартным распределением вероятности +-50%.
rps: 40
# Считать раздельно лимиты для выбранных HTTP-заголовков.
vary-by-headers: []
# Считать раздельно лимиты для запросов от одного пользователя с разных IP-адресов.
# В этом случае раздельно будут считаться запросы от одного и того же пользователя с разных IP-адресов.
vary-by-remote-address: false
Атака Slowloris
В файле конфигурации вы можете задать время сброса HTTP-соединения при условии, если идут только HTTP-заголовки, а тело запроса долго не идёт.
ReadHeaderTimeout: 10 * time.Second,
Если будут приходить только заголовки, то тогда раз в 10 секунд будет сбрасываться соединение.
Цифровой отпечаток пользователя
В KOMRAD реализована возможность сбора отпечатков браузера и системы пользователя. Данная информация может быть полезна при расследовании каких-либо внутренних инцидентов. Таким образом можно выявить факт несанкционированного доступа. Например, когда кто-то вошёл в систему с компьютера тестировщика, аккаунта DevOPS-инженера или разработчика.
На каждый вход в систему и каждое обновление страницы создаётся специальное событие безопасности. Максимум информации заносится в поля события, в Raw попадает строка user fingerprint = <число>
, где число – уникальный идентификатор параметров системы данного пользователя.
Откройте "Cобытия" ⇒ "Поиск по событиям". В графе "Исходный текст (Raw)" отобразится уже упомянутый user fingerprint
с уникальным идентификатором для каждого пользователя, заходившего в систему.
Помимо уникального идентификатора, система собирает и другую информацию о пользователе, такую как разрешение экрана, операционная система, тип и версию браузера и многое другое. Чтобы получить более подробную информацию о пользователе, нажмите на само событие, перед вами откроется окно с информацией о событии. Здесь можно более подробно узнать об интересующем Вас пользователе, например, его браузер и версию браузера, через который был осуществлён вход в систему.
Совместное использование ресурсов между источниками
Для безопасности системы мы ограничиваем возможность обращения к серверу со сторонних адресов и имён.
При смене IP-адреса машины, на которой установлен KOMRAD, необходимо изменить его и в настройках сервера:
# Настройки защиты для Cross-Origin-Resource-Sharing (CORS)
cors:
enabled: true
# При возникновении ошибок с CORS возможный выход - небезопасная настройка `allowedorigins: ["*"]`
# allowedorigins: ["*"]
allowedorigins:
- http://localhost:8080
- https://ip
- https://ip:443
- https://127.0.0.1
- https://127.0.0.1:443
- https://::1
- https://::1:443
- https://name
- https://name:443
- https://localhost
- https://localhost:3400
- https://localhost:443
- https://localhost:9050
# Список FQDN от которых разрешены запросы, если список пустой - запросы со всех
# хостов будут приниматься. Можно использовать регулярные выражения.
AllowedHosts:
- ip
- ip:443
- 127.0.0.1
- 127.0.0.1:443
- "::1"
- "::1:443"
- name
- name:443
- komrad.enterprise.lan
- localhost
- localhost:3400
- localhost:443
- localhost:8080
Перевыпуск сертификатов
Сертификаты имеют срок годности и за ним необходимо следить. Мы рекомендуем проводить смену клиентских сертификатов как можно чаще, поскольку они располагаются на АРМ клиентов и наиболее подвержены компрометации.
Проверить срок действия сертификатов можно командой:
openssl x509 -in /var/lib/echelon/komrad/certs/ca.pem -text -noout | grep "Not After" && openssl x509 -in /var/lib/echelon/komrad/certs/server.pem -text -noout | grep "Not After" && openssl x509 -in /var/lib/echelon/komrad/certs/client.pem -text -noout | grep "Not After"
После выполнения команды будет выведен результат. Если напротив сертификата будет стоять параметр Not After
раньше текущей даты, значит сертификат просрочен, необходимо перевыпустить сертификаты.
Подробнее о доступных флагах для генерации сертификатов здесь
Мы рекомендуем перевыпускать только необходимые сертификаты без перевыпуска корневого.
Если у Вас закончился срок действия корневого сертификата ca.pem
, то перед перевыпуском остальных сертификатов сначала перевыпустите корневой сертификат:
sudo komrad-cli certificates create ca
Затем скопируйте ca.pem
и ca-key.pem
в папки с сертификатами:
sudo cp ca.pem ca-key.pem /var/lib/echelon/komrad/certs/
sudo cp ca.pem /var/lib/echelon/komrad/certs/CAs/
Теперь Вы можете перевыпустить остальные сертификаты.
Выпустить серверный сертификат:
sudo komrad-cli certificates create server --organization "Echelon" localhost 127.0.0.1 $(hostname -I) $(hostname) --ca /var/lib/echelon/komrad/certs/ca.pem --ca-key /var/lib/echelon/komrad/certs/ca-key.pem
Выпустить клиентский сертификат:
sudo komrad-cli certificates create client --ca /var/lib/echelon/komrad/certs/ca.pem --ca-key /var/lib/echelon/komrad/certs/ca-key.pem
Выпустить браузерный сертификат:
sudo komrad-cli certificates create p12 --force /var/lib/echelon/komrad/certs/client-browser.p12
Скопировать сертификаты:
sudo cp client.pem client-key.pem server-key.pem server.pem /var/lib/echelon/komrad/certs/
После необходимо провести изменение владельца файлов на komrad:komrad
и предоставить права сертификатам.
Действия:
sudo chown -R komrad:komrad /var/lib/echelon/komrad/certs
sudo chmod -R 755 /var/lib/echelon/komrad/certs
sudo chmod 0640 /var/lib/echelon/komrad/certs/server-key.pem
sudo chown root:komrad /var/lib/echelon/komrad/certs/server-key.pem
sudo chmod 755 client-browser.p12
Теперь перезапустите каждый сервис Комрада, либо перезагрузите машину командой:
sudo reboot
Если Вы перевыпускали корневой сертификат ca.pem
, то выполните установку корневого сертификата в браузере.