veritabanı güvenliği - wordpress.com · veritabanı güvenliği oracle - kullanıcı yönetimi...

Post on 13-Jul-2020

9 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Veritabanı GüvenliğiNisan 2018

Y. Anıl Akduyguhttps://yusufanilakduygu.wordpress.com/

https://yusufanilakduygu.wordpress.com/2018/05/07/veritabani-guvenligi-notlari/https://www.dbsecurity.info/

https://github.com/yusufanilakduygu/Oracle-DB-Security-Checkshttp://www.dr.com.tr/Kitap/Oracle-Veritabani-Guvenligi/Anil-Akduygu/Egitim-Basvuru/Bilgisayar/urunno=0000000712597

Veritabanı Güvenliği

Veritabanı Güvenliği

Güvenlik Tabakaları – Security Layers

Veritabanı Güvenliği

Veritabanına Yönelik Tehditler

Veritabanı Güvenliği

Veritabanı Server Güvenliği

• Veritabanının bulunduğu server; fiziksel olarak güvenli bir ortamda bulunmalıdır• Server’a gereksiz kişilerin erişimi engellenmelidir.• Veritabanı sunucusunda; uygulama veya web servisi veren yazılımlar çalışmamalıdır.• Veritabanı sunucusu bir Firewall’un arkasında olmalıdır.

• Oracle veritabanı yöneticilerinin; işletim sisteminde ayrı hesapları olmalıdır.• Oracle için ortak kullanılan oracle işletim sistemi kullanıcısı sadece

yazılım güncellemelerinde kullanılmalıdır.• MS SQL Server yönetimi için ayrı bir İşletim sistemi hesabı yaratılmalı ve bu hesap

Administrator’den farklı olmalıdır.

Veritabanı Güvenliği

Popüler Veritabanları

Veritabanı Güvenliği

VERİTABANI YAZILIM GÜVENLİĞİ

• Desteklenen Sürümler• Güvenlik Yamaları

Veritabanı Güvenliği

Veritabanı Sürümleri

Veritabanlarımız Destek edilen versiyonlarda olmalıdır.

Veritabanı Güvenlik yamaları takip edilmeli ve en son güvenlik yamaları uygulanmalıdır.

Veritabanı Güvenliği

Oracle Veritabanı Support Lifecycle

https://www.oracle.com/support/lifetime-support/index.html

Veritabanı Güvenliği

MS SQL Server Support Lifecycle

https://support.microsoft.com/en-us/lifecycle/search/1044

Veritabanı Güvenliği

Microsoft SQL Server Sürümleri

https://support.microsoft.com/en-us/lifecycle/search/?ln=en-us&c2=1044

Veritabanı Güvenliği

Oracle Veritabanı Sürüm Kontrolleri

Select banner from v$version

Veritabanı Güvenliği

MS SQL Server Sürüm Kontrolleri

Select @@version

Veritabanı Güvenliği

Oracle Veritabanı Güvenlik Yamaları

https://www.oracle.com/technetwork/topics/security/alerts-086861.html

Veritabanı Güvenliği

Oracle Veritabanı Güvenlik Yamaları

Veritabanı Güvenliği

MS SQL Server Veritabanı Güvenlik Yamaları

https://technet.microsoft.com/en-us/library/ff803383.aspx

Veritabanı Güvenliği

MS SQL Server Veritabanı Güvenlik Yamaları

https://support.microsoft.com/en-us/help/321185/how-to-determine-the-version-edition-and-update-level-of-sql-server-an

Veritabanı Güvenliği

Oracle Veritabanı Güvenlik Yamaları Kontrol

Select * from registry$history;

SELECT * FROM DBA_REGISTRY_HISTORY

Veritabanı Güvenliği

MS SQL Server Veritabanı Güvenlik Yamaları Kontrol

SELECTSERVERPROPERTY('ProductVersion') AS ProductVersion,SERVERPROPERTY('ProductLevel') AS ProductLevel,SERVERPROPERTY('edition') AS Edition,SERVERPROPERTY('ProductUpdateLevel') AS ProductUpdateLevel,SERVERPROPERTY('ProductBuildType') AS ProductBuildType,SERVERPROPERTY('ProductUpdateReference') AS ProductUpdateReference,SERVERPROPERTY('ProductMajorVersion') AS ProductMajorVersion,SERVERPROPERTY('ProductMinorVersion') AS ProductMinorVersion,SERVERPROPERTY('ProductBuild') AS ProductBuild

Veritabanı Güvenliği

MS SQL Server Veritabanı Güvenlik Yamaları Kontrol

Veritabanı Güvenliği

Veritabanına Erişim – Database Access

Bir Veritabanına Erişirken Kullanılan Parametreler

• Host• Port• Kullanıcı Adı• Şifre• Veritabanı Adı

Bu parametreler bilindiği taktirde ağ üzerinde bir kısıtlama yoksa veritabanına erişim sağlanır.

Veritabanı Güvenliği

Oracle ve MS SQL Server Veritabanına Erişim

Oracle Veritabanına Erişirken Kullanılan Parametreler

• Host• Port• Kullanıcı Adı• Şifre• SID veya Servis Adı

MS SQL Server Veritabanına Erişirken Kullanılan Parametreler

• Host• Port• Kullanıcı Adı• Şifre• Veritabanı Adı

Veritabanı Güvenliği

Oracle Veritabanına Ağ üzerinde Erişim

Oracle ‘ın koştuğu sunucu üzerinde LISTENER adı verilen bir dinleyici prosess çalışır.Bu prosess’de veritabanına bağlantı için kullanılacak

• Host• Port• SID veya Servis Adı

Parametreleri tanımlanır.

Veritabanı Güvenliği

Oracle Veritabanına Ağ üzerinde Erişim

Veritabanı Güvenliği

Oracle Veritabanına Ağ üzerinde Erişim

Veritabanı Güvenliği

Oracle Veritabanına Ağ üzerinde Erişim Güvenliği sağlamak için

• Default Oracle Listener portlarını kullanmamalıyız• Default Oracle SID ve Server Adlarını kullanmamalıyız• Tahmin edilebilecek ( Örneğin Kurum Adı ) SID ve Servis adları kullanmamalıyız

