Presentation is loading. Please wait.

Presentation is loading. Please wait.

Temel Veri Güvenliği Unsurları (Yazılım Odaklı)

Similar presentations


Presentation on theme: "Temel Veri Güvenliği Unsurları (Yazılım Odaklı)"— Presentation transcript:

1 Temel Veri Güvenliği Unsurları (Yazılım Odaklı) www.cihanozhan.com

2

3

4

5 Güvenlik Nedir? Güvenlik = (Farkındalık + Koruma)

6 Hacker? White Hat Black Hat – Meraklı Kullanıcılar – Heyecan Arayanlar – Kupa Avcıları – Script Kiddies – Politik Aktivisler – Profesyoneller Gray Hat

7 Tam Güvenliğe Erişilemez! "The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location. And I'm not even too sure about that one." (Dennis Hughes, FBI) %100 güvenlik yoktur.

8 Ne Kadar Güvenlik? Gereksinimler ile hedefler eşleşmeli İhtiyacınız olan kadarını gerçekten iyi şekilde yerine getirin Periyodik yeniden gözden geçirme

9 Güvenlik Zihniyetine Ulaşmak Herkes, her zaman… Zincirin en zayıf halkası senin güvenlik seviyeni belirler. Ortalama kullanıcılar da güvenlik zihniyetine sahip olmalı Hazır değilsen, hazırlan! Eğitim planı… Güvenlik zaman ve para gerektirir Proje timeline’ı güvenlik içermeli! Yapılan tercihlerin güvenliğe etkisi!

10 Düzenli Güvenlik Gözden Geçirmeleri Kullanılan tüm teknolojileri(hardware, software) gözden geçirmek Halen geliştirme sürecinde olan ve kullanılan kod Prosedürler Erişim yetkileri Eğitim ve yeniden eğitim

11 İyi Programcı Olmak (!) İyi bir programcı daha güvenli yazılımlar geliştirir. Temel güvenlik politikalarını uygulayan yazılım güvenlik testlerini yazar

12 Güvenlik Politikaları Bilgi varlıklarının nasıl korunduğunu bildirir Kurallar ve klavuzlar hazırlamak Basit, temiz ve kolay takip edilebilir tut Tüm paydaşlar dahil edilmeli! – IT personal, Business Leaders, System Administrators, – Human Resources, Legal Representatives, Auditors, Users Periyodik olarak gözden geçirin - güvenlikle ilgili değişiklikler Politikanın kapsamı! Korunacak veya kontrol edilecek verileri tanımlayın ve sınıflandırın İnsanlarla sistem arasındaki etkileşimi haritalandırmak – Hangi kullanıcı ve gruplar hangi birim, hangi sistem ve nesnelere erişebilir ve nelere erişmesi gerekiyor. Her veri türü için işleme prosedürlerini tanımlayın – Örn: Bir veritabanı yedeğinin nasıl, kim tarafından, hangi saat-zaman dilimlerinde hangi disk ve hangi şartlarda alınacağı, sorumluluklar, sistem taraflı ve yönetimsel sorumluluklar vb.

13 En Küçük Ayrıcalıklar "Every program and every priviliged user of the system should operate using the least amount of privilege necessary to complete the job. " Jerome Saltzer

14 Basitlik Daha Güvenli Karmaşa hataya davetiye çıkarır Açık isimlendirilmiş fonksiyonlar ve değişkenler Açıklama satırları Uzun kod bölümlerini küçük işlevlere ayırma Don’t repeat yourself Eski kod bir güvenlik sorunudur Built-in fonksiyonlar genellikle kendi sürümlerinizden daha iyidir Kullanılmayan özellikleri kapat ya da sil

15 Kullanıcılara Asla Güvenme! İyi niyetli kullanıcılar sorunlara neden olabilir… Paranoyak olmak! Admin kullanıcılara bile güvenme! – Mutsuz çalışanlar ya da eski çalışanlar – Güvenliği ciddiye almıyor olabilir. – Kimliği çalınmış olabilir. Taraflar ile dikkatli çalışmak – İçeriden ve dışarıdan gelen durumlar – Özellikle geçici olanlar… – Erişimleri geri alma politikalarının basitleştirilmiş olması Offline Mode – Phone – Email – Printing

16 Beklenmeyenleri Beklemek Suçu gerçekleşmeden önlemek "Bir kullanıcının bu sayfada deneyebileceği her şey var mı?" Keskin kenarları düşünmek Yaratıcı düşünmek Örnekler – Length : Çok kısa ya da çok fazla – Content Type : ASCII, Multi-Byte – Content: \ " ' () {} [] <> ` & ? $ % * + - ; – Formats: Tüm formatların güvenliğini garantilemek – Structure and Inputs: Değiştirilebilirler mi?

17 Derinlikli Savunma Katmanlı Savunma! Bir saldırganın ilerleyişini yavaşlatmak Saldırılara ivme kaybettirmek Gereksiz güvenlik (T1, T2 …) – Saldırganın kafasını karıştırmak için yapılan ama geliştiricininkini de karıştıran çözümler(!) İnsan! Teknoloji Operasyonlar

18 Belirsizlik Yoluyla Güvenlik Gereğinden fazla bilgi hacker’ın yararınadır. İstemciye(herhangi biri) bilgiyi sınırla! Sınırlı geri bildirimler Güvenlik demek yanlış yönlendirmek demek değildir. – Misdirection : Fake folder/directory names or paths, or usernames or DB column names

19 WhiteList vs. BlackList

20

21 WhiteList vs. WhiteList BlackList: Engellenenler listesi WhiteList: Kabul edilecekler listesi

22 WhiteList vs. WhiteList items A, B, C – BlackListing: A, C – WhiteList: B

23 WhiteList vs. WhiteList Blacklist = [div, span, image, input, form, …] WhiteList = [p, br, strong]

24 Nasıl Korunuruz? (WhiteList nasıl uygulanır?) Güvenilmeyen tüm veriler iyi bilinen değerler ile doğrulanmalıdır. WhiteList, güvenli olduğu iyi bilinen/belirlenmiş değerlerden oluşur. – Bu çok net/açık bir kontrol yöntemidir. – Güvenmediğimiz olası herşeyi filtreler. BlackList, güvenli olmadığı bilinen/belirlenmiş değerlerden oluşur. – Çok net olmayan ve üstü kapalı bir yöntem. – Listede olmayan herşeyin güvenli olduğunu öngörür.

25 Nasıl Korunuruz? (WhiteList yaklaşımları) Tür dönüşümü – Integer, Date, GUID vb… Regular Expressions – Email, Telefon No, Ad(Dikkatli ol!) Açıkça bilinen verilerin listesi – Renkler, Markalar, Ülkeler, Şehirler, Ürünler vb…

26 Maruz Kalma Noktaları Gelen Maruz Kalma Noktaları – URL’ler – Form’lar – Cookie’ler ve Session’lar – Veritabanı okuma işlemleri – Public API’ler Giden Maruz Kalma Noktaları – HTML – JavaScript / JSON / XML / RSS – Cookie’ler ve Session’lar – Veritabanı yazma işlemleri – 3-Parti API’ler

27 Veri Geçitleri (Veri Geçitlerini Haritalamak) Hangi path’ler veri alır? Güvenlik = (Farkındalık + Koruma) Beklenmeyenleri beklemek!

28 Girişleri Filtrelemek Çıkışları Kontrol Etmek

29 Request’leri Düzenlemek Request Metotları – GET Request : URL ve Link’ler – POST Request : forms – CONNECT, DELETE, HEAD, OPTIONS, PUT, TRACE Request/Response Formatları – Content-Type gönderilen verinin formatıdır. – Accept geri dönen verilerin formatıdır. – HTML, JSON, XML, Text – MIME Types : RSS, PDF, Image, Audio, Video

30 Girişleri Doğrulamak İlgili giriş kabul edilebilir mi? Veri beklentilerini belirlemek. Fazlasına asla geçit yok! Hack’i önlediğimiz gibi hataları da önlemek Uygulama ve veritabanı gereksinimlerini düşünmek Gönderilerde sadece beklenen verilere izin ver. – Fields: firstName, lastName, email – Mr. Hacker: birthdate, pwd, tcNo Varsayılan değerler oluşturmak/belirlemek.

31 Girişleri Doğrulamak Ortak Doğrulamalar – 15 karakter beklerken 14/16 değerleri gelse bile isteği logla ve iptal et! Tür – Hangi veri tipi bekleniyorsa onun haricindeki tüm istekleri logla ve iptal et! – Veri tipi olarak file bekleniyorsa bunun haricindeki tüm istekleri logla ve iptal et Image, Excel, Rar vs. Format – İstekte gelen veri formatını kontrol et : Email bekliyorsan email regex ile ve phone vb… – RegEx’e dikkat. En ufak bir hatalı işaretleme ile RegEx tehlike haline gelebilir. Nesnenin Kendisinde (Model Katmanı?) Benzersizlik – Zaten mevcut olan bir kayıt asla tekrarlanamaz! Double-Check – == Vs. === – null/nil – undefined/unset – NaN

