dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Runbooks Library/oracle/#46
Runbook #46
oracle
SecuritySEV2 · DEGRADATION15-30 dakika / 15-30 minsSYSDBA / DBA / SELECT_CATALOG_ROLE

Oracle ORA-01017 Failed Login Spike: Security and Configuration Triage

Groups invalid credentials by source and account to distinguish broken application secrets from malicious login attempts safely.

Related Metrics:M47
Related Scripts:S76
#ora-01017#failed-login#audit#account-lock#security

Operational Safety & Risk Notice

This runbook contains operational intervention steps; several are write-impacting (KILL, terminate, DROP, RESIZE). Verify in a staging environment first, and apply sequentially in production with verification.

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

1. Symptom & Signals

- `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. Business & Technical 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. Diagnosis & Root-Cause Analysis

🟢 Read-Only1. Ö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**.

🟢 Read-Only2. 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;
🟢 Read-Only3. 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');
🟢 Read-Only4. 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. Remediation & Action Plan

🟡 Reversible1. 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.
🟡 Reversible2. 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.
🔴 HIGH RISK / IRREVERSIBLE3. 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.
🟡 Reversible4. 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. Verification & Health Checks

- 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. Rollback & Contingency Plan

- 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.

More ORACLE Runbooks