SlideShare uma empresa Scribd logo
1 de 43
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 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
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
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
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
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
SELinux ne yapamaz
● Sistem kaynaklarının kontrolü
o CPU, hafıza (RAM), ...
o Tavsiye edilenler: grsecurity, cgroups, pam, ...
7
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
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_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
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
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
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 ‘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
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
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
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
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
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 );
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
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
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
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
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
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
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
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
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
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
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
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
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
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 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
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
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

Mais conteúdo relacionado

Semelhante a SELinux: Yüksek Güvenlikli Linux

Her yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliğiHer yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliğiAhmet Han
 
Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1Erkin Çakar
 
Işletim sistemleri
Işletim sistemleriIşletim sistemleri
Işletim sistemlerisnakeyes31
 
Anet SureLog SIEM IntelligentResponse
Anet SureLog SIEM IntelligentResponse Anet SureLog SIEM IntelligentResponse
Anet SureLog SIEM IntelligentResponse Ertugrul Akbas
 
Biricikoglu Islsisguv Sunum
Biricikoglu Islsisguv SunumBiricikoglu Islsisguv Sunum
Biricikoglu Islsisguv Sunumeroglu
 
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux 2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux Burak Oğuz
 
Linux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
Linux Yaz Kampı 2017 GNU/Linux Eğitim DökümanıLinux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
Linux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanıİbrahim UÇAR
 
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   sonAçık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma sonBGA Cyber Security
 
Dağıtık Sistemler / Programlama
Dağıtık Sistemler / ProgramlamaDağıtık Sistemler / Programlama
Dağıtık Sistemler / ProgramlamaŞahabettin Akca
 
Android mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerAndroid mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerErcan Pinar
 
İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11Cihan Özhan
 
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örneklerAğ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örneklerAlonelaz
 
İşletim Sistemleri (Operating Systems)
İşletim Sistemleri (Operating Systems)İşletim Sistemleri (Operating Systems)
İşletim Sistemleri (Operating Systems)Murat KARA
 

Semelhante a SELinux: Yüksek Güvenlikli Linux (20)

Her yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliğiHer yönüyle linux sistem ve network güvenliği
Her yönüyle linux sistem ve network güvenliği
 
Log yönetimi ve siem
Log yönetimi ve siemLog yönetimi ve siem
Log yönetimi ve siem
 
Temel linux
Temel linuxTemel linux
Temel linux
 
Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1
 
Işletim sistemleri
Işletim sistemleriIşletim sistemleri
Işletim sistemleri
 
Anet SureLog SIEM IntelligentResponse
Anet SureLog SIEM IntelligentResponse Anet SureLog SIEM IntelligentResponse
Anet SureLog SIEM IntelligentResponse
 
Biricikoglu Islsisguv Sunum
Biricikoglu Islsisguv SunumBiricikoglu Islsisguv Sunum
Biricikoglu Islsisguv Sunum
 
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux 2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
 
Linux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
Linux Yaz Kampı 2017 GNU/Linux Eğitim DökümanıLinux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
Linux Yaz Kampı 2017 GNU/Linux Eğitim Dökümanı
 
BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1
BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1
BTRisk Zararlı Yazılım Analizi Eğitimi Sunumu - Bölüm 1
 
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   sonAçık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma   son
Açık kaynak kodlu uygulamalar ile adli bilişim labaratuarı kurma son
 
Siber3.pdf
Siber3.pdfSiber3.pdf
Siber3.pdf
 
Dağıtık Sistemler / Programlama
Dağıtık Sistemler / ProgramlamaDağıtık Sistemler / Programlama
Dağıtık Sistemler / Programlama
 
Android mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerAndroid mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-scheduler
 
Ossec - Host Based Saldırı Tespit Sistemi
Ossec - Host Based Saldırı Tespit SistemiOssec - Host Based Saldırı Tespit Sistemi
Ossec - Host Based Saldırı Tespit Sistemi
 
Bilgi sis..
Bilgi sis..Bilgi sis..
Bilgi sis..
 
Securiskop
SecuriskopSecuriskop
Securiskop
 
İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11İleri Seviye T-SQL Programlama - Chapter 11
İleri Seviye T-SQL Programlama - Chapter 11
 
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örneklerAğ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
 
İşletim Sistemleri (Operating Systems)
İşletim Sistemleri (Operating Systems)İşletim Sistemleri (Operating Systems)
İşletim Sistemleri (Operating Systems)
 

SELinux: Yüksek Güvenlikli Linux

  • 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. 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. 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. 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. 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. 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. SELinux ne yapamaz ● Sistem kaynaklarının kontrolü o CPU, hafıza (RAM), ... o Tavsiye edilenler: grsecurity, cgroups, pam, ... 7
  • 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. Devreye alma (1/5) ● Kernel desteği Linux 2.6 versiyonundan itibaran mainline dağıtımda mevcut. 9
  • 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
  • 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. 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. Devreye alma (5/5) ● Policy o SELinux referans policy projesi [rpp] o redhat, gentoo, debian, fedora, ... 14
  • 15. 15
  • 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. 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
  • 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
  • 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. 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
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  • 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. 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
  • 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. 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. Lisans ● GNU General Public License (GPL) [sel] 40
  • 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. 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. 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