Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Security Enhanced
Linux: Yüksek Güvenlikli
Linux
EMRE CAN KÜÇÜKOĞLU
ÖZGÜR YAZILIM VE LINUX GÜNLERI 2015
03.27.2015
Konuşmacı
● Emre Can Küçükoğlu, Bilgisayar Mühendisi, Odtü Arçelik
Ar-ge Tasarım Ofisi
● Konuyla ilgili çalışmaları:
o Mob...
Başlıklar
● SELinux nedir
● SELinux neler yapabilir
● SELinux ne yapamaz
● Neden SELinux kullanmalı
● Nasıl devreye sokulu...
SELinux nedir
● Programlar arası firewall
● Linux güvenlik modülü (LSM)
o Diğerleri smack, tomoyo, apparmor.
● Zorunlu eri...
SELinux neler yapabilir (1/2)
● Engelledikleri:
o process-lerin veri okumaları,
o uygulama güvenlik mekanizmalarının atlan...
SELinux neler yapabilir (2/2)
● Tür zorlaması (Type enforcement)
o Güvenlik konteksti (security contex) dahilinde tanımlı ...
SELinux ne yapamaz
● Sistem kaynaklarının kontrolü
o CPU, hafıza (RAM), ...
o Tavsiye edilenler: grsecurity, cgroups, pam,...
Neden SELinux kullanmalı
● Farklı fonksiyonları içinde barındıran sistemlerde, fonksiyonaliteleri
ayrıştırmak için.
o Web ...
Devreye alma (1/5)
● Kernel desteği Linux 2.6 versiyonundan itibaran mainline
dağıtımda mevcut.
9
Devreye alma (2/5)
● Kernel konfigürasyonu
o CONFIG_SECURITY_SELINUX
▪ NSA SELinux desteği açılır.
o DEFAULT_SECURITY_SELI...
11
Devreye alma (3/5)
● Userspace kütüphaneleri ve araçları [gse]
o libsepol
▪ policy manipülasyonu.
o libselinux
▪ SELinux a...
Devreye alma (4/5)
● SELinux userland packages [gse]
o policycoreutils
▪ çeşitli policy araçları.
▪ libselinux, libsepol v...
Devreye alma (5/5)
● Policy
o SELinux referans policy projesi [rpp]
o redhat, gentoo, debian, fedora, ...
14
15
SELinux modları (1/2)
● Permissive
o Hataları kaydeder.
o CONFIG_SECURITY_SELINUX_DEVELOP
o ayrıca: Process-ler için ‘Perm...
SELinux modları (2/2)
● Çalışma anında mod değiştirme:
o # setenforce 1 /* Enforcing */
o # setenforce 0 /* Permissive */
...
18
Temel kavramlar (1/5)
● Güvenlik konteksti
o process-ler ve nesnelere aittir.
o syntax: user:role:type[:range]
▪ MLS range...
20
Temel kavramlar (2/5)
● Roller
o SELinux kullanıcılarına atanır.
o son ek: *_r. örn: user_r
o Tür veya türlere erişim izni...
Temel kavramlar (3/5)
● Sınırlar (range)
o güvenlik seviyesi oluşturmak amacıyla kullanılır.
o policy bünyesinde MCS / MLS...
23
Temel kavramlar (4/5)
● Boolean
o policy-lerin aktif-pasif duruma geçmesine olanak verir.
o # getsebool -a
o # sesearch -b...
Temel kavramlar (5/5)
● Tür dönüşümü (type transition)
o nesneler için (dosya):
▪ # sesearch -T
▪ type_transition [Creatin...
Kullanıcı eşleştirmesi
● Her linux kullanıcısı yalnızca
bir SELinux kullanıcısıyla
eşleşir. [ual]
● SELinux kullanıcısı bi...
Logging
● Kural ihlalleri audit sisteminde kayıtlanır.
o /var/log/audit/audit.log
● Permissive modunda daha fazla log üret...
Multi-level güvenlik ve MCS (1/2)
● Bell-La Padula modeli uygulanır.
o “alt seviyeye yazma” ve “üst seviyeyi okuma”
● user...
Multi-level güvenlik ve MCS (2/2)
● android üzerinde:
o aynı uygulamayı kullanan farklı kullanıcıların, birbirlerinin dosy...
SELinux politikaları (1/3)
● Binary dosyalardır.
o daha düşük hafıza ihtiyacı için derlenir.
● Type enforcement dosyası (*...
SELinux politikaları (2/3)
● Gömülü sistemler için policy konfigürasyonu:
o referens policy projesi,
o kullanılmayan kural...
SELinux politikaları (3/3)
● Referans policy projesi [rpp]
o yeni policy oluşturmak için temel olarak kullanılır.
o modüle...
Userspace araçları (1/4)
● id, ls, ps, netstat -Z
o sırasıyla shell, dosya, process ve network güvenlik kontekstlerini gös...
34
Userspace araçları (2/4)
● getenforce
o SELinux modunu döner.
● newrole
o rol, tür ve level değişimini sağlar.
▪ newrole -...
Userspace araçları (3/4)
● setenforce
o Permissive ve Enforced modları arası geçişi sağlar.
● seinfo
o policy sorguları iç...
37
Userspace araçları (4/4)
● restorecon, restorecond*
o Dosyanın varsayılan güvenlik kontekstine dönmesini sağlar.
o customi...
Performans
● Sistem çağrılarını arttırır.
● Hafıza ve dosya kullanımını arttırır.
● Sisteme genel yükü ~ 7% civarında. [fa...
Lisans
● GNU General Public License (GPL) [sel]
40
Sorular?
● SELinux’u grsecurity ile birlikte kullanabilir miyim?
o Evet, özellikle PAX desteği tavsiye ediliyor. Yalnızca ...
Referanslar (1/2)
[faq] http://www.crypt.gen.nz/selinux/faq.html
[gse] https://github.com/SELinuxProject/selinux
[gs] http...
Referanslar (2/2)
[sel] https://www.nsa.gov/research/selinux/l...
[ual] http://wiki.gentoo.org/wiki/SELinux/Use...
[wct] h...
Upcoming SlideShare
Loading in …5
×

SELinux: Yüksek Güvenlikli Linux

497 views

Published on

Ozgur Yazilim ve Linux Gunleri’15 kapsaminda, SELinux: Yüksek Güvenlikli Linux Kernel hakkinda yaptigim sunumumu yapilan bilgilendirme sunumudur.

Published in: Software
  • Be the first to comment

  • Be the first to like this

SELinux: Yüksek Güvenlikli Linux

  1. 1. Security Enhanced Linux: Yüksek Güvenlikli Linux EMRE CAN KÜÇÜKOĞLU ÖZGÜR YAZILIM VE LINUX GÜNLERI 2015 03.27.2015
  2. 2. Konuşmacı ● Emre Can Küçükoğlu, Bilgisayar Mühendisi, Odtü Arçelik Ar-ge Tasarım Ofisi ● Konuyla ilgili çalışmaları: o Mobil cihazlarda kullanılmak üzere, yüksek güvenliğe sahip, gerçek zamanlı işletim sistemi projesi için gömülü sistemlere SELinux entegrasyonu, policy yönetimi o github.com/eckucukoglu/selinux-arm 2
  3. 3. Başlıklar ● SELinux nedir ● SELinux neler yapabilir ● SELinux ne yapamaz ● Neden SELinux kullanmalı ● Nasıl devreye sokulur ● Farklı çalışma modları ● Temel kavramları ● Kullanıcı eşleştirmesi ● Logging ● MLS ve MCS ● SELinux politikaları (policy) ● Userspace araçları ● Performans verileri ● Lisans ● Sorular ● Referanslar 3
  4. 4. SELinux nedir ● Programlar arası firewall ● Linux güvenlik modülü (LSM) o Diğerleri smack, tomoyo, apparmor. ● Zorunlu erişim denetimi (MAC) o Hangi özneler hangi nesnelere erişebilir ▪ Özneler: kullanıcılar, programlar. ▪ Nesneler: dosyalar, donanımlar, soketler, ... 4
  5. 5. SELinux neler yapabilir (1/2) ● Engelledikleri: o process-lerin veri okumaları, o uygulama güvenlik mekanizmalarının atlanması, o güvenli olmayan programların çalışması ● Güvenlik policy-lerinin ihlalinde uygulamalara müdahale eder. ● Zararlı yazılımlardan kaynaklanacak muhtemel zararları sınırlandırabilir. 5
  6. 6. SELinux neler yapabilir (2/2) ● Tür zorlaması (Type enforcement) o Güvenlik konteksti (security contex) dahilinde tanımlı türlerin (type) kontrolü. ● Rol tabanlı erişim denetimi (Role-based access control) o Türlere rol atayarak erişim denetimini sağlar. ● Multi-level güvenlik (MLS ve MCS) o Verinin sınıflandırılarak korunmasını sağlar. 6
  7. 7. SELinux ne yapamaz ● Sistem kaynaklarının kontrolü o CPU, hafıza (RAM), ... o Tavsiye edilenler: grsecurity, cgroups, pam, ... 7
  8. 8. Neden SELinux kullanmalı ● Farklı fonksiyonları içinde barındıran sistemlerde, fonksiyonaliteleri ayrıştırmak için. o Web sunucularında, email – dns sunucu ayrımı o Akıllı televizyonlarda, ödeme işlemleri – eğlence/bilgi uygulamaları ayrımı o Yeni nesil yazar kasalarda, örneğin aygaz uygulaması – iş bankası uygulaması ayrımı ● Android 5.0 ile birlikte akıllı telefonlarda kullanılmaya başlandı. 8
  9. 9. Devreye alma (1/5) ● Kernel desteği Linux 2.6 versiyonundan itibaran mainline dağıtımda mevcut. 9
  10. 10. Devreye alma (2/5) ● Kernel konfigürasyonu o CONFIG_SECURITY_SELINUX ▪ NSA SELinux desteği açılır. o DEFAULT_SECURITY_SELINUX ▪ Kernelin varsayılan güvenlik modülü olarak SELinux ayarlanır. o SECURITY_SELINUX_AVC_STATS ▪ AVC istatistiklerini toplar. o CONFIG_SECURITY_SELINUX_BOOTPARAM ▪ SELinux’un boot anında kapatılmasına olanak verir. o SECURITY_SELINUX_DEVELOP ▪ Geliştirici modu. Policy geliştirmeleri için. o CONFIG_SECURITY_SELINUX_DISABLE ▪ İşleyiş süresinde (runtime) SELinux’un kapatılmasını sağlar. 10
  11. 11. 11
  12. 12. Devreye alma (3/5) ● Userspace kütüphaneleri ve araçları [gse] o libsepol ▪ policy manipülasyonu. o libselinux ▪ SELinux araçları için gerekli kütüphane. ▪ libsepol’a bağlı. o libsemanage ▪ policy yönetim araçları için gerekli olan kütüphane. ▪ libsepol ve libselinux’a bağlı. 12
  13. 13. Devreye alma (4/5) ● SELinux userland packages [gse] o policycoreutils ▪ çeşitli policy araçları. ▪ libselinux, libsepol ve libsemanage’a bağlı. o sepolgen ▪ policy oluşturmada kullanılır. o checkpolicy ▪ policy derleyici. ▪ libsepol’a bağlı. 13
  14. 14. Devreye alma (5/5) ● Policy o SELinux referans policy projesi [rpp] o redhat, gentoo, debian, fedora, ... 14
  15. 15. 15
  16. 16. SELinux modları (1/2) ● Permissive o Hataları kaydeder. o CONFIG_SECURITY_SELINUX_DEVELOP o ayrıca: Process-ler için ‘Permissive’ türü [pdr] ● Enforced o Tam güvenlik kontrolü. ● Disabled o Policy-ler yüklenmez. o CONFIG_SECURITY_SELINUX_BOOTPARAM o Kernele boot parametresi olarak selinux=0 geçirilmeli. 16
  17. 17. SELinux modları (2/2) ● Çalışma anında mod değiştirme: o # setenforce 1 /* Enforcing */ o # setenforce 0 /* Permissive */ ● Kalıcı olarak: o /etc/selinux/config ▪ SELINUX=enforcing ▪ SELINUX=permissive ▪ SELINUX=disabled o Boot parametresi ile: (config dosyasından üstündür) ▪ enforcing=0 /* Permissive */ ▪ enforcing=1 /* Enforcing */ ▪ selinux=0 /* Disabled */ SELINUX=enforcing 17
  18. 18. 18
  19. 19. Temel kavramlar (1/5) ● Güvenlik konteksti o process-ler ve nesnelere aittir. o syntax: user:role:type[:range] ▪ MLS range kısmı opsiyoneldir. o process-lerde ve dosyalarda üst öğeden kalıtım olur. ● Kullanıcılar o linux kullanıcılarından farklıdır. ▪ SELinux – Linux kullanıcısı eşleştirmesi konfigürasyonda tutulur. ▪ SELinux kullanıcıları oturum süresince –su, sudo ile linux kullanıcılarında olduğu gibi – değiştirilemez. o son ek: *_u. örn: user_u o rol veya rolleri olabilir. 19
  20. 20. 20
  21. 21. Temel kavramlar (2/5) ● Roller o SELinux kullanıcılarına atanır. o son ek: *_r. örn: user_r o Tür veya türlere erişim iznine sahip olabilir. ● Türler (type) o Erişim izni türlere göre karar verilir. o son ek: *_t. örn music_t o process ve nesnelerle eşleştirilir. ● Nitelikler (attribute) o Benzer özellikteki türlerin gruplandırılmasını sağlar. 21
  22. 22. Temel kavramlar (3/5) ● Sınırlar (range) o güvenlik seviyesi oluşturmak amacıyla kullanılır. o policy bünyesinde MCS / MLS desteği sağlanmalıdır. ● Nesne sınıfları o Nesnelerin kategorilendirilmesi ▪ # ls /sys/fs/selinux/class o Her sınıfın izinler kümesi bulunur. [ocp] ▪ # ls /sys/fs/selinux/class/tcp_socket/perms/ ● Kurallar o process ve nesnenin türüne göre erişim izinlerini verir. o örn: allow user_t user_home_t:file { create read write }; 22
  23. 23. 23
  24. 24. Temel kavramlar (4/5) ● Boolean o policy-lerin aktif-pasif duruma geçmesine olanak verir. o # getsebool -a o # sesearch -b selinuxuser_execheap -AC ▪ ET allow user_t kernel_t : system syslog_read ; [ user_dmesg ] ● Kısıtlamalar (constrain) o Eylemin hangi koşullarda izne sahip olduğunu belirler. o # seinfo --constrain o Örn: 24 constrain dir_file_class_set { create relabelto relabelfrom } ( u1 == u2 or t1 == can_change_object_identity );
  25. 25. Temel kavramlar (5/5) ● Tür dönüşümü (type transition) o nesneler için (dosya): ▪ # sesearch -T ▪ type_transition [Creating Subject type] [Parent Object/Subject Type] : [Class of new Object/Subject] [New Object/Subject Type] o özneler için (process): ▪ # pstree -Z ▪ # sesearch -T -c process ▪ type_transtion [Parent process type] [Type of process] : process [New type of the process created] 25
  26. 26. Kullanıcı eşleştirmesi ● Her linux kullanıcısı yalnızca bir SELinux kullanıcısıyla eşleşir. [ual] ● SELinux kullanıcısı birden fazla linux kullanıcıyla eşleşebilir. ● # semanage login -l ● # semanage login -a -s staff_u emrecan 26
  27. 27. Logging ● Kural ihlalleri audit sisteminde kayıtlanır. o /var/log/audit/audit.log ● Permissive modunda daha fazla log üretilir. ● # cat /var/log/audit/audit.log | audit2allow -r 27
  28. 28. Multi-level güvenlik ve MCS (1/2) ● Bell-La Padula modeli uygulanır. o “alt seviyeye yazma” ve “üst seviyeyi okuma” ● user:role:type:sensitivity [:category,...] - sensitivity [:category,...] o | LEVEL | - | LEVEL | o | RANGE | o sensitivity: s0 en düşük, s15 en yüksek o kategori: opsiyonel, c0.c255. ▪ unordered and unrelated lists of "compartments". o level: sensitivity ve kategori’nin kombinasyonu. ● setrans.conf dosyasında anlamlandırılır: o s0 = tasnif dışı, s15 = çok gizli, ... o c0 = finans, c100 = eğlence, c255 = kitap, ... 28
  29. 29. Multi-level güvenlik ve MCS (2/2) ● android üzerinde: o aynı uygulamayı kullanan farklı kullanıcıların, birbirlerinin dosyalarını okuma ve yazmasını engeller. ● pratikte MLS referans policy-leri ‘üst-seviyeye yazmaya’ ve ‘alt-seviyeyi okumaya’ da izin vermezler. o Yalnızca eşit seviyelere izin verilir. 29
  30. 30. SELinux politikaları (1/3) ● Binary dosyalardır. o daha düşük hafıza ihtiyacı için derlenir. ● Type enforcement dosyası (*.te) o zorunludur. o modülün isim ve versiyonunu içerir. o türler, kurallar, booleanlar, ... burada tanımlanır. ● File contexts dosyası (*.fc) o oluşturulan policy modülünü kullanan uygulamalar için varsayılan güvenlik kontekstlerini içerir. ● Interface dosyası (*.if) o kural tanımlamalarında kullanılan makroları içerir. 30
  31. 31. SELinux politikaları (2/3) ● Gömülü sistemler için policy konfigürasyonu: o referens policy projesi, o kullanılmayan kuralların kaldırılması, ▪ proje bünyesinde, gömülü sistemler için fazla sayıda işlevsiz kural bulunmaktadır. o gerekli kuralların eklenmesi. 31
  32. 32. SELinux politikaları (3/3) ● Referans policy projesi [rpp] o yeni policy oluşturmak için temel olarak kullanılır. o modüler olması sebebiyle distrolarda da kullanılır. o bağlı olduğu kütüphaneler: ▪ checkpolicy ▪ policycoreutils ▪ libsepol ▪ libsemanage ▪ python 32
  33. 33. Userspace araçları (1/4) ● id, ls, ps, netstat -Z o sırasıyla shell, dosya, process ve network güvenlik kontekstlerini gösterir. ● audit2allow o log dosyalarından, ihtiyaç duyulan kuralı oluşturur. ● audit2why o izin ihlalinin sebebini açıklar. ● chcon o dosyaların güvenlik kontekstini geçici olarak değiştirir. (restorecon) o chcon -t user_home_t /tmp/parser ● chcat o dosyaların kategorilerini değiştirir. o kullanıcının yetki sahibi olduğu kategorileri değiştirir. 33
  34. 34. 34
  35. 35. Userspace araçları (2/4) ● getenforce o SELinux modunu döner. ● newrole o rol, tür ve level değişimini sağlar. ▪ newrole -r system_r -t unconfined_t ● semanage o boolean ayarları için kullanılır, o SELinux kullanıcılarının rol ve level değerlerini değiştirir, o Dosyaların güvenlik kontekstlerini kalıcı olarak değiştirir. (restorecon) ▪ semanage fcontext -a -t user_home_t /tmp/parser ● semodule o SELinux policy modüllerinin sisteme yüklenmesi, silinmesi ve listelenmesini sağlar. 35
  36. 36. Userspace araçları (3/4) ● setenforce o Permissive ve Enforced modları arası geçişi sağlar. ● seinfo o policy sorguları için kullanılır. ● setsebool o boolean aktifleştirilmesi/pasifleştirilmesini, geçici veya kalıcı olarak ayarlar. ● sestatus o SELinux sistem bilgilerini verir. 36
  37. 37. 37
  38. 38. Userspace araçları (4/4) ● restorecon, restorecond* o Dosyanın varsayılan güvenlik kontekstine dönmesini sağlar. o customizable types [wct] ▪ Standart etiketleme operasyonuyla, güvenlik konteksti varsayılana dönmez. ▪ # cat /etc/selinux/targeted/contexts/customizable_types ● runcon o programı verilen kontekst ile çalıştırır. ▪ runcon system_u:system_r:crond_t:s0:c0.c255 /bin/bash ● run_init [gs] o servislerin doğru güvenlik konteksti ile çalışmasını sağlar. ▪ run_init /etc/init.d/ssh start 38
  39. 39. Performans ● Sistem çağrılarını arttırır. ● Hafıza ve dosya kullanımını arttırır. ● Sisteme genel yükü ~ 7% civarında. [faq] [ffq] 39
  40. 40. Lisans ● GNU General Public License (GPL) [sel] 40
  41. 41. Sorular? ● SELinux’u grsecurity ile birlikte kullanabilir miyim? o Evet, özellikle PAX desteği tavsiye ediliyor. Yalnızca grsecurity’nin ACL desteği kullanılmamalıdır. [gfq] ● Boolean kontrolü ile güvenlik açığı oluşması mümkün mü? o i.e. setsebool -P allow_execheap on/off o DAC öntanımlı koşullara sahip değildir. Boolean’lar bir esneklik katar fakat koşullu policy yazımı şart değildir. ● Enforced moddan çıkılması engellenebilir mi? o Evet, kernel derlenirken yapılacak konfigürasyonlar ile Disabled ve Permissive modlara geçiş engellenebilir. 41
  42. 42. Referanslar (1/2) [faq] http://www.crypt.gen.nz/selinux/faq.html [gse] https://github.com/SELinuxProject/selinux [gs] http://selinuxproject.org/page/Guide/Services [rpp] https://github.com/TresysTechnology/… [ocp] http://selinuxproject.org/page/ObjectCl… [pdr] http://selinuxproject.org/page/Permissi… [sqp] http://www.cs.virginia.edu/~jcg8f/SELi… 42
  43. 43. Referanslar (2/2) [sel] https://www.nsa.gov/research/selinux/l... [ual] http://wiki.gentoo.org/wiki/SELinux/Use... [wct] http://wiki.gentoo.org/wiki/SELinux/Tuto... [gfq] http://wiki.gentoo.org/wiki/SELinux/FAQ [ffq] http://docs.fedoraproject.org/en-US/Fed… [use] http://www.fosteringlinux.com/category/… [nb4] http://taiga.selinuxproject.org/~rhaines/ [mls] http://selinuxproject.org/page/MLSStat... 43

×