Bu örneğimizde, Ubuntu 14.04 ortamında SSL ile log iletimini WEB sunucusu (Filebeat'in kurulu olduğu sunucu) üzerinden ELK sunucusuna (Elasticsearch Logstash Kibana (ELK kümesi) kurulu olduğu sunucu) yapacağız. Filebeat, Apache ulaşım kayıtlarını WEB sunucusu üzerinden ELK sunucusundaki Logstash'a iletecek. Örneğimiz bu şekilde çalışıyor.


ELK sunucusu


SSL ile ilgili klasörleri yaratmak.


$ sudo mkdir -p /etc/pki/tls/certs
$ sudo mkdir /etc/pki/tls/private

Öncelikle [ v3_ca ] satırını bulun ve aşağıdaki satırı hemen altına ekleyin. Bu "TLS handshake" hatasını engellemek içindir.


$ sudo nano /etc/ssl/openssl.cnf
subjectAltName = IP: 192.168.50.40

Sertifika ve gizli anahtar yaratma.


$ cd /etc/pki/tls
$ sudo openssl req -config /etc/ssl/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Sertifikayı WEB sunucusuna kopyalama.


$ sudo scp /etc/pki/tls/certs/logstash-forwarder.crt vagrant@192.168.50.50:/tmp

Logstash konfigürasyon dosyasındaki "input" bloğunu yenileme. Konfigürasyon dosyanızın çalışır vaziyette olduğunu varsayıyorum ve sadece "input" bloğuyla ilgileniyorum.


$ sudo nano /etc/logstash/conf.d/web-apache-access.conf
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}

Konfigürasyon dosyasını doğrulama 10 saniye alır.


$ sudo /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/web-apache-access.conf
Configuration OK

Logstash'ı durdurup yeniden başlatma.


$ sudo service logstash stop
$ sudo service logstash start

WEB sunucusu


Aşağıda da gördüğümüz gibi sertifika başarıyla kopyalanmış durumda.


$ ls -l /tmp/
-rw-r--r-- 1 vagrant vagrant 1229 Jul 1 18:24 logstash-forwarder.crt

SSL ile ilgili klasörü yaratmak.


$ sudo mkdir -p /etc/pki/tls/certs

Sertifikayı kopyalama.


$ sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

Filebeat konfigürasyon dosyasındaki "tls" bloğunu yenileme.


output:
logstash:
tls:
certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

Filebeat'i durdurup yeniden başlatma.


$ sudo service filebeat stop
$ sudo service filebeat start

Logstash sunucusunun sertifikasını doğrulama.


$curl -v --cacert /etc/pki/tls/certs/logstash-forwarder.crt https://192.168.50.40:5044

* Rebuilt URL to: https://192.168.50.40:5044/
* Hostname was NOT found in DNS cache
* Trying 192.168.50.40...
* Connected to 192.168.50.40 (192.168.50.40) port 5044 (#0)
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/logstash-forwarder.crt
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using ECDHE-RSA-AES128-SHA256
* Server certificate:
* subject: C=AU; ST=Some-State; O=Internet Widgits Pty Ltd
* start date: 2017-07-01 00:52:04 GMT
* expire date: 2027-06-29 00:52:04 GMT
* subjectAltName: 192.168.50.40 matched
* issuer: C=AU; ST=Some-State; O=Internet Widgits Pty Ltd
* SSL certificate verify ok.
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: 192.168.50.40:5044
> Accept: */*
>
* SSLv3, TLS alert, Client hello (1):
* Empty reply from server
* Connection #0 to host 192.168.50.40 left intact
curl: (52) Empty reply from server