32 Veri Temizlemek Veri potansiyel bir tehlike mi? Nötrleştir, zararsız hale getir Temizle : SQL, HTML, JavaScript, JSON, XML vs… Encoding Characters – Karakterleri eşdeğerleri ile değiştir. – HTML: with > Escaping Characters – Güçlü karakterlerden önce kaçış karakterleri ekle – SQL: "WHERE name='fake\'" AND 1=1--'"; Özelleştirilmiş temizleme metotları kullanma – İyi test edilmiş ve language-specific fonksiyonları kullan – Tüm gereksinimleri ele almak ve her senaryo için uygunluğunu garantilemek çok zor Geçersiz veriyi silme ya da geçerli hale getirme (Sonraki slide ile bir) – Verinin nereye gideceğini düşün – Verinin nereye gidebileceğini düşün – Erken temizle, geç temizle, sık sık temizle

33 Veri Temizlemek

34 Veri Temizlemek (Değişkenleri Etiketlemek) Dirty: Kirli Raw: Ham Tainted: Kusurlu Unsafe: Güvensiz Clean: Temiz Filtered: Filtrelendi Sanitized: Temizlendi Safe: Güvenli

35 Kodu Özel Tutmak Public Directory – Web Server tarafından erişilebilir – Web sitenizin başlangıç noktasını temiz, özel ve sınırlı erişimli tutmak – Public Pages’deki kodlar için tekrar ve tekrar düşün Libraries Directory – Web Server tarafından erişilemez. – Dosya sistemi üzerinden kodlar tarafından erişilebilir. Web Server Configuration – Konfigürasyon verisini gizli tut ve sistem admini harici bir erişim olmasın. – Konfigürasyon dosyasını şifrele ya da içerisindeki kritik veri alanlarını şifrele.htaccess & Web.config – Ayar dosyalarını ya da içerisindeki özel bilgi olan parçaları şifrele… Robots.txt – Public olmayan tüm path, folder ve directory bilgilerini arama motorlarına engelle. – Public olmayan dosyaları arama motorlarına engelle : pdf, doc vb.

36 Kimlik Bilgilerini Özel Tutmak Plain Text kimlik bilgileri tehlikelidir – En kritik öneme sahip veriye, en yüksek ilgiyi vermek – Koddan ayrı tutmak – Versiyon kontrol sistemlerinden ayrı tutmak – Mümkün olduğu kadar az kopyasını al Parolaları tekrar kullanma! – Her bilgisayar, ortam ve veritabanı için benzersiz parolalar Mümkün olduğunca şifreli parolaları kullanmak Hata mesajlarını belirsiz tutmak – Production sunucusunda hata detaylarını raporlama – İstemcilere standart/jenerik 404 ve 500 sayfaları dönmek – Geliştiriciler log dosyalarında hataları arayabilmelidir. – Web sunucuları ayrı hata sayfalarını kullanacak şekilde konfigüre et.

37 Smart Logging Hatalar – Kullanıcı, sistem, yazılım vb. tüm hataları logla… Hassas Aksiyonlar – Örn: Login, Inserted a Record, Deleted, Logging, Changed a password Gerçekleşen Saldırılar – Teknik olarak farkında olunan tüm saldırıların önceki ve sonraki etkilerini logla… – Tahmin edilemeyenler için kullanıcı aktivite loglarına güvenebilmek… Loglamaya Değer Veri – Tarih ve Zaman – Source : user, IP vb… – Action: Saldırı için kullanılan yöntem/aksiyon – Target: Saldırı hedeflenen sistem ve kaynak ne idi? DB, tablo, sütun vb. – Cookie/Session – URL’ler ve tüm parametreler – Backtrace: Saldırıda hedeflenen sistem ve kaynakta yer alan her adım(code-kaynak vb.) için geriye doğru analiz yaparak incelemek ve yanlış giden şeyleri bulmak.

38 Smart Logging (Activity Logging) Activity History & Audit Trail – Logs tablosu oluştur – Timestamp bilgi kullanacak bir fonksiyon oluştur – Herhangi bir kullanıcı, geliştirici, admin bir işlem yaptığında bu fonksiyonu çağır ve logla. Logları düzenli olarak gözden geçir

39 Smart Logging (Hassas Veriyi Asla Loglama) Uygulama built-in logging sistemine sahipse hassas verilerin loglanmamasına dikkat! POST parametreleri ve veritabanı sorgularına dikkat! Parolalar, anahtarlar ve token’ları filtreleyerek loglanmasını engelle!

40 Smart Logging (Eski Veriyi Tut) Versiyonla Silme! (Paranoid delete)

