Geçtiğimiz yıl boyunca veritabanlarından çok sayıda sızıntı yaşandı
Uygulamamızda 152-FZ, Cloud-152 gereksinimlerine uygun IaaS platformumuzda bilgi güvenliği araçları, işletim sistemi ve yazılımlara ait logları depolamak ve logları analiz etmek için Elasticsearch'ü kullandığımıza hemen rezervasyon yaptıralım.
Veritabanının İnternet'e "yapışıp yapışmadığını" kontrol ediyoruz
Bilinen sızıntı vakalarının çoğunda (
Öncelikle internette yayınlama konusunu ele alalım. Bu neden oluyor? Gerçek şu ki, Elasticsearch'ün daha esnek çalışması için
İçeri girebilirsen koşarak kapat.
Veritabanına olan bağlantıyı koruma
Şimdi bunu, kimlik doğrulama olmadan veritabanına bağlanmayı imkansız hale getireceğiz.
Elasticsearch'ün veritabanına erişimi sınırlayan bir kimlik doğrulama modülü vardır, ancak bu yalnızca ücretli X-Pack eklenti setinde mevcuttur (1 aylık ücretsiz kullanım).
İyi haber şu ki Amazon, X-Pack ile örtüşen geliştirmelerini 2019 sonbaharında açtı. Bir veritabanına bağlanırken kimlik doğrulama işlevi, Elasticsearch 7.3.2 sürümü için ücretsiz lisans kapsamında kullanılabilir hale geldi ve Elasticsearch 7.4.0 için yeni bir sürüm halihazırda yapım aşamasındadır.
Bu eklentinin kurulumu kolaydır. Sunucu konsoluna gidin ve depoyu bağlayın:
RPM Tabanlı:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
DEB Tabanlı:
wget -qO ‐ https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -
SSL aracılığıyla sunucular arasında etkileşim kurma
Eklentiyi kurarken veritabanına bağlanan portun konfigürasyonu değişir. SSL şifrelemesini etkinleştirir. Küme sunucularının birbirleriyle çalışmaya devam edebilmesi için aralarındaki etkileşimi SSL kullanarak yapılandırmanız gerekir.
Ana bilgisayarlar arasında güven, kendi sertifika yetkilisi olsun veya olmasın kurulabilir. İlk yöntemle her şey açıktır: CA uzmanlarıyla iletişime geçmeniz yeterlidir. Hemen ikinciye geçelim.
- Tam alan adına sahip bir değişken oluşturun:
export DOMAIN_CN="example.com"
- Özel bir anahtar oluşturun:
openssl genrsa -out root-ca-key.pem 4096
- Kök sertifikayı imzalayın. Güvende tutun: Kaybolursa veya ele geçirilirse tüm ana bilgisayarlar arasındaki güvenin yeniden yapılandırılması gerekecektir.
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
- Yönetici anahtarı oluşturun:
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
- Sertifikayı imzalamak için bir istek oluşturun:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr
- Yönetici sertifikası oluşturun:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem
- Elasticsearch düğümü için sertifikalar oluşturun:
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
- Bir imza isteği oluşturun:
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
- Sertifikanın imzalanması:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem
- Sertifikayı aşağıdaki klasördeki Elasticsearch düğümleri arasına yerleştirin:
/etc/elasticsearch/
dosyalara ihtiyacımız var:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem
- özelleştirilebilir /etc/elasticsearch/elasticsearch.yml – Sertifikalı dosyaların adını bizim tarafımızdan oluşturulanlarla değiştirin:
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
Dahili kullanıcılar için şifreleri değiştirme
- Aşağıdaki komutu kullanarak şifre karmasını konsola çıktılıyoruz:
sh ${OD_SEC}/tools/hash.sh -p [пароль]
- Dosyadaki karmayı alınan karmayla değiştirin:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
İşletim sisteminde bir güvenlik duvarı kurma
- Güvenlik duvarının başlamasına izin ver:
systemctl enable firewalld
- Hadi başlatalım:
systemctl start firewalld
- Elasticsearch'e bağlantıya izin ver:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent
- Güvenlik duvarı kurallarını yeniden yükleyin:
firewall-cmd --reload
- İşte çalışma kuralları:
firewall-cmd --list-all
Tüm değişikliklerimizi Elasticsearch'e uyguluyoruz
- Eklentinin bulunduğu klasörün tam yolunu içeren bir değişken oluşturun:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"
- Şifreleri güncelleyecek ve ayarları kontrol edecek bir komut dosyası çalıştıralım:
${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
- Değişikliklerin uygulanıp uygulanmadığını kontrol edin:
curl -XGET https://[IP/Имя Elasticsearch]:9200/_cat/nodes?v -u admin:[пароль] --insecure
Hepsi bu kadar, bunlar Elasticsearch'ü yetkisiz bağlantılardan koruyan minimum ayarlardır.
Kaynak: habr.com