Oracle SQL Firewall nedir ?

4 Haz by Ahmet Duruöz

Oracle SQL Firewall nedir ?

23ai versiyonu ile gelen yeniliklerden olan Oracle SQL Firewall, veritabanı erişimini yalnızca yetkili SQL ifadelerine veya belirlenmiş bir kullanıcı için bağlantılara kısıtlayarak yaygın veritabanı saldırılarına karşı gerçek zamanlı koruma sağlar.

SQL enjeksiyon saldırıları, anormal erişim ve kimlik bilgisi hırsızlığı veya kötüye kullanımı risklerini azaltır, olası SQL enjeksiyon saldırılarını önler veya tespit eder.

SQL Güvenlik Duvarını, veritabanı tarafından hangi SQL ifadelerinin işlenmesine izin verildiğini kontrol etmek için kullanabilirsiniz. Ayrıca, SQL Firewall, veritabanı bağlantılarını kısıtlamak için IP adresi gibi oturum bağlamı verilerini kullanabilir. Yetkisiz SQL ve veritabanı bağlantısı kaydedilebilir ve engellenebilir.

Oracle veritabanlarına yönelik SQL enjeksiyon saldırıları ve yetkisiz SQL sorgularını engellemek için tasarlanmış bir güvenlik özelliğidir.

Oracle SQL Firewall Lisanslama Bilgileri

Oracle SQL Firewall özelliğini kullanabilmek için lisans alınması gerekmektedir. Bu özellik iki farklı şekilde lisanslanabilir:

1. Oracle Database Vault ile Birlikte

2. Oracle Audit Vault and Database Firewall (AVDF) ile Birlikte

 

SQL Firewall Nedir?

SQL Firewall, veritabanına gelen SQL isteklerini analiz ederek:

  • Yetkisiz erişimleri engeller

  • SQL enjeksiyon saldırılarını tespit eder

  • Anormal sorgu desenlerini bloke eder

  • Veritabanı aktivitelerini izler ve raporlar

Temel Özellikleri

  1. SQL İfade Kontrolü: Sadece beyaz listedeki SQL ifadelerine izin verir

  2. Anomali Tespiti: Normal dışı sorgu desenlerini tanır

  3. Bağlam Bilgisi: Kullanıcı, uygulama, zaman gibi bağlamları dikkate alır

  4. Gerçek Zamanlı Koruma: Şüpheli sorguları anında engeller

Kurulum ve Yapılandırma

-- SQL Firewall'u etkinleştirme
BEGIN
  DBMS_SQL_FIREWALL.ENABLE;
END;
/

-- SQL Firewall'u kapatma
BEGIN
  DBMS_SQL_FIREWALL.DISABLE;
END;
/

-- SQL Firewall durumu :
select status from dba_sql_firewall_status;

-- Örnek bir politika oluşturma
BEGIN
  DBMS_SQL_FIREWALL.CREATE_POLICY(
    policy_name => 'HR_POLICY',
    description => 'HR şeması için koruma politikası',
    enabled => TRUE
  );
END;
/

-- Politikaya kural ekleme
BEGIN
  DBMS_SQL_FIREWALL.ADD_ALLOWED_SQL(
    policy_name => 'HR_POLICY',
    sql_text => 'SELECT * FROM employees WHERE employee_id = :1'
  );
END;
/
 

Örnek Senaryolar

Senaryo 1: SQL Enjeksiyon Engelleme

Saldırı Girişimi:

SELECT * FROM users WHERE username = 'admin' AND password = '123' OR '1'='1'
 

SQL Firewall Tepkisi:

  • Bu sorgu normal kullanıcı girişi desenine uymadığı için engellenecek

  • Alarm kaydı oluşturulacak

Senaryo 2: Yetkisiz Tablo Erişimi

Saldırı Girişimi:

SELECT * FROM salary_data WHERE employee_id = 100
 

SQL Firewall Tepkisi:

  • Eğer kullanıcının bu tabloya erişim izni yoksa veya sorgu politika kurallarına uymuyorsa engellenecek

Senaryo 3: Bir kullanıcıyla olan tüm etkileşimleri izlemek için bir yakalama süreci

Yakalamanın başlatılması:

begin
  dbms_sql_firewall.create_capture (
    username       => 'user1',
    top_level_only => true,
    start_capture  => true);
end;
/

Yakalanan işlemlerin görüntülenmesi:

select command_type,
       current_user,
       client_program,
       os_user,
       ip_address,
       sql_text
from   dba_sql_firewall_capture_logs
where  username = 'USER1';

Yakalamanın durdurulması:

exec dbms_sql_firewall.stop_capture('user1');
Yakalama kayıtlarının temizlenmesi:

exec dbms_sql_firewall.flush_logs;

exec dbms_sql_firewall.purge_log('user1', null, dbms_sql_firewall.capture_log);

exec dbms_sql_firewall.purge_log('user1', systimestamp-30, dbms_sql_firewall.violation_log);

exec dbms_sql_firewall.purge_log('user1', systimestamp-30, dbms_sql_firewall.all_logs);

İzleme ve Raporlama

-- Engellenen sorguları görüntüleme
SELECT sql_text, blocked_time, username
FROM dba_sql_firewall_blocked_log
ORDER BY blocked_time DESC;

-- SQL Firewall istatistiklerini görüntüleme
SELECT policy_name, allowed_sql_count, blocked_sql_count
FROM dba_sql_firewall_statistics;

SQL Firewall ile ilgili bilgileri aşağıdaki tablo ve view’lerden görebiliriz :

EVENT_LOG$
FW_ALLOW_LIST$
FW_ALLOW_LIST_CONTEXT$
FW_ALLOW_LIST_SQL$
FW_CAPTURE$
FW_STATUS$
SQL_LOG$
VIOLATION_LOG$


DBA_SQL_FIREWALL_ALLOWED_IP_ADDR
DBA_SQL_FIREWALL_ALLOWED_OS_PROG
DBA_SQL_FIREWALL_ALLOWED_OS_USER
DBA_SQL_FIREWALL_ALLOWED_SQL
DBA_SQL_FIREWALL_ALLOW_LISTS
DBA_SQL_FIREWALL_CAPTURES
DBA_SQL_FIREWALL_CAPTURE_LOGS
DBA_SQL_FIREWALL_SESSION_LOGS
DBA_SQL_FIREWALL_SQL_LOGS
DBA_SQL_FIREWALL_STATUS
DBA_SQL_FIREWALL_VIOLATIONS
 

Avantajları

  1. Güvenlik Artışı: SQL enjeksiyon riskini azaltır

  2. Uyumluluk: PCI DSS, GDPR gibi standartlara uyumu kolaylaştırır

  3. Performans: Zararlı sorguların veritabanı yükü oluşturmasını engeller

  4. Esneklik: İnce ayarlanabilir politika kuralları sunar

Sınırlamalar

  1. Başlangıçta yapılandırma gerektirir

  2. Yanlış yapılandırma yanlış pozitif sonuçlara neden olabilir

  3. Oracle Database Enterprise Edition gerektirir

En İyi Uygulamalar

  1. Önce “öğrenme modu”nda çalıştırın

  2. Politika kurallarını kademeli olarak sıkılaştırın

  3. Düzenli olarak logları gözden geçirin

  4. Kritik şemalar için özel politikalar oluşturun

SQL Firewall, Oracle veritabanı güvenliğini önemli ölçüde artıran ve özellikle hassas verileri korumak için değerli bir araçtır.

SQL Firewall LiveLabs workshop videosuna buradan erişebilirsiniz. 

 

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir