Elastic Stack ile X-Pack Security (Docker)

Cihat Topsakal
3 min readDec 27, 2020

X-Pack Security nedir? ELK Stack ile nasıl çalışır sorularını cevabını bulacağız.

ElasticStack nedir? ve Docker ile kulumu için yazımı okumanızı tavsiye ederim.

X-Pack Security

Elasticsearch kümeniz için kimlik doğrulaması ayarlamanıza, farklı kimlik bilgilerine ve farklı erişim düzeylerine sahip farklı kullanıcılar oluşturmanıza olanak tanır. Verilerinizi parolayla koruyabilir ve iletişim şifreleme, rol tabanlı erişim kontrolü, IP filtreleme ve denetim gibi daha gelişmiş güvenlik önlemleri uygulayabilirsiniz

Aynı zamanda farklı roller oluşturmanıza ve benzer kullanıcıları aynı role atamanıza olanak tanır.

Güvenlik 6.8 sürümünden itibaren temel lisans altında sağlanmıştır.

Deneme süresi 30 gündür. Deneme sürümü sonunda abonelik satın almanızı ister.

X-Pack güvenliğini etkinleştirmek için elasticsearch ve kibana hizmetlerimizi özelleştirmemiz gerekecek.

Docker kullanırken bunu değiştirmenin birçok yolu vardır. Ortam değişkenlerini docker-compose.yml dosyamız üzerinden geçirebiliriz .

Elasticsearch için SSL Sertifikası Oluşturma

SSL, Secure Sockets Layer’ın kısaltmasıdır ve kısaca, bir internet bağlantısını güvende tutmak ve iki sistem arasında gönderilen hassas verileri korumak, suçluların potansiyel kişisel ayrıntılar da dahil olmak üzere aktarılan herhangi bir bilgiyi okumasını ve değiştirmesini engelleyen standart teknolojidir.

TLS , Netscape tarafından geliştirilen Secure Sockets Layer ( SSL ) adlı önceki bir şifreleme protokolünden geliştirilmiştir. TLS sürüm 1.0, aslında SSL sürüm 3.1 olarak geliştirilmeye başladı, ancak protokolün adı, artık Netscape ile ilişkili olmadığını belirtmek için yayınlanmadan önce değiştirildi. Bu geçmiş nedeniyle, TLS ve SSL terimleri bazen birbirinin yerine kullanılır.

PKCS12 nedir?

PKCS12 (Açık Anahtarlı Şifreleme Standartları), sunucu sertifikalarını, varsa ara sertifikayı ve özel anahtarı tek bir şifrelenebilir dosyada depolamak için bir arşiv dosyası biçimini tanımlar.

Proje structure’ını görseldeki gibi ayarlayıp güncellemeleri yapıyoruz.

elasticsearch.yml

kibana.yml

logstash.yml

docker-compose.yml

.yml file güncellemelerinden sonra “docker-compose up” ile container’ları ayağa kaldırıyoruz.

Şimdi serfikaları oluşturmaya başlayacağız. Container’lar ayaktayken aşağıdaki komutu farklı terminal pencerisinde çalıştırarak container içerisine giriyoruz.

docker-compose exec elasticsearch bash

Ardından container içerisinde aşağıdaki komutu çalıştırıyoruz.Bu komut sonrasında, ne yapacağını açıklayan bazı uyarılar oluşturacaktır. Ve sizden dosya adı ve şifre isteyecektir. Devam etmek için ENTER’a basmanız yeterlidir. Ana dizinde “elastic-stack-ca.p12” dosyasını oluşturacaktır. Bu, sertifikayı oluşturmak için kullanacağımız sertifika yetkisidir.

bin/elasticsearch-certutil ca

Ardandan aşağıdaki komutu veriyoruz.

bin/elasticsearch-certutil cert — ca elastic-stack-ca.p12

Oluşan bu dosyalara ana makine dışında ihtiyacımız var çünkü kapsayıcımızı imha ettiğimizde yok olacak.

Bunun için ana makine dışına aşağıdaki komutlar ile kopyalıyoruz. Kopyaladığım dosyaları “elasticsearch-certificates” folder’ı altına taşıdım. Container’dan çıkıyorum ve aşağıdaki komutları veriyorum. Ardından “docker-compose down” ile containerları durduruyorum.

docker cp “$(docker-compose ps -q elasticsearch)”:/usr/share/elasticsearch/elastic-stack-ca.p12 .docker cp “$(docker-compose ps -q elasticsearch)”:/usr/share/elasticsearch/elastic-certificates.p12 .

Windows için;

docker cp elasticsearch:/usr/share/elasticsearch/elastic-stack-ca.p12 .docker cp elasticsearch:/usr/share/elasticsearch/elastic-certificates.p12 .

SSL Sertifikasının Elasticsearch’e Yüklenmesi

Bir önceki başlık altında oluşturduğumuz Sertifikamızı docker-compose.yml içerisinden container’a bağlıyoruz.

docker-compose.yml

Aşağıdaki komut ile containerları başlatıyorum.

docker-compose up -d

Ardından container’lar ayakta iken aşağıdaki komut ile elasticsearch container’ı içerisine tekrar giriyoruz.

docker-compose exec elasticsearch bash

Elastic Stack yapıları için parola üretecek komutu veriyoruz. Burada üretilen passwordleri kayıt etmeniz gerekmektedir.

bin/elasticsearch-setup-passwords auto

Containerları durdurup .yml dosyalarımızı güncelleyeceğiz.

docker-compose down

.yml file’larımzı aşağıdaki gibi güncelliyoruz.

elasticsearch.yml

kibana.yml:

logstash.yml

Ardından tekrar komutunu yürütün.

docker-compose up -d

Artık Kibana’yı (http://localhost:5601/) ziyaret ettiğimizde username ve password ile login olamamızı isteyecektir.

Aynı durum Elasticsearch (http://localhost:9200/) içinde gereklidir.

--

--