41 Tehdit Modelleme (Microsoft Threat Modeling Tool) Tehdit modellemesi yapmak için kullanılan bir diyagram aracıdır. Şu gibi sorulara cevap bulunabilir: – Bir saldırgan kimlik doğrulama verilerini nasıl değiştirebilir? – Bir saldırganın kullanıcıların verilerini okuyabilmesinin etkileri neler olabilir? – Kullanıcı profillerinin saklandığı veri tabanına erişim gerçekleşmezse neler olur? Microsoft tehdit listesi oluştururken STRIDE modelini kullanır. Tool Download : https://www.microsoft.com/en-us/download/details.aspx?id=49168 STRIDE Doc : https://users.encs.concordia.ca/~clark/courses/1601-6150/scribe/L04c.pdfhttps://www.microsoft.com/en-us/download/details.aspx?id=49168https://users.encs.concordia.ca/~clark/courses/1601-6150/scribe/L04c.pdf

42 Tehdit Modelleme (Threat Modeling) Sistemi anla. Olası tehditleri listele. Çözüm önerileri hazırla. Risk seviyesine göre önceliklendir.

43 Microsoft Threat Modeling Tool (STRIDE) Microsoft tehdit listesi oluştururken STRIDE modelini kullanır. – Spoofing: Yanıltıcı Kimlik – Tempering: Veriyle Oynamak – Repudiation: Reddetme – Information Disclosure : Bilgi Açıklama – Denial of Service: Servis Reddi – Elevation of Privilege: Ayrıcalık Seviyesi Olası tehditlerle alakalı etki azaltma önerileri de şu şekildedir: – Auditing & Logging – Authentication – Authorization – Communication Security – Configuration Management – Cryptography – Exception Management – Input Validation – Sensitive Data – Session Management

44 Microsoft Threat Modeling Tool (STRIDE)

45

46 HTTP Durum Kodları (Status Codes) https://httpstatuses.com/ https://restfulapi.net/http-status-codes/ https://www.restapitutorial.com/httpstatuscodes.html Eğer web ve API mimarisine yabancı isen… https://speakerdeck.com/cihanozhan/restful-api-mimari-ve-tasarimi https://speakerdeck.com/cihanozhan/restful-api-mimari-ve-tasarimi

47 Kaynaklar & Referanslar https://www.guvenliweb.org.tr/ https://www.webguvenligi.org/ https://www.microsoft.com/en-us/securityengineering/sdl/ http://halilozturkci.com/microsoft-tehdit-modelleme-araci-ile-guvenli-yazilim-gelistirme/ https://www.microsoft.com/en-us/download/details.aspx?id=49168&WT.mc_id=rss_windows_allproducts https://www.synopsys.com/blogs/software-security/threat-modeling-vocabulary/ STRIDE PDF : https://users.encs.concordia.ca/~clark/courses/1601-6150/scribe/L04c.pdfhttps://users.encs.concordia.ca/~clark/courses/1601-6150/scribe/L04c.pdf http://www.cihanozhan.com/guvenli-yazilim-gelistirme-owasp/ http://www.cihanozhan.com/category/data-security/ OWASP Kaynak 1 : http://www.cihanozhan.com/guvenli-yazilim-gelistirme-owasp/http://www.cihanozhan.com/guvenli-yazilim-gelistirme-owasp/ OWASP Kaynak 2 : https://slideplayer.com/slide/17625478/https://slideplayer.com/slide/17625478/ SQL Server : https://www.slideshare.net/cihanzhan/documentshttps://www.slideshare.net/cihanzhan/documents SQL Server (Full) : http://www.cihanozhan.com/ileri-seviye-t-sql-programlama-kitabi/http://www.cihanozhan.com/ileri-seviye-t-sql-programlama-kitabi/ Veri Bütünlüğü : https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-04https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-04 SSMO Kaynak : https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-21https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-21 Optimizasyon & Performans : https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-19https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-19 Sorgu ve Erişim Güvenliği : https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-18https://www.slideshare.net/cihanzhan/leri-seviye-tsql-programlama-chapter-18 Birçok Sunum ve Kaynağa Erişim : http://www.cihanozhan.com/cihan-ozhan/http://www.cihanozhan.com/cihan-ozhan/

48 Araştırma Önerileri Siber güvenlikte yapay zeka(data science, machine learning) Siber güvenlikte blockchain teknolojileri IoT & IIoT cihazlarda siber güvenlik Otonom araçlarda siber güvenlik Akıllı ev sistemlerinde siber güvenlik Endüstriyel üretimde siber güvenlik Yukarıdaki alanlarda bilgi edinmek için cihanozhan.com’u takipte kalınız.

49


Download ppt "Temel Veri Güvenliği Unsurları (Yazılım Odaklı)"

Similar presentations


Ads by Google