dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Runbook #19
mysql
SecuritySEV2 · CİDDİ BOZULMA15-30 dakika / 15-30 minsSUPER / CONNECTION_ADMIN / RELOAD / REPLICATION CLIENT

MySQL Başarısız Bağlantılar Arttı: Kimlik Doğrulama ve Ağ İncelemesi

Aborted_connects artışını hesap hatası, TLS/ağ ve olası saldırı olarak sınıflandırır; kaynak hesapları ve istemcileri doğrulayarak güvenli müdahale sunar.

İlişkili Metrik:M19
İlişkili Script:S35S28
#aborted-connects#authentication#host-cache#tls

Operasyonel Güvenlik ve Risk Uyarısı

Bu runbook müdahale adımları içerir; birçok adım yazma etkilidir (KILL, terminate, DROP, RESIZE). Önce test ortamında deneyin, üretimde adımları sırayla ve doğrulayarak uygulayın.

🟢 Salt Okunur (Read-Only)·🟡 Geri Alınabilir (Reversible)·🔴 Yüksek Etkili / Geri Alınamaz (High Impact)

1. Belirti / Symptom

- M19 (`Aborted_connects`) artışı, `Access denied`, `Host ... is blocked` veya uygulamada bağlantı reddi.

2. Etki / Impact

Meşru bağlantılar kesilir; yanlış parola dağıtımı, auth eklentisi uyumsuzluğu, TLS veya brute-force ihtimali vardır. `Aborted_connects` her zaman saldırı demek değildir.

3. Teşhis / Diagnosis

🟢 Salt Okunur1. İki örnek alıp farkı ve host cache hata sınıflarını (varsa) kaydedin:
sql
SHOW GLOBAL STATUS WHERE Variable_name IN ('Aborted_connects','Connection_errors_max_connections','Uptime');
SELECT IP, HOST, SUM_CONNECT_ERRORS, COUNT_AUTHENTICATION_ERRORS,
       COUNT_HOST_BLOCKED_ERRORS, COUNT_HANDSHAKE_ERRORS, COUNT_SSL_ERRORS,
       FIRST_SEEN, LAST_SEEN
FROM performance_schema.host_cache
ORDER BY SUM_CONNECT_ERRORS DESC LIMIT 20;

Host cache ve error log kayıtları sürüme/yapılandırmaya göre sınırlı olabilir; varsa firewall/LB loguyla eşleştirin.

🟢 Salt Okunur2. S35 ile hesabın host eşleşmesi, kilitli oluşu, süresi ve auth plugin'ini; S28 ile mevcut bağlantıların kaynak dağılımını inceleyin. Parola/hash değerlerini log'a veya rapora koymayın.
🟢 Salt Okunur3. `SHOW GLOBAL VARIABLES LIKE 'require_secure_transport';` ve istemci sürümünü karşılaştırın. MySQL 8.0'da `caching_sha2_password` kullanan hesabın eski istemciyle uyumsuzluğunu araştırın.
🟢 Salt Okunur4. `max_connect_errors` eşiği aşılmışsa `host_cache` içindeki engellenen IP'yi doğrulayın; altta yatan ağ/handshake nedenini çözmeden açmak kalıcı değildir.

4. Müdahale / Response

🟡 Geri Alınabilir1. Meşru servis ise yapılandırma dağıtımını düzeltin, doğru host/port/TLS ve yetkileri uygulama ekibiyle doğrulayın. Parolayı güvenli secret yönetimi üzerinden döndürün, bu runbook'a değer yazmayın.
🟡 Geri Alınabilir2. Kötü niyetli kaynak doğrulanmışsa firewall/LB üzerinden kısıtlayın ve güvenlik ekibine bildirin; paylaşılan NAT IP'sini körlemesine bloklamayın.
🟡 Geri Alınabilir3. `FLUSH HOSTS;` **tüm host cache engellerini temizler**, yalnızca geçici/yanlış engellemeyi doğruladıktan sonra ve etkisini anlayarak uygulayın; sürümde desteklenen `TRUNCATE TABLE performance_schema.host_cache;` de benzer yan etkiye sahiptir.
🔴 YÜKSEK RİSK / GERİ ALINAMAZ4. `skip-grant-tables` ile kimlik doğrulamayı devre dışı bırakmayın; tüm veritabanını riske atar.

5. Doğrulama / Verification

- İlgili uygulama yeniden bağlanır; M19/baz çizgi, auth ve handshake hataları normale döner.

- Kaynak IP/kullanıcı eşleşmesi belgelenir; saldırı şüphesinde denetim kayıtları korunur.

6. Geri Alma / Rollback

- Firewall kuralını yalnızca gerçekten yanlış engelleme varsa geri alın; geçici hesap/host değişikliklerini eski değerlere döndürün.

- `FLUSH HOSTS` ile temizlenen sayaçlar ve kayıtlar geri getirilemez; öncesinde kanıtı saklayın.

Diğer MYSQL Runbook'ları