Oracle Default Portları 1521 ve 1526 arası portlardır.

Default Oracle SID list

http://www.red-database-security.com/scripts/sid.txt

• ORCL

• XE

• ASDB

• IASDB

• OEMREP

Veritabanı Güvenliği

Oracle Veritabanı Network üzerinden Bilgi Toplama Port tahmin Etme

nmap -sV -O -p 1521 192.168.0.26

nmap -sV -O -p 1521 – 1527 192.168.0.26

Veritabanı Güvenliği

Oracle Veritabanı Network üzerinden Bilgi Toplama SID tahmin Etme

nmap --script=oracle-sid-brute -p 1521 192.200.11.9

Veritabanı Güvenliği

MS SQL Server Veritabana Ağ üzerinden Erişim

Veritabanı Güvenliği

MS SQL Server Veritabana Ağ üzerinden Erişim

Aşağıdaki Default MS SQL Server Database Deafult Portları kapalı olmalıdır.

Veritabanı Güvenliği

MS SQL Server Veritabana Ağ üzerinden Erişim

Eğer bir tek default instance ile çalışıyorsanız SQL Server Browser kapalı olmalıdır.

Veritabanı Güvenliği

MS SQL Server Veritabanı Network Üzerinden Bilgi Toplama

nmap -p 1433 192.168.0.29

Veritabanı Güvenliği

MS SQL Server Veritabanı Network Üzerinden Bilgi Toplama

nmap -p 1433 --script ms-sql-info --script-args mssql.instance-port=1433 192.168.0.29

Veritabanı Güvenliği

MS SQL Server Veritabana Ağ üzerinden Bilgi Paylaşımını Engelleme

Veritabanı Güvenliği

MS SQL Server Veritabanı Network Üzerinden Bilgi Toplama

nmap -p 1433 --script ms-sql-info --script-args mssql.instance-port=1433 192.168.0.29

Veritabanı Güvenliği

MS SQL Server Veritabanı Network Üzerinden Bilgi Toplama

nmap -sV -O -p 1433 192.168.0.24

Veritabanı Güvenliği

VERİTABANI KULLANICILARI

Veritabanı Güvenliği

ORACLE - Kullanıcı Yönetimi – User Management

Oracle 11g sürümünde bulunan varsayılan kullanıcı adları aşağıdaki gibidir.

'ANONYMOUS','CTXSYS','DBSNMP','EXFSYS','LBACSYS','MDSYS','MGMT_VIEW','OLAPSYS',

'OWBSYS','ORDPLUGINS','ORDSYS','OUTLN','SI_INFORMTN_SCHEMA','SYS','SYSMAN',

'SYSTEM','TSMSYS','WK_TEST','WKSYS','WKPROXY','WMSYS','XDB',

'APEX_PUBLIC_USER','DIP','FLOWS_30000','FLOWS_FILES','MDDATA','ORACLE_OCM',

'SPATIAL_CSW_ADMIN_USR','SPATIAL_WFS_ADMIN_USR','XS$NULL','OWBSYS_AUDIT',

'ORDDATA','APEX_030200','APPQOSSYS','DVSYS','DVF'

Veritabanı Güvenliği

Kullanıcı Yönetimi – User Management

Oracle 11g sürümünde Kullanıcı listesinin incelenmesi. Gereksiz kullanıcılar veritabanında

olmamalıdır.

Veritabanı Güvenliği

Kullanıcı Yönetimi – User Management

Oracle 12c sürümünde Kullanıcı listesinin incelenmesi.

Veritabanı Güvenliği

Kullanıcı Yönetimi – User Management

Kullanıcı Default Tablespace lerinin incelenmesi

ORACLE Profillerin incelenmesi

ORACLE Kaynak Kullanım değerlerinin incelenmesi

ORACLE Kaynak Kullanım değerlerinin incelenmesi

Kaynak kullanım parametrelerinin adları ve açıklamaları aşağıda verilmiştir.

SESSIONS_PER_USER: Kullanıcını açabileceği maksimum oturum (session) sayısını belirler.

CPU_PER_SESSION: Saniyenin yüzde biri cinsinden kullanıcının kullanabileceği bir oturum başına CPU

süresi.

CPU_PER_CALL: Kullanıcının her bir işlem için harcayacağı süre - saniyenin yüzde biri cinsinden verilir.

CONNECT_TIME: Kullanıcının veritabanına bağlı kalacağı toplam süre, dakika olarak verilir.

IDLE_TIME: Kullanıcının hiçbir iş yapmadan veritabanına bağlı olarak kalacağı maksimum süre, dakika

olarak verilir.

LOGICAL_READS_PER_SESSION: Kullanıcının yapacağı toplam mantıksal okuma (logical reads ) sayısı

veritabanı bloğu cinsinden verilmelidir. Diskten ve bellekten okumalar dâhil.

PRIVATE_SGA: Eğer Shared Server mimarisinde veritabanı kullanılıyorsa, her bir oturumun SGA ’de

alabileceği maksimum shared pool alanını gösterir.

COMPOSITE_LIMIT Oracle service unit bazında hesapladığı kaynak toplamı. Bu hesap yapılırken;

CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION ve PRIVATE_SGA ’in ağırlıklı

ortalaması alınır.

ORACLE Kaynak Kullanım değerlerinin incelenmesi

ORACLE Şifre Güvenlik Politikaları

Oracle kullanıcı şifreleri için; Profile’lerdeki aşağıdaki tanımları yapabiliriz.

FAILED_LOGIN_ATTEMPTS: Bir kullanıcının başarısız şifre deneme sayısını gösterir. Şifre bu parametre

kadar denenir ve başarısız olunursa kullanıcı kilitlenir.

PASSWORD_LIFE_TIME: Bir şifrenin kullanım süresini verir. Bu süre sonunda şifre değiştirilmeye zorlanır.

PASSWORD_LOCK_TIME: Bir şifrenin yanlış girilmesi ile beraber kilitlendikten sonra kaç gün kilitli

kalacağını gösterir.

PASSWORD_GRACE_TIME: Bir şifrenin kullanım süresi dolduktan sonra kaç gün daha ek olarak kullanıma

