Bu eğitimde Prometheus ve Grafana ile SSL/TLS sertifikasının geçerlilik süresinin nasıl izleneceğini öğreneceksiniz. Süresi dolmuş bir SSL/TLS sertifikasının sonuçlarının zaten farkında olduğunuzu varsayarak, bu tür sorunlarla karşılaşmamak için SSL/TLS sertifikalarının nasıl izleneceğini tartışacağız.
Prometheus ve Grafana ile SSL/TLS Sertifikasının Geçerliliğini İzleme
Bu kurulumda Telegraf (sertifika istatistiklerini sorgulamak için), Prometheus ve Grafana’yı barındıran tek bir düğüm kullandığımızı unutmayın.
Grafana’yı kurun ve ayarlayın
Kurulumun önceden yapılmış olması gerekir
Prometheus Sunucusunu Kurun ve Ayarlayın
Kurulumun önceden yapılmış olması gerekir
Telegraf’ı yükleyin ve kurun
Telegraf, veritabanlarından, sistemlerden ve IoT sensörlerinden ölçümleri ve olayları toplamak ve göndermek için kullanılan eklenti odaklı bir sunucu aracısıdır.
Telegraf, yerel dosya veya ağ bağlantısı üzerinden erişilebilen X509 sertifikasına ilişkin istatistikler sağlayan x509_cert eklentisi aracılığıyla. Bu tür istatistikler Prometheus’a gönderilebilir ve burada Grafana kullanılarak görselleştirilebilir.
Telegraf’ı kurmadan önce saatin doğru ayarlandığından emin olun. Telegraf, verilere zaman damgaları atamak için bir ana bilgisayarın UTC’deki yerel saatini kullanır. Ana bilgisayarlar arasında zamanı senkronize etmek için Ağ Zaman Protokolünü (NTP) kullanın; ana bilgisayarların saatleri NTP ile senkronize değilse verilerdeki zaman damgaları hatalı olabilir.
Kurulumumuzda Debian sistemi kullanıyoruz, dolayısıyla Telegraf’ı aşağıdaki gibi kurabilirsiniz;
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
apt update
apt install telegraf
Telegraf’ı Yapılandırma
Telegraf kurulup çalıştırıldığında, Prometheus’un ondan metrikleri çıkarmasını sağlayacak şekilde yapılandırın;
vim
# # Configuration for the Prometheus client to spawn
[[outputs.prometheus_client]]
# ## Address to listen on
listen = "192.168.59.12:9273"
metric_version = 2
Ardından Telegraf’ı, yerel dosyadan veya ağ bağlantısından SSL sertifikası ölçümlerini yoklayacak şekilde yapılandırın.
# # Reads metrics from a SSL certificate
[[inputs.x509_cert]]
# ## List certificate sources
# sources = ["/etc/ssl/certs/ssl-cert-snakeoil.pem", "tcp://example.org:443"]
sources = ["https://kifarunix-demo.com:443"]
insecure_skip_verify = true
Varsayılan giriş eklentilerini devre dışı bırakabilirsiniz: cpu, disk, diskio, çekirdek, mem, işlemler, takas ve sistem, yorum yaparak.
Yapılandırma dosyasını kaydedin ve çıkın.
x509 sertifikası giriş eklentisi ölçümleri şunları içerir;
- x509_cert
- tags:
- source – source of the certificate
- organization
- organizational_unit
- country
- province
- locality
- verification
- serial_number
- signature_algorithm
- public_key_algorithm
- issuer_common_name
- issuer_serial_number
- san
- fields:
- verification_code (int)
- verification_error (string)
- expiry (int, seconds)
- age (int, seconds)
- startdate (int, seconds)
- enddate (int, seconds)
- tags:
Telegraf’ı yeniden başlatın;
systemctl restart telegraf
Prometheus’a Telegraf Hedefi Ekle
Prometheus’un Telegraf tarafından toplanan SSL sertifika metriklerini kazıyabilmesi için prometheus.yml yapılandırmasını açın ve hedefi şu şekilde ekleyin;
- job_name: 'SSL/TLS Certs'
static_configs:
- targets: ['192.168.59.12:9273']
Aşağıdaki yapılandırma dosyama bakın.
vim /etc/prometheus/prometheus.yml
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: 'SSL/TLS Certs'
static_configs:
- targets: ['192.168.59.12:9273']
Dosyayı kaydedin ve çıkın;
Prometheus’u yeniden başlatın;
systemctl restart prometheus
Prometheus Hedefinin durumunu doğrulayın
Prometheus telgraf hedefinin durumunu kontrol edebilirsiniz;
Ayrıca x509* ölçümleri için Prometheus sorgularını kontrol edin.
x509_cert_expiry sorgusunu çalıştırma ve bazı ölçümleri filtreleme. Bu, san değeri içermeyen tüm ölçümleri filtreleyen, kullandığımız x509_cert_expiry{san!=””} süre sonu sorgusudur.
İzleme İçin Prometheus’u Grafana ile Entegre Edin
Artık Prometheus veri kaynağını Grafana’ya ekleyerek Prometheus’u Grafana ile entegre edebilirsiniz. Aşağıdaki bağlantıyı kontrol edin;
İzleme İçin Prometheus’u Grafana ile Entegre Edin
Veri kaynakları, Prometheus veri kaynağını ekledikten sonra.
Using Prometheus and Grafana to Monitor SSL/TLS Certificate Expiry
Prometheus’u Grafana ile entegre ettikten sonra artık Prometheus’u sunucularınızın sertifika ölçümlerini yoklayacak ve bunları görselleştirme için Grafana’ya gönderecek şekilde yapılandırmaya devam edebilirsiniz.
SSL Sertifikası Sona Erme Kontrol Paneli oluşturun.
Sol menü panelinde + (artı işareti) > Kontrol Paneli > Boş panel ekle’ye tıklayın.
Örnek Kontrol Paneli;
Ayarlama işlemini tamamladıktan sonra kontrol panelini kaydedin.
Yukarıdaki kontrol panelimin örnek JSON dosyasını burada bulabilirsiniz;
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": 2,
"links": [],
"panels": [
{
"datasource": null,
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "left",
"filterable": false
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Value #A"
},
"properties": [
{
"id": "unit",
"value": "dtdurations"
},
{
"id": "decimals",
"value": 2
},
{
"id": "custom.displayMode",
"value": "color-background"
},
{
"id": "displayName",
"value": "Expiry Date"
},
{
"id": "thresholds",
"value": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": null
},
{
"color": "semi-dark-orange",
"value": 864000
},
{
"color": "green",
"value": 2592000
}
]
}
}
]
}
]
},
"gridPos": {
"h": 5,
"w": 11,
"x": 0,
"y": 0
},
"id": 2,
"options": {
"frameIndex": 1,
"showHeader": true
},
"pluginVersion": "7.5.2",
"targets": [
{
"exemplar": true,
"expr": "x509_cert_expiry{san!=\"\"}",
"format": "table",
"instant": true,
"interval": "",
"legendFormat": "",
"refId": "A"
}
],
"title": "SSL/TLS Certificate Expiry Status",
"transformations": [
{
"id": "merge",
"options": {}
},
{
"id": "organize",
"options": {
"excludeByName": {
"__name__": true,
"common_name": false,
"host": true,
"instance": true,
"issuer_common_name": true,
"job": true,
"public_key_algorithm": true,
"san": true,
"serial_number": true,
"signature_algorithm": true,
"verification": true,
"verification_error": true
},
"indexByName": {},
"renameByName": {}
}
}
],
"type": "table"
}
],
"schemaVersion": 27,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "SSL/TLS Certificate Expiry Status",
"uid": "nRouqJ_Gk",
"version": 1
}
Yazının orijinalini burada bulabilirsiniz.