Соңғы бір жылда деректер қорынан көптеген ақпарат ағып кетті
Біздің тәжірибемізде 152-FZ, Cloud-152 талаптарына сәйкес келетін IaaS платформасында ақпараттық қауіпсіздік құралдарының, ОЖ және бағдарламалық қамтамасыз ету журналдарын сақтау және талдау үшін Elasticsearch қолданатынымызды бірден ескертейік.
Біз дерекқордың Интернетке «жабысып» тұрғанын тексереміз
Көптеген белгілі ағып кету жағдайларында (
Алдымен интернетте жариялаумен айналысайық. Неліктен бұл орын алады? Бұл Elasticsearch икемді жұмыс істеуі үшін
Егер сіз кіре алсаңыз, оны жабу үшін жүгіріңіз.
Дерекқорға қосылуды қорғау
Енді біз оны аутентификациясыз дерекқорға қосылу мүмкін болмайтындай етіп жасаймыз.
Elasticsearch-те дерекқорға кіруді шектейтін аутентификация модулі бар, бірақ ол тек ақылы X-Pack плагиндер жинағында қол жетімді (1 ай тегін пайдалану).
Жақсы жаңалық - 2019 жылдың күзінде Amazon X-Pack-пен сәйкес келетін әзірлемелерін ашты. Дерекқорға қосылу кезінде аутентификация функциясы Elasticsearch 7.3.2 нұсқасы үшін тегін лицензия бойынша қолжетімді болды және Elasticsearch 7.4.0 үшін жаңа шығарылым қазірдің өзінде жұмыста.
Бұл плагинді орнату оңай. Сервер консоліне өтіп, репозиторийді қосыңыз:
RPM негізделген:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
DEB негізінде:
wget -qO ‐ https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -
SSL арқылы серверлер арасындағы өзара әрекеттесуді орнату
Плагинді орнату кезінде дерекқорға қосылатын порттың конфигурациясы өзгереді. Ол SSL шифрлауын қосады. Кластер серверлері бір-бірімен жұмыс істеуді жалғастыру үшін SSL арқылы олардың арасындағы өзара әрекеттесуді конфигурациялау қажет.
Хосттар арасындағы сенімділік өзінің сертификаттық органымен немесе онсыз орнатылуы мүмкін. Бірінші әдіспен бәрі түсінікті: сізге CA мамандарына хабарласу жеткілікті. Тікелей екіншісіне көшейік.
- Толық домен атауы бар айнымалы мәнді жасаңыз:
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
- Elasticsearch түйіні үшін сертификаттарды жасаңыз:
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
- Келесі қалтадағы Elasticsearch түйіндерінің арасында сертификатты орналастырыңыз:
/etc/elasticsearch/
бізге файлдар қажет:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem
- Реттеңіз /etc/elasticsearch/elasticsearch.yml – сертификаттары бар файлдардың атауын біз жасағандарға өзгертіңіз:
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
- Elasticsearch қызметіне қосылуға рұқсат беріңіз:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent
- Брандмауэр ережелерін қайта жүктеңіз:
firewall-cmd --reload
- Міне, жұмыс ережелері:
firewall-cmd --list-all
Барлық өзгертулерімізді Elasticsearch жүйесіне қолдану
- Плагині бар қалтаға толық жолы бар айнымалы мәнді жасаңыз:
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
Барлығы, бұл Elasticsearch-ті рұқсат етілмеген қосылымдардан қорғайтын ең төменгі параметрлер.
Ақпарат көзі: www.habr.com