açık kalacağını gösterir. Bu süre boyunca şifre değiştirilmelidir.

PASSWORD_VERIFY_FUNCTION Bir şifrenin ne kadar karışık olacağını gösteren PL/SQL kodunu gösterir.

PASSWORD_REUSE_TIME ve PASSWORD_REUSE_MAX: Beraber kullanılır. Şifre değiştirildiğinde kaç gün

sonra aynı şifreyi tekrar kullanabileceğimizi ve maksimum kaç değişik şifre kullandıktan sonra aynı şifreyi

tekrar kullanabileceğimizi gösterir.

ORACLE Şifre Güvenlik Politikaları

ORACLE Şifre Güvenlik Politikaları

PASSWORD_VERIFY_FUNCTION parametresi bir şifrenin karmaşıklığını

belirleyen uygulama kodudur. Bu kod genellikle SYS kullanıcısı altında

bulunur ve veritabanı yöneticileri tarafından yaratılır. Bu kod veritabanı

yöneticilerinden istenmeli ve kurumun şifre politikası ile uyumlu olup

olmadığı kontrol edilmelidir.

PASSWORD_VERIFY_FUNCTION fonksiyonu içinde bir şifrenin aşağıdaki

özelliklerine bakılır.

● Şifrenin minimum boyu kontrol edilir. Varsayılan değeri sekizdir.

● Şifre ile kullanıcı kodunun aynı olup olmadığı kontrol edilir.

● Şifre ile kullanıcı kodunun tersinin aynı olup olmadığına bakılır.

● Şifre ile sunucu adı benzer mi kontrolü yapılır.

● Şifrelerin çok basit kelime içerip içermediklerine bakılır.

● Şifrenin en az bir rakam ve bir karakter içerip içermediği kontrol

edilir.

● Şifrenin daha önceki şifrelerden 3 karakter farklı olup olmadığına

bakılır.

ORACLE Şifre Güvenlik Politikaları

ORACLE Varsayılan Uygulama Şifreleri

MS SQL – Kullanıcı Login Modu

xp_loginconfig 'login mode'

MS SQL – Sunucuya Bağlanan Kullanıcıların ( Logins )Listelenmesi

xp_loginconfig 'login mode'

MS SQL – sa hesabı disable edilmelidir

MS SQL – Kullanıcı Şifre Politikaları

MS SQL – Kullanıcı Şifre Politikaları

MS SQL – Kullanıcı Şifre Politikaları

MS SQL – Password’ü boş olan kullanıcılar

MS SQL – Kullanıcı adı ile şifresi birbirine eşit kullanıcılar

MS SQL – Veritabanı Bağlanabilen Kullanıcılarının Listelenmesi

exec sp_msforeachdb 'USE [?] ;SELECT

DB_NAME() DBNAME,DP.NAME DB_USERNAME,DP.TYPE_DESC,SP.NAME SERVER_PRINCIPAL

FROMSYS.DATABASE_PRINCIPALS DP

LEFT JOIN SYS.SERVER_PRINCIPALS SP ON

DP.SID = SP.SIDWHERE

