Существует несколько подходов к обеспечению безопасности работы сервисов кассового сервера. Ниже описаны три распространенных подхода.
Для обеспечения безопасности конфигурационных файлов необходимо запретить просмотр/редактирование конфигурационных файлов /opt/<название сервиса>/application.properties
всем пользователям, кроме root, командой:
chmod 700 <путь к файлу/директории> |
Операцию нужно повторить с конфигурационными файлами для всех установленных пакетов.
Чтобы не запускать команду вручную, можно написать скрипт, который будет автоматически запускать команду для каждого конфигурационного файла. |
Ограничить доступ к БД можно несколькими способами:
bind-address
:0.0.0.0
,127.0.0.1
.использовать ролевую политику (рекомендованный способ):
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'netroot'@'%'; SHOW GRANTS for `netroot`@`%`; +-------------------------------------+ | Grants for netroot@% | +-------------------------------------+ | GRANT USAGE ON *.* TO `netroot`@`%` | +-------------------------------------+ 1 row in set (0.00 sec) Видно, что прав у пользователя с другого хоста нет (USAGE подразумевает отсутствие прав). При попытке подключиться с другого хоста будет выведена ошибка: mysql> use artixcsAll; ERROR 1044 (42000): Access denied for user 'netroot'@'%' to database 'artixcsAll' |
В целом процесс аналогичен описанному в подразделе MySQL. Чтобы ограничить доступ с других хостов, можно:
/etc/mongod.conf
в настройке bindIp
= 127.0.0.1
(localhost),
|
В целом процесс аналогичен описанному в подразделе MySQL:
listen_addresses
. Подробнее об этом можно прочитать здесь.Этот подход можно использовать только в том случае, когда описанные выше подходы не дали желаемого результата. |
Для управления доступом к БД можно использовать настройки фаервола. Для этого необходимо:
Добавить правило, разрешающее доступ для localhost:
iptables -I INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT |
Запретить всем доступ к порту 3306:
iptables -A INPUT -p tcp --dport 3306 -j DROP |
При необходимости в начало цепочки добавить правило, разрешающее доступ избранным ip:
iptables -I INPUT -p tcp -s 192.169.11.11 --dport 3306 -j ACCEPT |
В результате получится таблица с правилами для нужных ip:
1 ACCEPT tcp -- 192.169.11.11 anywhere tcp dpt:mysql 2 ACCEPT tcp -- 192.169.11.111 anywhere tcp dpt:mysql 3 DROP tcp -- anywhere anywhere tcp dpt:mysql
Для безопасной авторизации необходимо заменить логин и пароль по умолчанию во всех БД и сервисах с авторизацией по REST.
rest.port=38051 rest.host=localhost rest.user=admin1 rest.password=admin1 |
Заменим в его конфигурационном файле логин (rest.user
) и пароль (rest.password
) до ядра КЦ. Если на ядре существует пользователь с таким логином и паролем, то сервис должен авторизоваться без ошибок.
Приведем список основных сервисов, имеющих настройки подключения к БД:
artixcs-rest (mongodb, mysql, postgresql),
artixcs-clickhouse-rest (mysql, postgresql),
сервис обмена (nes),
сервис tomcat8-artix,
artixcs-datatransfer (mysql, mssql),
artixcs-counters (postgresq),
artixcs-undercut-asset,
artixcs-online-card,
accrual-bonus (доступ к БД счетчиков),
artixcs-sales-ws,
сервисы лояльности:
artixcs-accounting-coupons,
artixcs-accounting-bonuses,
artixcs-accounting-bonuses-certificates,
artixcs-accounting-certificates.
Чтобы изменить данные для подключения к БД (например, имя пользователя или хост), в /opt/artixcs-rest/application.properties
необходимо добавить настройки (если по умолчанию они там отсутствуют):
mysql.host=<хост> mysql.port=<порт> mysql.user=<логин> mysql.password=<пароль> |
В пароле для БД MySQL не рекомендуется использовать символы:
|
postgresql.host=<хост> postgresql.port=<порт> postgresql.user=<логин> postgresql.password=<пароль> |
Такой подход работает для:
сервисов artixcs-rest,
В остальных сервисах настройки подключения уже указаны в |
P.S. Также для более безопасной передачи данных на КЦ реализована возможность принимать продажи по протоколу https и отправлять https -запросы через сервис artixcs-rest-routing . |