Током протекле године било је много цурења из база података
Одмах да резервишемо да у нашој пракси користимо Еластицсеарцх да складиштимо евиденције и анализирамо евиденције алата за безбедност информација, ОС и софтвера у нашој ИааС платформи, која је у складу са захтевима 152-ФЗ, Цлоуд-152.
Проверавамо да ли база података „штрчи“ на Интернет
У већини познатих случајева цурења (
Прво, хајде да се позабавимо објављивањем на Интернету. Зашто се то дешава? Чињеница је да за флексибилнији рад Еластицсеарцх-а
Ако можете да уђете, трчите да га затворите.
Заштита везе са базом података
Сада ћемо то учинити тако да је немогуће повезати се са базом података без аутентификације.
Еластицсеарцх има модул за аутентификацију који ограничава приступ бази података, али је доступан само у плаћеном сету додатака Кс-Пацк (1 месец бесплатног коришћења).
Добра вест је да је у јесен 2019. Амазон отворио свој развој који се преклапа са Кс-Пацк-ом. Функција аутентификације приликом повезивања на базу података постала је доступна под бесплатном лиценцом за верзију Еластицсеарцх 7.3.2, а ново издање за Еластицсеарцх 7.4.0 је већ у припреми.
Овај додатак се лако инсталира. Идите на конзолу сервера и повежите спремиште:
На основу броја обртаја:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
Засновано на ДЕБ-у:
wget -qO ‐ https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -
Подешавање интеракције између сервера преко ССЛ-а
Приликом инсталирања додатка мења се конфигурација порта за повезивање са базом података. Омогућава ССЛ енкрипцију. Да би сервери кластера наставили да раде једни са другима, потребно је да конфигуришете интеракцију између њих користећи ССЛ.
Поверење између хостова може се успоставити са или без сопственог ауторитета за сертификацију. Са првим методом, све је јасно: само треба да контактирате ЦА специјалисте. Пређимо право на другу.
- Направите променљиву са пуним именом домена:
export DOMAIN_CN="example.com"
- Направите приватни кључ:
openssl genrsa -out root-ca-key.pem 4096
- Потпишите роот сертификат. Чувајте га: ако се изгуби или компромитује, поверење између свих хостова ће морати да се поново конфигурише.
openssl req -new -x509 -sha256 -subj "/C=RU/ST=Moscow/O=Moscow, Inc./CN=${DOMAIN_CN}" -key root-ca-key.pem -out root-ca.pem
- Креирајте администраторски кључ:
openssl genrsa -out admin-key-temp.pem 4096 openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
- Направите захтев за потписивање сертификата:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr
- Креирајте сертификат администратора:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem
- Креирајте сертификате за чвор Еластицсеарцх:
export NODENAME="node-01" openssl genrsa -out ${NODENAME}-key-temp.pem 4096 openssl pkcs8 -inform PEM -outform PEM -in ${NODENAME}-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out ${NODENAME}-key.pem
- Направите захтев за потпис:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${NODENAME}.${DOMAIN_CN}" -addext"subjectAltName=DNS:${NODENAME}.${DOMAIN_CN},DNS:www.${NODENAME}.${DOMAIN_CN}" -key ${NODENAME}-key.pem -out ${NODENAME}.csr
- Потписивање сертификата:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem
- Поставите сертификат између чворова Еластицсеарцх у следећој фасцикли:
/etc/elasticsearch/
потребни су нам фајлови:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem
- Прилагоди /етц/еластицсеарцх/еластицсеарцх.имл – промените назив датотека са сертификатима у оне које смо генерисали:
opendistro_security.ssl.transport.pemcert_filepath: node-01.pem opendistro_security.ssl.transport.pemkey_filepath: node-01-key.pem opendistro_security.ssl.transport.pemtrustedcas_filepath: root-ca.pem opendistro_security.ssl.transport.enforce_hostname_verification: false opendistro_security.ssl.http.enabled: true opendistro_security.ssl.http.pemcert_filepath: node-01.pem opendistro_security.ssl.http.pemkey_filepath: node-01-key.pem opendistro_security.ssl.http.pemtrustedcas_filepath: root-ca.pem opendistro_security.allow_unsafe_democertificates: false opendistro_security.allow_default_init_securityindex: true opendistro_security.authcz.admin_dn: − CN=admin,CN=example.com,O=Moscow Inc.,ST=Moscow,C=RU opendistro_security.nodes_dn: − CN=node-01.example.com,O=Moscow Inc.,ST=Moscow,C=RU
Промена лозинки за интерне кориснике
- Користећи наредбу испод, шаљемо хеш лозинке на конзолу:
sh ${OD_SEC}/tools/hash.sh -p [пароль]
- Промените хеш у датотеци у примљени:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
Подешавање заштитног зида у ОС
- Дозволите заштитном зиду да се покрене:
systemctl enable firewalld
- Хајде да га покренемо:
systemctl start firewalld
- Дозволите везу са Еластицсеарцх:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent
- Поново учитајте правила заштитног зида:
firewall-cmd --reload
- Ево правила рада:
firewall-cmd --list-all
Примењујући све наше промене на Еластицсеарцх
- Направите променљиву са пуном путањом до фасцикле са додатком:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"
- Хајде да покренемо скрипту која ће ажурирати лозинке и проверити подешавања:
${OD_SEC}/tools/securityadmin.sh -cd ${OD_SEC}/securityconfig/ -icl -nhnv -cacert /etc/elasticsearch/root-ca.pem -cert /etc/elasticsearch/admin.pem -key /etc/elasticsearch/admin-key.pem
- Проверите да ли су промене примењене:
curl -XGET https://[IP/Имя Elasticsearch]:9200/_cat/nodes?v -u admin:[пароль] --insecure
То је све, ово су минимална подешавања која штите Еластицсеарцх од неовлашћених веза.
Извор: ввв.хабр.цом