DP.TYPE = ''S'''

MS SQL – Veritabanı Bağlanabilen Kullanıcılarının Listelenmesi

Veritabanı Güvenliği Veritabanı Yetkileri

VERİTABANI YETKİLERİ

Veritabanı Yetkileri - ORACLE

ORACLE VERİTABANINDA YETKİLER

• DBA_ROLE_PRIVS

• DBA_TAB_PRIVS

• DBA_SYS_PRIVS

Veritabanı Yetkileri - ORACLE

Veritabanı Yetkileri - ORACLE

DBA_TAB_PRIVS

Veritabanı Yetkileri - ORACLE

Veritabanı Yetkileri - ORACLE

DBA ROLÜNE SAHİP KULLANICILAR

SELECT

DISTINCT A.GRANTEE,

A.GRANTED_ROLE,

'DBA' GRANTED_CRITIC_ROLE

FROM

(

SELECT

DISTINCT LEVEL LEVEL_DEEP,

GRANTEE,

GRANTED_ROLE

FROM

DBA_ROLE_PRIVS START WITH GRANTED_ROLE = 'DBA'

CONNECT BY PRIOR GRANTEE = GRANTED_ROLE

) A,

DBA_USERS B

WHERE

A.GRANTEE = B.USERNAME

AND B.USERNAME NOT IN(

'SYSTEM',

'SYS'

)

AND B.ACCOUNT_STATUS = 'OPEN'

Veritabanı Yetkileri - ORACLE

EXPORT/IMPORT Yetkisine Sahip Kullanıcılar

Veritabanı Yetkileri - ORACLE

VERİTABANI CATALOG YETKİLERİ

Veritabanı Yetkileri - ORACLE

VERİTABANI YÖNETİM YETKİLERİ

Veritabanı Yetkileri - ORACLE

VERİTABANI YÖNETİM YETKİLERİ

Veritabanı Yetkileri - ORACLE

VERİTABANINDAKİ KRİTİK YETKİLERİ

Veritabanı Yetkileri - ORACLE

VERİTABANINDAKİ KRİTİK SİSTEM YETKİLERİ DBA_SYS_PRIVS

• BECOME USER• ALTER USER• DROP USER• CREATE ROLE• ALTER ANY ROLE• DROP ANY ROLE• GRANT ANY ROLE• CREATE PROFILE• ALTER PROFILE• DROP PROFILE• CREATE ANY TABLE• ALTER ANY TABLE• DROP ANY TABLE• INSERT ANY TABLE• UPDATE ANY TABLE• DELETE ANY TABLE• SELECT ANY TABLE

• CREATE ANY PROCEDURE• ALTER ANY PROCEDURE• DROP ANY PROCEDURE• EXECUTE ANY PROCEDURE• CREATE ANY TRIGGER• ALTER ANY TRIGGER• DROP ANY TRIGGER• CREATE TABLESPACE• ALTER TABLESPACE• DROP TABLESPACES• ALTER DATABASE• ALTER SYSTEM• SELECT ANY DICTIONARY• EXEMPT ACCESS POLICY• CREATE ANY LIBRARY• GRANT ANY OBJECT PRIVILEGE• GRANT ANY PRIVILEGE• AUDIT ANY

Veritabanı Yetkileri - ORACLE

VERİTABANINDAKİ KRİTİK SİSTEM PAKETLERİ – PUBLIC’e yetkili olmamalıdır.

DBMS_ADVISOR: Veritabanı sunucusundaki dosyalara yetkisiz kişiler tarafından erişilmesini ve dosyaların bozulmasını neden olabilir.

DBMS_CRYPTO: Bu paket ile veritabanında bilgiler gizlenir ( kripto edilir ). Bu paket tüm kullanıcılara değil sadece gerekli uygulama kullanıcılarına

erişimine izin verilmelidir. Çünkü bu paket yetkisiz kişiler tarafından kullanıldığında veritabanında yapılan kriptolama işlemleri hakkında bilgiler elde

edilir.

DBMS_JAVA: Bu paket ile saldırgan veritabanı sunucusunda işletim sistemi komutları çalıştırabilir.

DBMS_JAVA_TEST: Bu paket ile saldırgan veritabanı sunucusunda işletim sistemi komutları çalıştırabilir.DBMS_JOB: Bu pakete erişen yetkisiz kişiler veritabanındaki iş kuyruklarına gereksiz olarak fazla iş yükleyerek sistemi aşırı yükleyip veritabanını ( Denial-of-Service) cevap veremez duruma getirebilirler.DBMS_LDAP: Veritabanında dışarıya veri aktarmak veya kullanıcıları yanıltmak için çeşitli hata mesajları üretmek amacıyla kullanılır.DBMS_LOB: Veritabanı sunucusu üzerinde yetkisiz kişiler tarafından CLOB, BFILE gibi dosyalara erişmek ve disk sistemlerinin dolmasına neden olarak veritabanını hizmet veremez ( Denial-of-Service) duruma getirmek amacıyla kullanılabilir.DBMS_OBFUSCATION_TOOLKIT: Amacı dışında kullanıldığında disk sistemi üzerinde bozukluklara neden olabilir.DBMS_RANDOM: Bu paket PUBLIC rolüne yetkilendirildiğinde; yetkisiz kişiler tarafından rastgele rakamlar üreten fonksiyon yaratmak için kullanılır. Bu fonksiyon kesinlikle kriptolama amaçlı kullanılmamalıdır.DBMS_SCHEDULER: Yetkisiz kişilerin veritabanı veya işletim sistemi job’larını çalıştırma imkânı sağlar.DBMS_SQL: Bu pakete giren parametre ( Dinamik SQL ) kontrol edilmediği taktirde; bir tür SQL injection olan yetki yükseltme ( privilege escalation) yapılabilir.DBMS_XMLGEN: Bu paket ile SQL-injection yapılıp tüm veritabanı üzerinde taramalar yapılabilir.DBMS_XMLQUERY: Veritabanındaki kritik bilgileri aramak için kullanılabilir ( Müşteri bilgileri, kredi kart numaraları gibi)

Veritabanı Yetkileri - ORACLE

VERİTABANINDAKİ KRİTİK SİSTEM PAKETLERİ

UTL_FILE: İşletim sisteminde bulunan dosyalara erişimi sağlar. Bu paket ile saldırgan hassas bilgilerin bulunduğu dosyaları okuyabilir.UTL_INADDR: Paketi ile SQL-injection saldırıları yapılabilir.UTL_TCP: Paketi veritabanının kurulduğu sunucudan TCP paketleri okunmasını veya yazılmasını sağlarUTL_MAIL: Paketi ile mail hizmeti veren bir sunucudan mail gönderimi yapılabilir.UTL_SMTP: Paketi ile mail hizmeti veren bir sunucudan mail gönderimi yapılabilir.UTL_DBWS: Web servislerinden gelen paketlere erişim sağlanabilir ve bu paketlerin içeriği bozulabilir.UTL_ORAMTS: Veritabanındaki hassas bilgilerin web servislerine gönderilmesi amacı ile kullanılabilir.UTL_HTTP: Veritabanındaki hassas bilgilerin web servislerine gönderilmesi amacı ile kullanılabilir.HTTPURITYPE: Veritabanındaki hassas bilgilerin web servislerine gönderilmesi amacı ile kullanılabilir.DBMS_SYS_SQL: Veritabanında başka bir kullanıcının kimliği ile kod çalıştırmak için kullanılabilir.DBMS_BACKUP_RESTORE: Veritabanı sunucusundaki dosyalara erişim amaçlı kullanılabilir.DBMS_AQADM_SYSCALLS: Yetkisiz kişilerin SYS kullanıcı gibi SQL komutları çalıştırmasını sağlar.DBMS_REPCAT_SQL_UTL: Yetkisiz kişilerin SYS kullanıcısı gibi SQL komutları çalıştırmasını sağlar.INITJVMAUX: Yetkisiz kişilerin SYS kullanıcısı gibi SQL komutları çalıştırmasını sağlar.DBMS_STREAMS_ADM_UTL: Yetkisiz kişilerin SYS kullanıcısı gibi SQL komutları çalıştırmasını sağlar.DBMS_AQADM_SYS: Yetkisiz kişilerin SYS kullanıcısı gibi SQL komutları çalıştırmasını sağlar.DBMS_STREAMS_RPC: Yetkisiz kişilerin SYS kullanıcısı gibi SQL komutları çalıştırmasını sağlar.DBMS_PRVTAQIM: Yetkisiz kişilerin SYS kullanıcısı gibi SQL komutları çalıştırmasını sağlar.LTADM: Yetkisiz kişilerin SYS kullanıcısı gibi SQL komutları çalıştırmasını sağlar.WWV_DBMS_SQL: Oracle Application Express modülün ’den dinamik SQL lerin çalıştırılması için kullanılabilir.WWV_EXECUTE_IMMEDIATE: Oracle Application Express modülün ‘den dinamik SQL lerin çalıştırılması için kullanılabilir.DBMS_IJOB: Saldırganın veritabanı job’larını başka kullanıcılar ile çalıştırıp, job’larını özelliklerini değiştirmek için kullanılabilir.DBMS_FILE_TRANSFER: Bir veritabanı sunucusundan başka bir veritabanı sunucusuna dosya aktarmak için kullanılır.

Veritabanı Yetkileri - ORACLE

KRİTİK TABLOLARA ERİŞİMİN İNCELENMESİ

Veritabanında aşağıdaki listede verilen kritik tablolara erişen kullanıcılar belirlenmelidir.

• AUD$ • USER_HISTORY$• LINK$ • USER$• SCHEDULER$_CREDENTIAL

Veritabanı Yetkileri - ORACLE

PUBLIC Rolüne Atanmış Yetkilerin İncelenmesi

Veritabanında aşağıdaki listede verilen kritik tablolara erişen kullanıcılar belirlenmelidir.

SELECT

GRANTEE,

GRANTED_ROLE

FROM

DBA_ROLE_PRIVS

WHERE

GRANTEE = 'PUBLIC';

SELECT

GRANTEE,

PRIVILEGE

FROM

DBA_SYS_PRIVS

WHERE

GRANTEE = 'PUBLIC'

SELECT

GRANTEE,

OWNER,

TABLE_NAME,

PRIVILEGE

FROM

DBA_TAB_PRIVS

WHERE

GRANTEE = 'PUBLIC'

Veritabanı Yetkileri - ORACLE

ADMIN OPTION ile atanmış Sistem / Rol Yetkilerinin İncelenmesi

Veritabanı Yetkileri - ORACLE

WTH GRANT OPTION ile Atanmış Nesne Yetkilerinin İncelenmesi

Veritabanı Yetkileri – MS SQL Server

SUNUCU Bazlı Roller

Veritabanı Yetkileri – MS SQL Server

Veritabanı Yetkileri – MS SQL Server

SUNUCU Bazlı Roller

Veritabanı Yetkileri – MS SQL Server

SUNUCU Bazlı Roller

SELECTROLE.NAME AS ROLE,LOGIN.NAME AS LOGIN

FROMSYS.SERVER_ROLE_MEMBERS SRM,SYS.SERVER_PRINCIPALS ROLE,SYS.SERVER_PRINCIPALS LOGIN

WHERESRM.ROLE_PRINCIPAL_ID = ROLE.PRINCIPAL_IDAND SRM.MEMBER_PRINCIPAL_ID = LOGIN.PRINCIPAL_ID;

select suser_name(role_principal_id),suser_name(member_principal_id) from sys.server_role_members;

Veritabanı Yetkileri – MS SQL Server

SUNUCU Yetkilerinin Kontrolü

Veritabanı Yetkileri – MS SQL Server

SUNUCU Yetkilerinin Kontrolü

SELECTS.NAME,P.CLASS_DESC,P.PERMISSION_NAME,P.STATE_DESC

FROMSYS.SERVER_PERMISSIONS P

JOIN SYS.SERVER_PRINCIPALS S ONP.GRANTEE_PRINCIPAL_ID = S.PRINCIPAL_ID

ORDER BYS.NAME;

Sunucu bazında Public’e atanan yetkilerin ( Server Permissions ) sorgulanması.

SELECTSP.STATE_DESC,SP.PERMISSION_NAME,SP.CLASS_DESC,SP.MAJOR_ID,SP.MINOR_ID,E.NAME

FROMSYS.SERVER_PERMISSIONS AS SP

JOIN SYS.SERVER_PRINCIPALS AS L ONSP.GRANTEE_PRINCIPAL_ID = L.PRINCIPAL_ID

LEFT JOIN SYS.ENDPOINTS AS E ONSP.MAJOR_ID = E.ENDPOINT_ID

WHEREL.NAME = 'public';

Veritabanı Yetkileri – MS SQL Server

VERİTABANI Bazlı Yetkilerinin Kontrolü

exec sp_msforeachdb 'USE [?] ;SELECT

DB_NAME() DBNAME,USER_NAME(GRANTEE_PRINCIPAL_ID)

GRANTEE,PERMISSION_NAME,STATE_DESC,OBJECT_SCHEMA_NAME(MAJOR_ID)

SCHEMA_NAME,OBJECT_NAME(MAJOR_ID) OBJECT_NAME

FROMSYS.DATABASE_PERMISSIONS

WHEREOBJECT_SCHEMA_NAME(MAJOR_ID)<>

''sys''AND DB_NAME() NOT IN

(''MSDB'',''MASTER'')

Veritabanı Yetkileri – MS SQL Server

VERİTABANI Yetkileri

• ALTER

• CONTROL

• DELETE

• EXECUTE

• IMPERSONATE

• INSERT

• RECEIVE

• REFERENCES

• SELECT

• TAKE OWNERSHIP

• UPDATE

• VIEW CHANGE TRACKING

• VIEW DEFINITION

Veritabanı Yetkileri – MS SQL Server

Public ve Guest Kullanıcılarına Atanmış Yetkiler

Public ve Guest kullanıcılarının veritabanı yetkileri olmamalıdır.

exec sp_msforeachdb 'USE [?] ;SELECT

DB_NAME() DBNAME,USER_NAME(GRANTEE_PRINCIPAL_ID) GRANTEE,PERMISSION_NAME,STATE_DESC,OBJECT_SCHEMA_NAME(MAJOR_ID) SCHEMA_NAME,OBJECT_NAME(MAJOR_ID) OBJECT_NAME

FROMSYS.DATABASE_PERMISSIONS

WHEREUSER_NAME(GRANTEE_PRINCIPAL_ID) IN(

''guest'',''public''

)AND OBJECT_SCHEMA_NAME(MAJOR_ID)<> ''sys''AND DB_NAME() NOT IN (''MSDB'',''MASTER'')

Veritabanı Yetkileri – MS SQL Server

Veritabanı Yetkileri – MS SQL Server

Veritabanlarındaki Roller

Genel olarak veritabanında atanmış roller aşağıdaki SQL ile listelenir

exec sp_msforeachdb 'USE [?] ;SELECTDB_NAME() DB_NAME,USER_NAME(MEMBER_PRINCIPAL_ID) MEMBER,USER_NAME(ROLE_PRINCIPAL_ID) ROLEFROMSYS.DATABASE_ROLE_MEMBERS;'

Veritabanı Yetkileri – MS SQL Server

Veritabanı Yetkileri – MS SQL Server

Veritabanı Yetkileri – MS SQL Server

Veritabanı Yetkileri – MS SQL Server

Guest Kullanıcısı ve Public Role

Veritabanı Yetkileri – MS SQL Server

Veritabanı Rolleri

db_owner ve db_securityadmin rollerine sahip kullanıcılar özellikle incelenir. Bu roller gerekmiyorsa kullanıcılardan alınır.

exec sp_msforeachdb 'USE [?] ;SELECT

DB_NAME() DB_NAME,USER_NAME(MEMBER_PRINCIPAL_ID) MEMBER,USER_NAME(ROLE_PRINCIPAL_ID) ROLE

FROMSYS.DATABASE_ROLE_MEMBERS

WHEREUSER_NAME(ROLE_PRINCIPAL_ID) IN (

''db_owner'',''db_securityadmin'')AND USER_NAME(MEMBER_PRINCIPAL_ID) <> ''dbo''

Veritabanı Yetkileri – MS SQL Server

Veritabanı Yetkileri – MS SQL Server

Veritabanı Yetkileri – MS SQL Server

General Extended Procedure’lere Erişim Kontrolü

Extended Procedurlerin public’e yetkileri varsa alınmalıdır. Yetkiler sadece gerekli kullanıcılara verilmelidir. GRANT ve REVOKE

işlemleri sırasında master DB kullanılmalıdır.

SELECTOBJECT_NAME(MAJOR_ID) AS PROCEDURENAME,PERMISSION_NAME,USER_NAME(GRANTEE_PRINCIPAL_ID) AS PRINCIPAL

FROMSYS.DATABASE_PERMISSIONS

WHEREPERMISSION_NAME = 'EXECUTE'AND USER_NAME(GRANTEE_PRINCIPAL_ID)= 'public'AND OBJECT_NAME(MAJOR_ID) IN(

'xp_availablemedia','xp_dirtree','xp_enumgroups','xp_fixeddrives','xp_servicecontrol','xp_subdirs','xp_regaddmultistring','xp_regdeletekey','xp_regdeletevalue','xp_regenumvalues','xp_regremovemultistring','xp_regwrite','xp_regread','xp_cmdshell'

);

Veritabanı Yetkileri – MS SQL Server

MS SQL Server Opsiyonları(Aşağıdaki Sql Server opsiyonlarının hepsi DISABLE olmalıdır. )

select name,value_in_use from master.sys.configurations WHERE namein('Remote access' , -- 0'Ad hoc distributed queries', --0'clr enabled' , --0'Database Mail XPs' , --0'SQL Mail XPs' , --0'scan for startup procs' , --0'remote admin connections' , --0'Ole Automation Procedures' , --0'Cross db ownership chaining', --0'xp_cmdshell' --0);

Veritabanı Parametreleri– Oracle

ORACLE Veritabanı Parametreleri

O7_DICTIONARY_ACCESSIBILITY

O7_dictionary_accessibility parametresi Oracle kullanıcılarının SYS şemasındaki objelere ( dictionary, veritabanı kataloğu )SELECT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE, INSERT ANY TABLE, EXECUTE ANY PROCEDURE yetkileri olmasına karşın erişmesini engellemek için kullanılır. Bu parametrenin değeri FALSE olmalıdır. Örneğin bu parametrenin değeri FALSE ise; SELECT ANY TABLE yetkine sahip bir kullanıcı SYS şemasındaki objelere erişemez.

OS ROLES Os_roles parametresi ile veritabanındaki rollerin, işletim sistemi ile mi yoksa Oracle veritabanı ile mi yönetileceği belirlenir. OS_ROLES değeri TRUE ise veritabanındaki tüm roller işletim sistemi ile yönetilir. Eğer bu değer FALSE ise veritabanındaki roller Oracle tarafından yönetilir. OS_ROLES parametresinin değeri FALSE olmalıdır.

Veritabanı Parametreleri– Oracle

ORACLE Veritabanı Parametreleri

REMOTE_OS_AUTHENT

Remote_os_authent parametresi veritabanına dışarıdan yapılan bağlantılarda kimlik denetiminin OS_AUTHENT_PREFIX parametresine bakılarak yapılıp yapılmayacağını gösterir.REMOTE_OS_AUTHENT parametresinin değeri FALSE olmalıdır.

REMOTE_OS_ROLES

Remote_os_roles parametresi ile işletim sistemi rollerinin uzak istemciler ( remote clients ) için kullanıp kullanılmayacağını belirlenir. Bu değer FALSE ise uzak istemciler için roller Oracle tarafından yönetilir.REMOTE_OS_ROLES parametresinin değeri FALSE olmalıdır.

Veritabanı Parametreleri– Oracle

ORACLE Veritabanı Parametreleri

UTIL_FILE_DIR

Utl_file_dir parametresi ile PL/SQL prosedürleri içinde I/O işlemleri için kullanılacak dizin adları belirlenir. Güvenlik açısında bu parametrenin kullanımı yerine veritabanında DIRECTORY tanımları yapılmalıdır.UTL_FILE_DIR parametresinin değeri boş olmalıdır.

SEC_CASE_SENSITIVE_LOGON

Oracle veritabanı şifrelerinde büyük ve küçük harf ayrımının yapılmasını sağlayan parametredir.SEC_CASE_SENSITIVE_LOGON parametresinin değeri TRUE olmalıdır. Bunun anlamı şifrelerde büyük ve küçük harflerin kullanılabileceğini gösterir.

Veritabanı Parametreleri– Oracle

ORACLE Veritabanı Parametreleri

SEC_MAX_FAILED_LOGIN_ATTEMPTS

Oracle veritabanında bir istemcinin, veritabanına kimlik denetimi yaparken en fazla kaç tane deneme yapacağını belirler. Bu parametreden fazla sayıda deneme yapılırsa sunucu tarafından, istemcinin bağlantısı kesilir.SEC_MAX_FAILED_LOGIN_ATTEMPTS parametresinin değeri 10 olmalıdır.

SEC_PROTOCOL_ERROR_FURTHER_ACTION

Bir istemciden veritabanına hatalı paketler gönderildiğinde veritabanının bu paketlere nasıl cevap vereceği bu parametre ile belirlenir. Veritabanına yapılacak olan DDOS ataklarını önlemek için kullanılacak bir parametredir.SEC_PROTOCOL_ERROR_FURTHER_ACTION parametresinin değeri '(DROP,3)' olmalıdır.

Veritabanı Parametreleri– Oracle

ORACLE Veritabanı Parametreleri

SEC_PROTOCOL_ERROR_TRACE_ACTION

Bir istemciden kötü amaçlı network paketleri veritabanı gönderildiğinde, veritabanının hangi seviyede log üreteceğini belirleyen parametredir. Veritabanına DDOS atakları yapıldığında minimal seviyede log üretmek için kullanılır.SEC_PROTOCOL_ERROR_TRACE_ACTION parametresinin değeri 'LOG' olmalıdır.

SEC_RETURN_SERVER_RELEASE_BANNER

Veritabanı sürümü hakkında istemcilere detaylı bilgi gönderip gönderilmemesi bu parametre ile belirlenir. Saldırganların veritabanı sürümü hakkında bilgi edinmeleri kullanacakları açıkları daha çabuk seçmelerini sağlar.SEC_RETURN_SERVER_RELEASE_BANNER parametresinin değeri FALSE olmalıdır.

Veritabanı Parametreleri– Oracle

ORACLE Veritabanı Parametreleri

SQL92_SECURITY

Bir kullanıcının bir tablo üzerinde DELETE ve UPDATE komutlarını çalıştırabilmesi için o tabloya SELECT yetkisinin olma zorunluluğunu belirleyen parametredir.SQL92_SECURITY parametresinin değeri TRUE olmalıdır.

RESOURCE_LIMIT

Resource_limit parametresi veritabanı profillerinde kaynak kısıtlamalarının geçerli olup olmamasını belirler.RESOURCE_LIMIT parametresinin değeri TRUE olmalıdır.Oracle 11g ve Oracle 12c sürümünde RESOURCE_LIMIT parametresi aşağıdaki SQL ile kontrol edilir.

Veritabanı Güvenliği - Audits

AUDITS

Denetleme en genel tanımıyla veri tabanında yapılan işlemlerin belirlenmiş kurallara göre izlenmesi ve kayıt edilmesidir.

Burada önemli noktalardan bir tanesi, hangi kurallara göre izleme ve kayıt yapacağımızın belirlenmesidir. Veritabanında kısa bir süre içinde milyonlarca işlem olabilir; Önemli olan kanıt altına alınmaya değer işlerin belirlenmesidir. Kayıt altına alınması gereken işlemlerin belirlenmesi bizim Denetleme Politikamızı ( Auditing Policy ) bağlıdır.

Denetimde esas

• Denetim kayıtlarının değiştirilemeyeceği ve silinemeyeceği• Denetim kurallarının değiştirilemeyeceği veya devre dışı bırakılamayacağı

Garanti altında olmalıdır.

Veritabanı Güvenliği - Audits

AUDITS

Veritabanı denetlemesi sayesinde;

• Veritabanında bulunan bilgilerin tutarlı olduğu, yetkisiz kişilerce değiştirilmediği kanıtlanır.• Veritabanında yapılan şüpheli hareketler sorgulanabilir ve kimin tarafında yapıldığı bulunur.• Veritabanında yetkisiz işlem yapmak isteyen kullanıcılar için caydırıcıdır.• Veritabanında yetkisiz kişilerin yaptığı işlemler belirlenir.• Güvenlik yönetmeliklerine uyum sağlanır.• Veritabanı performansı ile ilgili bilgiler toplanır.

Veritabanı Güvenliği – Oracle Audits

Oracle Standart Auditing

Veritabanı Güvenliği – Oracle Audits

Veritabanı Güvenliği – Oracle Audits

Veritabanı Güvenliği – Oracle Audits

Veritabanı Güvenliği – Oracle Audits

Veritabanı Güvenliği – Oracle Audits

Veritabanı Güvenliği – Oracle Audits

Veritabanı Güvenliği – Oracle Unified Audit

ORACLE Unified Auditing

Birleşik denetleme multitenant veritabanlarında hem takılabilir veritabanı ( PDB ) hem de Konteyner veritabanı (CDB) etki alanında yönetilebilir.

Birleşik denetleme ile beraber veritabanında yapılan standart işlemlere ( Database kapama açma, veritabanı parametrelerini değiştirme, DML, DDL, logon, logoff ve benzeri ) ek olarak aşağıdaki veritabanı özellikleri de denetlenir ve tek bir görüntü( UNIFIED_AUDIT_TRAIL) ile sorgulanır.

Oracle Database Real Application Security, Oracle Recovery Manager,Oracle Data Pump,Oracle Data Mining, Oracle Database Vault,Oracle Label SecurityOracle SQL*Loader direct path yüklemeleri

Veritabanı Güvenliği – Oracle Unified Audit

ORACLE Unified Auditing

Veritabanı ilk yaratıldığında birleşik denetleme izleri SYSAUX tablespace içinde SYSAUD kullanıcısında saklanır. Veritabanı denetim izlerine; UNIFIED_AUDIT_TRAIL görüntüsü ile erişilir. Birleşik denetleme ye geçiş ile beraber denetim izlerinin SYSAUX dışında ayrı bir tablespace’e taşınması önerilmektedir. Birleşik denetleme denetim izlerini tutan tablolar Read-only kiptedir.

Denetleme işlemeleri SYS kullanıcısına ek olarak AUDIT_ADMIN rolüne sahip kullanıcılar tarafından yönetilir. Denetim izlerine ise AUDIT_VIEWER rolüne sahip kullanıcılar erişebilir.Veritabanı write kipinde iken denetim izleri veritabanındaki birleşik denetim izine yazılır. Veritabanı write kipinden çıktığında oluşan denetim izleri ise $ORACLE_BASE/audit/$ORACLE_SID dizinindeki dosyalara yazılır. Veritabanı tekrar write kipine getirildiğinde bu dosyalar istenirse veritabanına yüklenir.

SYSDBA rolüne sahip SYS kullanıcısının işlemleri veritabanındaki birleşik denetim izine yazılır ve SYS kullanıcısı da diğer kullanıcılar gibi denetlemeye tabi tutulur.

Birleşik denetlemede denetim izleri Queued Write kipinde SGA’ de tutulur ve toplu olarak veritabanı tablolarınız yazılır. SGA’ de bulunan tüm kayıtlar istenildiği an veritabanına Flush edilebilir. Birleşik denetleme izleri istenirse Immediate-Write kipine getirilip yapılan tüm değişiklikler veritabanına anında yazılır. Queued Write kipinde veritabanı performansı denetlemeden çok az etkilenir.

Veritabanı Güvenliği – Oracle Unified Audit

ORACLE Unified Auditing

SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';

VALUE----------------------------------------------------------------FALSE

Copyright (c) 1991, 2014, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.200.11.14)(PORT=1521)))The command completed successfully

[oracle@ol7 ~]$ cd $ORACLE_HOME/rdbms/lib

[oracle@ol7 lib]$ make -f ins_rdbms.mk uniaud_on ioracle

Veritabanı Güvenliği – Oracle Unified Audit

ORACLE Unified Auditing

SQL> CREATE AUDIT POLICY AUDIT_SQLPLUS2 ACTIONS ALL 3 WHEN 'INSTR(UPPER(SYS_CONTEXT(''USERENV'', ''CLIENT_PROGRAM_NAME'')), ''SQLPLUS'') > 0'4 EVALUATE PER SESSION;

Audit policy created.

AUDIT POLICY Komutu

Denetleme politikası yaratıldıktan sonra AUDIT komutu kullanarak denetim politikasını aktif hale getirmemiz gerekir. Ek olarak denetim politikasının hangi kullanıcılar için aktif olacağı ve denetlenecek komutun hangi durumda ( başarılı, başarısız veya hem başarılı hem başarısız olduğunda ) denetleneceği AUDIT komutu ile tanımlanır. Birleşik denetleme kipi haricinde AUDIT komutu ise denetleme politikaları tanımlamak için kullanılmaktadır. Veritabanı birleşik denetlemeye geçtiği andan itibaren AUDIT komutunun kullanımı değişmektedir

Veritabanı Güvenliği – MS SQL Server Audit

MS SQL Server Audits

Server Level Audits

Database Level Audits

Veritabanı Güvenliği – MS SQL Server Audit

Veritabanı Güvenliği – MS SQL Server Audit

Sunucu Seviyesinde Audit Tanımlama

Veritabanı Güvenliği – MS SQL Server Audit

Sunucu Seviyesinde Audit Tanımlama

Veritabanı Güvenliği – MS SQL Server Audit

Server Seviyesinde Audit Tanımlama

Veritabanı Güvenliği – MS SQL Server Audit

Veritabanı Seviyesinde Audit Tanımlama

Veritabanı Güvenliği – MS SQL Server Audit

Veritabanı Seviyesinde Audit Tanımlama

EXEC sp_msforeachdb 'USE [?] SELECTDB_NAME(),*FROMSYS.DATABASE_AUDIT_SPECIFICATIONS;SELECTDB_NAME(),*FROMSYS.DATABASE_AUDIT_SPECIFICATION_DETAILS'

Veritabanı Güvenliği – MS SQL Server Audit

Veritabanı Seviyesinde Audit Tanımlama

Veritabanı Güvenliği – Network Encryption

Network Encryption

Veritabanı Güvenliği – Oracle Network Encryption

Oracle Network Encryption

Veritabanı Güvenliği – Oracle Network Encryption

Oracle Network Encryption

Veritabanı Güvenliği – Oracle Network Encryption

Oracle Network Encryption

Veritabanı Güvenliği – Oracle Network Encryption

Oracle Network Encryption

Veritabanı Güvenliği – Oracle Network Encryption

Oracle Network Encryption

Veritabanı Güvenliği – Oracle Network Encryption

Oracle Network Encryption

Veritabanı Güvenliği – MS SQL Server Network Encryption

Veritabanı Güvenliği – MS SQL Server Network Encryption

Veritabanı Güvenliği – MS SQL Server Network Encryption

Veritabanı Güvenliği – Data Encryption

Data Encryption- ORACLE Advanced Security

Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Data Encryption

Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Data Encryption

Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Data Encryption

Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Data Encryption

Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Data Encryption

Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Data Encryption

Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Data Encryption

Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Data Encryption

Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Data Encryption

Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Data Encryption

MS SQL Server Transparent Data Encryption ( TDE )

SQL Server’da bir Veritabanının *.mdf datafile’ları başka bir SQL Server’a taşınarak veritabanı erişim sağlanabilir. Burada yapılması gereken nokta; Veritabanı dosyalarına erişimi engellemek veya veritabanı içindeki bilgileri şifreliyerekveritabanı taşınsa bile verilerin decrypt edilmesini engellemektir.

SQL server içinde encryption key master database’de tutulur.

Çalışma adımları:

1. Master database içindeMaster Encyption key yaratCertificate yarat

2. Encrypt edilecek database içindeMaster da bulunan certifikayı kullanarak encryption key yaratDatabase’i encrypt et.

Veritabanı Güvenliği – Data Encryption

MS SQL Server Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Data Encryption

MS SQL Server Transparent Data Encryption ( TDE )

Veritabanı Güvenliği – Oracle Security Assessment Tools

DBSAT ver 2.0http://www.oracle.com/technetwork/database/security/dbsat/overview/index.html

Veritabanı Güvenliği – Oracle Security Assessment Tools

https://github.com/yusufanilakduygu/Oracle-DB-Security-Checks

Veritabanı Güvenliği – MS SQL Server Security Assessment Tools

MS SQL Server Vulnerability Assessment (VA) Toolhttps://yusufanilakduygu.wordpress.com/2018/05/05/ms-sql-server-vulnerability-assessment-va-tool/

Direk SQL Server Management Studio içinden çalışır.

MS SQL Server 2012 and later

SQL Server Management Studio (SSMS)version 17. 4

Veritabanı Güvenliği – MS SQL Server Security Assessment Tools

Veritabanı Güvenliği – MS SQL Server Security Assessment Tools

top related