12. Приложение Б Проверка целостности приложений
Проверка целостности исполняемых файлов агента выполняется с целью защиты от возможных несанкционированных изменений исполняемых файлов, производится на основании контрольной суммы файлов, посчитанной с помощью ГОСТ алгоритмов.
Для проведения проверки, необходимо наличие установленной CryptoPro CSP 5.0 R2 на сервере notarius (см. Раздел 6.3).
На сервер einfahrt скопировать с сервера notarius файл /opt/cprocsp/bin/amd64/cpverify, в рабочий каталог приложений (в данном документе
в качестве примера указан путь /distr/einfahrt для einfahrt).
Также в рабочие каталоги einfahrt и notarius (в данном документе в качестве примера указан путь /dist/notarius для notarius, для einfahrt см. выше)
необходимо выложить:
файл
GR3411sum, содержащий контрольные суммы компонентов Агента. Содержимое приведено ниже, его следует скопировать в указанный файл.файл
tamper_check.sh, который осуществляет проверку контрольных сумм компонентов Агента. Содержимое также приведено ниже, его следует скопировать в указанный файл.
Файлу tamper_check.sh следует установить признак исполняемого файла:
chmod +x tamper_check.sh
Для проверки контрольной суммы следует выполнить команду:
./tamper_check.sh application_name
где application_name - приложение, запускаемое на данном сервере (notaris, einfahrt).
По результатам выполнения проверки, будет выдано сообщение об успешном, либо неуспешном завершении.
Внимание
В случае сообщения об ошибке, запуск компонентов агента запрещается по условиям безопасности.
Также данный скрипт подходит для выполнения проверки в автоматическом режиме: в случае успешной проверки он возвращает код завершения 0, при неуспешной - код завершения 1.
Контрольные суммы приложений в данном релизе (файл GR3411sum):
DF44CD07AEA504DC9BEE6257C6057A9B49BD1F28A87C5421A42F8FBBC7AB00EB einfahrt
6E1B7D4AC6EE1F7E0E8A8F348045FA00D89E17030D29E4F2C03A18AD4D4CB3D4 notarius
Скрипт проверки целостности (файл tamper_check.sh):
#!/bin/bash
REFERENCE_FILE="GR3411sum"
usage()
{
echo "Usage: $(basename $0) einfahrt|notarius"
echo "Parameter (application name) is a must!"
exit 1
}
[ "x$1" == "x" ] && usage
case $1 in
"einfahrt"|"prohibitor")
APP="app/app.jar"
;;
"notarius")
APP="notarius_server_http"
;;
*)
usage
;;
esac
[[ ! -f ${REFERENCE_FILE} ]] && { echo "ERROR: Reference file ${REFERENCE_FILE} not found"; exit 1; }
[[ ! -f ${APP} ]] && { echo "ERROR: $1 application executable file ${APP} not found"; exit 1; }
CPVERIFY=$(which cpverify)
if [ -z ${CPVERIFY} ]; then
for CPVERIFY in "/opt/cprocsp/bin/amd64/cpverify" "./cpverify"; do
eval ${CPVERIFY} >/dev/null 2>&1
[ $? -eq 0 ] && break
done
fi
[[ -z ${CPVERIFY} ]] && { echo "ERROR: cpverify utility not found!"; exit 1; }
EXPECTED_SUM=$(grep $1 ${REFERENCE_FILE}| cut -d" " -f1)
[[ -z ${EXPECTED_SUM} ]] && { echo "ERROR: reference checksum for $1 application is not defined"; exit 1; }
REAL_CHECKSUM=$(${CPVERIFY} -mk -alg GR3411_2012_256 ${APP})
echo -e "${EXPECTED_SUM} is an expected checksum for $1;\n${REAL_CHECKSUM} is a real checksum"
[[ ${REAL_CHECKSUM} == ${EXPECTED_SUM} ]] && { echo "OK: checksum matched"; exit 0; } || { echo "ERROR: Real checksum do not match with expected!"; exit 1; }
Проверка целостности должна производиться в следующих случаях:
при установке или обновлении агента: вручную администратором;
по расписанию, не реже чем раз в полгода: вручную администратором;
при использовании СКЗИ класса КС2 требуется настроить автоматический контроль целостности файла notarius_server_http на старте работы сервера с использованием АПМДЗ из состава СКЗИ «CryptoPro CSP 5.0R2» в соответствии с документацией на АПМДЗ.