dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Runbook #46
oracle
SecuritySEV2 · CİDDİ BOZULMA15-30 dakika / 15-30 minsSYSDBA / DBA / SELECT_CATALOG_ROLE

Oracle ORA-01017 Başarısız Login Artışı: Güvenlik ve Konfigürasyon Triyajı

Geçersiz kullanıcı/şifre denemelerini kaynak ve hesap bazında ayırır; uygulama sırrı hatası ile kötü niyetli girişimleri güvenli biçimde teşhis eder.

İlişkili Metrik:M47
İlişkili Script:S76
#ora-01017#failed-login#audit#account-lock#security

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

- `ORA-01017: invalid username/password; logon denied` artışı; M47 alarmı.

- `ORA-28000: the account is locked` beraber görülebilir; uygulama oturum açma hatası üretir.

2. Etki / Impact

Geçerli kullanıcılar kilitlenebilir; uygulama erişimi düşer. Kimlik doğrulama saldırısı veya hatalı dağıtım söz konusu olabilir.

3. Teşhis / Diagnosis

🟢 Salt Okunur1. Önce **Unified Auditing etkin mi** kontrol edin; erişiminiz varsa son başarısız girişleri kaynak ve kullanıcı bazında özetleyin (12c/19c):
sql
SELECT dbusername, userhost, COUNT(*) AS failures,
       MIN(event_timestamp) AS first_seen, MAX(event_timestamp) AS last_seen
FROM unified_audit_trail
WHERE return_code = 1017
  AND event_timestamp >= SYSTIMESTAMP - INTERVAL '1' HOUR
GROUP BY dbusername, userhost
ORDER BY failures DESC;

Audit policy giriş denemelerini kaydetmiyorsa boş sonuç **girişim olmadığı anlamına gelmez**.

🟢 Salt Okunur2. Geleneksel denetim açıksa (`DBA_AUDIT_SESSION`):
sql
SELECT username, userhost, COUNT(*) AS failures
FROM dba_audit_session
WHERE returncode = 1017 AND timestamp >= SYSDATE - 1/24
GROUP BY username, userhost
ORDER BY failures DESC;
🟢 Salt Okunur3. S76 ile hesabın durumu/profilini görün; varsayılan şifreli/yüksek yetkili hesapları denetleyin:
sql
SELECT username, account_status, lock_date, profile
FROM dba_users
WHERE username = 'APP_USER';
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_name IN ('FAILED_LOGIN_ATTEMPTS','PASSWORD_LOCK_TIME');
🟢 Salt Okunur4. Başarısızlık yeni deployment, döndürülmüş secret veya tek uygulama host'u ile eşleşiyor mu? Kaynak IP/proxy eşlemesini listener/uygulama loglarıyla doğrulayın. **Parolayı veya hash'i loglara/sohbete kopyalamayın.**

4. Müdahale / Response

🟡 Geri Alınabilir1. Tek uygulama kaynaklıysa credential yönetiminde doğru **kayıtlı secret** sürümünü uygulayın ve havuzdaki eski bağlantıları kademeli yenileyin; parolayı komut satırında veya dökümanda açık yazmayın.
🟡 Geri Alınabilir2. Kötü niyetli kaynak teyit edilirse ağ erişimini onaylı firewall/ACL prosedürüyle sınırlandırın; ilgili hesabı uygulama sahibiyle koordine edin.
🔴 YÜKSEK RİSK / GERİ ALINAMAZ3. Hesap kilitliyse **neden düzeltilmeden `ALTER USER APP_USER ACCOUNT UNLOCK;` komutunu tekrarlamayın**, aksi halde tekrar kilitlenir. Yetkili onay ve parola sıfırlama prosedürüne uyun.
🟡 Geri Alınabilir4. Uzun vadede denetim politikasının başarısız logon'ları kaydettiğini ve erişim kapsamının sınırlandırıldığını doğrulayın; 12c/19c arasında geleneksel ile unified audit yapılandırmasını kurum standartlarına göre seçin.

5. Doğrulama / Verification

- Hatalı giriş hızı düşüyor, M47 normale döndü; yetkili uygulama hesabı başarıyla bağlanıyor.

- Kilitlenme tekrarlamıyor; olayın kaynak host'u ve nedeni kayıt altına alındı.

6. Geri Alma / Rollback

- Ağ erişim kısıtlaması yanlış pozitifse değişiklik kaydına göre geri alınır; önce saldırı durumu teyit edilir.

- Secret rotasyonu/hesap kilidi değişikliği kurumun güvenli kimlik yönetim prosedürüyle geri alınır. Başarısız denemeleri silmek veya denetimi kapatmak çözüm değildir.

Diğer ORACLE Runbook'ları