Selinux centos'u devre dışı bırakma 7. SELinux'u yapılandırma, etkinleştirme, devre dışı bırakma. CentOS'ta SELinux'u devre dışı bırakmanın yöntemi. Son olarak

Bu, erişim kontrolü güvenlik politikalarını destekleyecek bir mekanizma sağlar. SELinux bazen yolunuza çıkabilir. Bu nedenle devre dışı bırakmanız-devre dışı bırakmanız gerekir SELinux . Ancak SELinux'u kapatmadan/devre dışı bırakmadan önce bunu neden yaptığınıza dair iyi bir nedeninizin olduğundan emin olun.

SELinux nasıl geçici olarak devre dışı bırakılır/devre dışı bırakılır

Aşama 1:Öncelikle aşağıdaki komutu kullanarak mevcut SELinux durumunu kontrol edin:

# getenforce uygulama #

Aynı sonuçla sonuçlanan bir komutla farklı bir yöntem kullanmak:

# sestatus SELinux durumu: etkin SELinuxfs montajı: /selinux Mevcut mod: enforcing Yapılandırma dosyasındaki mod: enforcing Politika sürümü: 24 Yapılandırma dosyasından politika: hedeflenen #

Adım 2: Geçici olarak devre dışı bırakmak/devre dışı bırakmak için SELinux , aşağıdaki yöntemi kullanın:

# echo 0 > /selinux/enforce

Diğer yöntem

#setenforce 0

Büyük olasılıkla izin verilen moda ayarlayabilirsiniz. Sonuç olarak SELinux, yürütmek yerine uyarı mesajları yayınlayacaktır. Aynısını yapmak için aşağıdaki komutu kullanın:

# setenforce İzin Veren

Öncelikle açıklanan yöntem, siz yeniden başlatana kadar çalışır. Sonuç olarak, bir sonraki yeniden başlatmaya kadar çalışacaktır. Ayrıca bunu yapmak istiyorsanız kalıcı temel yeniden başlatma yoluyla aşağıdaki prosedürü izleyin.

SELinux kalıcı olarak nasıl devre dışı bırakılır-devre dışı bırakılır

Kalıcı olarak devre dışı bırakmak için “ değerini değiştirin. SELinux" Açık " engelli" dosyada " /etc/sysconfig/SELinux"Aşağıda gösterildiği gibi

Son olarak aşağıdaki komutla tekrar kontrol edin:

# sestatus SELinux durumu: devre dışı

SELinux (Güvenliği Geliştirilmiş Linux - geliştirilmiş güvenliğe sahip Linux), klasik isteğe bağlı erişim kontrol sistemiyle paralel çalışabilen bir zorunlu erişim kontrol sisteminin uygulamasıdır. Standart Linux çekirdeğine dahildir. Ayrıca SELinux'un çalışması için, yeni çekirdek işlevlerine destek ve dosya sisteminden destek sağlayan bazı yardımcı programların (ps, ls, vb.) değiştirilmiş sürümleri gereklidir.

Yöntem 1: SELinux'u geçici olarak devre dışı bırakın

SELinux'u geçici olarak devre dışı bırakmak için /selinux/enforce dosyasını değiştirebilirsiniz. Lütfen bunun geçici bir devre dışı bırakma olduğunu ve sistem yeniden başlatıldığında SELinux'un tekrar çalışacağını unutmayın.

# kedi /selinux/enforce 1 # echo 0 > /selinux/enforce# cat /selinux/enforce 0 Aşağıdaki örnekte gösterildiği gibi setenforce komutunu da kullanabilirsiniz. Setenforce komutu için olası seçenekler şunlardır: Zorlayıcı, İzin Veren, 1 (etkin) veya 0 (devre dışı).
#setenforce 0

Yöntem 2: SELinux'u kalıcı olarak devre dışı bırakın

SELinux'u kalıcı olarak devre dışı bırakmak için /etc/selinux/config dosyasını düzenleyin ve aşağıda gösterildiği gibi SELINUX=disabled ayarını yapın. Bu işlemin ardından sunucuyu yeniden başlatın.

# kedi /etc/selinux/config SELINUX=devre dışı SELINUXTYPE=hedeflenen SETLOCALDEFS=0

Yöntem 3: Grub Bootloader'da SELinux'u devre dışı bırakma

Üçüncü yöntem, SELinux'u devre dışı bırakmak için GRUB önyükleme yükleyicisini kullanır. Satırın sonuna ekle selinux=0

# kedi /boot/grub/grub.conf default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz gizli menü başlığı Enterprise Linux Enterprise Linux Server (2.6.18-92.el5PAE) root (hd0,0) kernel /boot/vmlinuz -2.6.18-92.el5PAE ro root=LABEL=/ rhgb sessiz selinux=0 initrd /boot/initrd-2.6.18-92.el5PAE.img title Enterprise Linux Enterprise Linux Server (2.6.18-92.el5) root (hd0,0) kernel /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb sessiz selinux=0 initrd /boot/initrd-2.6.18-92.el5.img

Yöntem 4: SELinux'u yalnızca belirli hizmetler için devre dışı bırakın - HTTP/Apache

SELinux'u tamamen devre dışı bırakmanız gerekmiyorsa, yalnızca belirli hizmetler için bu seçeneğe sahipsiniz. Örneğin, değişkenin değerini değiştirerek HTTP/Apache için SELinux'u devre dışı bırakalım. httpd_disable_trans dosyada /etc/selinux/hedeflenen/booleans.

# grep httpd /etc/selinux/targeted/booleans httpd_builtin_scripting=1 httpd_disable_trans=1 httpd_enable_cgi=1 httpd_enable_homedirs=1 httpd_ssi_exec=1 httpd_tty_comm=0 httpd_unified=1 Setsebool komutunu kullanarak da değişkeni ayarlayın. Bundan sonra değişikliklerin etkili olması için httpd'yi yeniden başlatın.

# setsebool httpd_disable_trans 1# hizmet httpd'nin yeniden başlatılması

Herkese merhabalar biraz SELinux'tan bahsedelim ama ondan önce ne olduğunu duymamış olanlar için küçük bir tanım yapalım. SELinux İngilizce'nin kısaltmasıdır. Güvenliği Geliştirilmiş Linux kelimeleri, geliştirilmiş güvenliğe sahip Linux anlamına gelir. Yani klasik seçici erişim kontrol sistemi ile paralel çalışabilen bir cebri erişim kontrol sisteminin uygulanmasıdır. Aradaki fark, SELinux'ta belirli politikalar aracılığıyla erişim haklarının sistemin kendisi tarafından belirlenmesidir; buna karşılık seçici bir erişim kontrol sistemi, kaynaklara süreç erişimini kullanıcı haklarına göre ayırır; basit bir anlayış için bunlar üç düzeyde rwx haklarıdır - sahip , sahip grubu ve diğer kullanıcılar.
Küçük bir açıklamanın ardından bazı SELinux komut ve seçeneklerine bakmaya çalışalım. Örneklerimiz ameliyathanede sergilenecek Linux sistemi CentOS 6. Belki de ilk ve muhtemelen en popüler olanı SELinux durumunu kontrol etmeye yönelik komutlardır.

/usr/sbin/getenforce

/usr/sbin/sestatus

getenforce komutunun dönüş değerleri
Uygulama– SELinux'un etkinleştirildiğini ve politika kurallarının uygulandığını gösterir;
Müsamahakar– SELinux'un etkinleştirildiğini ancak politika kurallarının uygulanmadığını ve yalnızca DAC kurallarının kullanıldığını belirtir;
Engelli– SELinux'un devre dışı olduğunu gösterir.

sestatus komutu için dönüş değerleri
Bu komut, SELinux durumuna ek olarak kullanılan SELinux politikasını da döndürür, örnek:

$ /usr/sbin/sestatus SELinux durumu: etkin SELinuxfs montajı: /selinux Mevcut mod: enforcing Yapılandırma dosyasından mod: enforcing Politika sürümü: 23 Yapılandırma dosyasından politika: hedefli

SELinux durumu: etkin – SELinux'un etkin olduğu anlamına gelir;
Geçerli mod: zorlama – SELinux'un zorunlu modda etkinleştirildiği anlamına gelir;
Yapılandırma dosyasındaki politika: hedeflenen – SELinux hedefli politikasının kullanıldığını gösterir.

SELinux'u etkinleştirme
Yapılandırma dosyasındaki işletim sisteminde SELinux'u etkinleştirme/devre dışı bırakma
/etc/selinux/config

# Bu dosya sistemdeki SELinux'un durumunu kontrol eder. # SELINUX= şu üç değerden birini alabilir: # enforcing - SELinux güvenlik politikası uygulanır. # izin verici - SELinux zorlamak yerine uyarıları yazdırır. # devre dışı - Hiçbir SELinux ilkesi yüklenmedi. SELINUX=disabled # SELINUXTYPE= şu iki değerden birini alabilir: # hedeflenen - Hedeflenen işlemler korunur, # mls - Çok Düzeyli Güvenlik koruması. SELINUXTYPE=hedefli

SELINUX=disabled seçeneği SELinux'un devre dışı olduğu anlamına gelir. SELinux'u başlatmadan önce bazı manipülasyonlar yapmanız gerekir.
1. SELinux paketlerinin kurulumunu kontrol edin

Devir -ka | grep selinux rpm -q politikacoreutils rpm -qa | grep ayarısorun giderme

Ayrıca aşağıdaki paketlerin kurulu olduğundan emin olun: selinux-policy-hedefli, selinux-policy, libselinux, libselinux-python, libselinux-utils, Policycoreutils, setroubleshoot, setroubleshoot-server, setroubleshoot-eklentileri. Paketler Policycoreutils-gui, setroubleshoot, selinux-policy-devel, Ve mcstrans isteğe bağlı.
Eksik paketler şu komut kullanılarak kurulabilir (root olarak)

Yum kurulum paketi adı

2. Her dosya sistemi dosyası çalıştırılmadan önce bir SELinux içeriğiyle işaretlenmelidir. Bu noktaya kadar, kısıtlı alan adlarına erişim reddedilebilir ve bu da işletim sisteminin doğru şekilde yüklenmemesine neden olabilir. Bu durum, /etc/selinux/config.conf yapılandırma dosyasındaki SELINUX=permissive seçeneği ayarlanarak düzeltilebilir.

3. Sistemin bir sonraki yeniden başlatılması sırasında dosya işaretlemesi yapılacaktır. İşlem sırasında tüm dosyalar için etiketler SELinux bağlamında ayarlanır. Son satırdaki her * karakteri 1000 etiketli dosyayı temsil etmektedir. İşlemin süresi sistemdeki dosya sayısına ve disklerin hızına bağlıdır.

*** Uyarı -- SELinux hedefli politikanın yeniden etiketlenmesi gerekiyor. *** Yeniden etiketleme, dosya *** sistem boyutuna ve sabit sürücülerin hızına bağlı olarak çok uzun zaman alabilir. ****

4. SELinux politikasının zorla atanmaması ve çalışmanın genişletme modunda gerçekleşmesi durumunda, yasaklamalar günlüğe zorunlu modda yasaklanacak eylemler olarak yazılır. Sistemin son açılışı sırasında SELinux'un eylemleri engellemediğinden emin olun, bunu yapmak için komutu çalıştırın.

Grep "SELinux engelliyor" /var/log/messages

Çıktı boş olmalıdır, bu her şeyin yolunda olduğu ve SELinux'un eylemi yasaklamadığı anlamına gelir.
5. Loglarda yasaklamalarla ilgili herhangi bir mesaj olmadığından emin olduktan sonra enforcing'de SELINUX parametresini ayarlayın (dosya /etc/selinux/config):

# Bu dosya sistemdeki SELinux'un durumunu kontrol eder. # SELINUX= şu üç değerden birini alabilir: # enforcing - SELinux güvenlik politikası uygulanır. # izin verici - SELinux zorlamak yerine uyarıları yazdırır. # devre dışı - Hiçbir SELinux ilkesi yüklenmedi. SELINUX=enforcing # SELINUXTYPE= şu iki değerden birini alabilir: # hedeflenen - Hedeflenen işlemler korunur, # mls - Çok Düzeyli Güvenlik koruması. SELINUXTYPE=hedefli

6. Bundan sonra işletim sistemi yeniden başlatılmalıdır. Yeniden başlattıktan sonra Enforcing dönüş değerini getenforce komutuyla kontrol etmeniz gerekir.

$ /usr/sbin/getenforce yaptırımı

7. SELinux ve sistem kullanıcıları arasındaki eşlemeleri görüntülemek için şu komutu çalıştırın:

/usr/sbin/semanage giriş –l

Komutun çıktısı şu şekilde olmalıdır:

Oturum Açma Adı SELinux Kullanıcısı MLS/MCS Aralığı __default__ unconfined_u s0-s0:c0.c1023 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023

Ayrıca dikkate alınması gereken bazı özellikler vardır. SELinux devre dışı bırakıldığında kullanıcı tarafından oluşturulan dosyalar işaretlenmez ve bunun sonucunda zorlayıcı duruma getirildiğinde sorunlar ortaya çıkabilir. Seçenek devre dışı modundan izin veren/zorlayıcı moda değiştirilerek dosyalar işaretlenecek, böylece işaretlenmemiş dosyaların görünmesi sorunu önlenecektir.

Habré'de SELinux hakkında zaten yazmıştık ancak bu sistemle ilgili çok fazla ayrıntılı kılavuz yayınlanmadı. Bugün SELinux hakkında sistemle ilgili bilgilerden politikaların esnek yapılandırılmasına kadar uzanan ayrıntılı bir kılavuz yayınlıyoruz.
Gönderiyi anlaşılması zor bir “sayfa” haline getirmemek için kılavuzu iki parçaya ayırmaya karar verdik. İlki sistemin kendisinden ve bazı özelliklerinden bahsedecek. İkincisi politikaların oluşturulmasıyla ilgilidir. Şimdi ilk bölümünü yayınlıyoruz, ikinci bölümü biraz sonra yayınlayacağız.

1. Giriş

SELinux (SELinux), çekirdek düzeyinde uygulanan zorunlu bir erişim kontrol sistemidir. Bu sistem ilk olarak CentOS'un dördüncü versiyonunda ortaya çıktı ve 5. ve 6. versiyonlarda uygulama önemli ölçüde desteklendi ve geliştirildi. Bu gelişmeler SELinux'un birçok mevcut sorunu etkili bir şekilde çözebilen evrensel bir sistem haline gelmesini sağlamıştır. Öncelikle klasik Unix hakları sisteminin uygulandığını ve kontrolün ancak bu ilk kontrolün başarılı olması durumunda SELinux'a geçeceğini hatırlamakta fayda var.

1.1 Bazı güncel sorunlar.

SELinux'un pratik değerini anlamak için standart bir erişim kontrol sisteminin yeterli olmadığı birkaç örneğe bakalım. SELinux devre dışıysa, yalnızca DAC (isteğe bağlı erişim kontrolü) veya ACL (erişim kontrol listeleri) içeren klasik isteğe bağlı erişim kontrolüne erişebilirsiniz. Yani Hakkında konuşuyoruz kullanıcılar ve kullanıcı grupları düzeyinde yazma, okuma ve yürütme haklarının manipüle edilmesiyle ilgili olup, bu bazı durumlarda tamamen yetersiz olabilir. Örneğin:

- Yönetici kullanıcının eylemlerini tam olarak kontrol edemez. Örneğin, bir kullanıcının diğer tüm kullanıcılara SSH anahtarları gibi kendi hassas dosyalarına ilişkin okuma haklarını vermesi tamamen mümkündür.

İşlemler güvenlik ayarlarını değiştirebilir. Örneğin, bir kullanıcının postasını içeren dosyalar yalnızca belirli bir kullanıcı tarafından okunabilmelidir, ancak posta istemcisi, bu dosyaların herkes tarafından okunabilmesi için erişim haklarını pekala değiştirebilir.

İşlemler, onları başlatan kullanıcının haklarını devralır. Örneğin, Truva atı bulaşmış bir sürüm Firefox tarayıcısı hiçbir nedeni olmamasına rağmen kullanıcının SSH anahtarlarını okuyabilir.

Temel olarak, geleneksel seçici erişim kontrolü (DAC) modelinde yalnızca iki erişim düzeyi iyi bir şekilde uygulanmıştır: kullanıcı ve süper kullanıcı. HAYIR basit yöntem Bu, her kullanıcının gerekli minimum ayrıcalıklara sahip olmasını sağlar.
Elbette klasik güvenlik modeli içerisinde bu sorunlara çözüm bulmanın birçok yöntemi var ancak bunların hiçbiri evrensel değil.

1.1.1 SELinux'ta kullanılan temel terimler:

İhtisas- bir sürecin gerçekleştirebileceği eylemlerin listesi. Tipik olarak bir etki alanı, bir sürecin çalışabileceği minimum olası eylemler kümesi olarak tanımlanır. Böylece süreç itibarsızlaştırılırsa saldırganın fazla bir zarar vermesi mümkün olmayacaktır.

Rol- uygulanabilecek alan adlarının listesi. Belirli bir etki alanı, bir rolün etki alanları listesinde değilse bu etki alanından yapılan işlemler uygulanamaz.

Tip- bir nesneyle ilgili olarak izin verilen bir dizi eylem. Bir tür, kanallara, dizinlere ve dosyalara uygulanabilmesi açısından bir etki alanından farklıdır; etki alanı ise işlemlere uygulanır.

Güvenlik bağlamı- tüm SELinux özellikleri - roller, türler ve alanlar.

1.2 Geleneksel güvenlik modelinin sorunlarını çözmek.

SELinux, her hizmet, kullanıcı ve program için gereken minimum ayrıcalık modelini çok daha katı bir şekilde takip eder. Varsayılan olarak, sistemin her bir öğesinin yalnızca çalışması için hayati önem taşıyan haklara sahip olduğu "yasaklayıcı mod" ayarlanır. Bir kullanıcı, program veya hizmet, bir dosyayı değiştirmeye veya sorunu çözmek için açıkça gerekli olmayan bir kaynağa erişmeye çalışırsa, erişimleri reddedilir ve bu tür bir girişim günlüğe kaydedilir.

SELinux çekirdek düzeyinde uygulanır, dolayısıyla uygulama uygulamaları bu zorunlu erişim kontrol sisteminin sürümü, çalışma özellikleri vb. hakkında hiçbir şey bilmeyebilir. Doğru yapılandırılırsa SELinux işlemi hiçbir şekilde etkilemeyecektir. üçüncü taraf programları ve servisler. Ancak uygulama bu erişim kontrol sisteminden gelen hata mesajlarını yakalayabiliyorsa uygulamanın kullanım kolaylığı önemli ölçüde artar. Aslında, korunan bir kaynağa veya dosyaya erişim girişiminde bulunulursa SELinux, “erişim reddedildi” ailesinden ana uygulamaya bir hata gönderir. Ancak çok az uygulama SELinux'tan alınan sistem çağrısı dönüş kodlarını kullanır.

Tüm sisteminizin güvenliğini nasıl artırabileceğinizi göstermek için SELinux'u kullanmanın bazı örneklerini burada bulabilirsiniz.

- Ssh anahtarlarını okuyabilen programların listesini oluşturmak ve yapılandırmak.

Bir posta istemcisi aracılığıyla verilere yetkisiz erişimin önlenmesi.

Tarayıcıyı yalnızca kullanıcının ana klasöründe çalışması için gerekli dosya ve klasörleri okuyabilecek şekilde yapılandırma.

2. SELinux çalışma modları

SELinux'un üç ana çalışma modu vardır; Zorlama modu varsayılan olarak ayarlanmıştır. Bu oldukça katı bir moddur ve gerekirse son kullanıcı için daha uygun bir şeye değiştirilebilir.

Uygulama: Varsayılan mod. Bu mod seçildiğinde mevcut güvenlik politikasını bir şekilde ihlal eden tüm eylemler engellenecek ve ihlal girişimi günlüğe kaydedilecektir.

Müsamahakar: Bu modu kullanırken, mevcut güvenlik politikasını ihlal eden tüm eylemlere ilişkin bilgiler günlüğe kaydedilecek ancak eylemlerin kendisi engellenmeyecektir.

Engelli: Zorunlu erişim kontrol sisteminin tamamen devre dışı bırakılması.

Yönetim menüsünde (system-config-selinux) bulunan özel bir GUI aracını kullanarak mevcut modu ve diğer SELinux ayarlarını görüntüleyebilir (ve gerekirse değiştirebilirsiniz). Konsolda çalışmaya alışkınsanız sestatus komutuyla mevcut durumu görüntüleyebilirsiniz.

# sestatus SELinux durumu: etkin SELinuxfs montajı: /selinux Mevcut mod: enforcing Yapılandırma dosyasındaki mod: enforcing Politika sürümü: 21 Yapılandırma dosyasındaki politika: hedefli

SELinux durumunu getenforce komutunu kullanarak da öğrenebilirsiniz.
"Setenforce" komutu Zorlama ve İzin Verme modları arasında hızlı bir şekilde geçiş yapmanızı sağlar; değişiklikler yeniden başlatmaya gerek kalmadan etkili olur. Ancak SELinux'u etkinleştirir veya devre dışı bırakırsanız, güvenlik etiketlerinin dosya sistemine yeniden yüklenmesi gerektiğinden yeniden başlatma gerekir.
Sistem her başlatıldığında uygulanacak varsayılan modu seçmek için, /etc/selinux/config dosyasındaki "SELINUX=" satırının değerini, modlardan birini belirterek ayarlayın - "enforcing", "permissive" veya " engelli" . Örneğin: "SELINUX=izin veren".

3. SELinux politikaları

Daha önce belirtildiği gibi, SELinux varsayılan olarak Zorlama modunda çalışır; izin verilenler dışındaki herhangi bir eylem otomatik olarak engellendiğinde, her program, kullanıcı veya hizmet yalnızca çalışması için ihtiyaç duyduğu ayrıcalıklara sahiptir, daha fazlasına sahip değildir. Bu oldukça sert bir politikadır ve her iki avantajı da vardır: en üst düzeyde. bilgi Güvenliği ve dezavantajları - sistemi bu modda yapılandırmak, sistem yöneticileri için büyük işçilik maliyetleriyle ilişkilidir, ayrıca, sistemi önemsiz olmayan herhangi bir şekilde kullanmak isterlerse kullanıcıların erişim kısıtlamalarıyla karşılaşma riski de yüksektir. Bu yaklaşım Kurumsal sektörde kabul edilebilir ancak son kullanıcı bilgisayarlarında kabul edilemez. Birçok yönetici bu tür sorunları önlemek için iş istasyonlarında SELinux'u devre dışı bırakır.

Bunu önlemek için, önemli uygulamalar ve httpd, isimli, dhcpd, mysqld gibi hizmetler, bir saldırganın önemli verilere erişmesine izin vermeyecek şekilde önceden yapılandırılmış hedef politikaları tanımlanır. İlkenin tanımlanmadığı uygulamalar unconfined_t etki alanında çalışır ve SELinux tarafından korunmaz. Böylece doğru seçilmiş hedef politikalar, kullanıcı için gereksiz sorunlar yaratmadan, kabul edilebilir bir güvenlik düzeyine ulaşmanıza olanak tanır.

4. SELinux'ta erişim kontrolü

SELinux aşağıdaki erişim kontrol modellerini sağlar:

Tür Uygulama (TE): Hedef politikalarda kullanılan birincil erişim kontrol mekanizması. İzinleri en düşük düzeyde ayrıntılı olarak yönetmenizi sağlar. En esnek ama aynı zamanda en emek yoğun olanıdır. sistem yöneticisi mekanizma.

Rol Tabanlı Erişim Kontrolü (RBAC): Bu modelde erişim hakları roller olarak uygulanır. Rol, sistemin bir veya daha fazla öğesi tarafından sistemin diğer bölümleri üzerinde belirli eylemleri gerçekleştirme iznidir. Temelde RBAC, TE'nin daha da geliştirilmesidir.

Çok Düzeyli Güvenlik (MLS): tüm sistem nesnelerine belirli bir düzeyde erişim atandığı çok düzeyli bir güvenlik modeli. Erişim izni veya reddi yalnızca bu düzeyler arasındaki ilişkiye göre belirlenir.

SELinux'taki tüm işlemler ve dosyalar bir güvenlik bağlamına sahiptir.
Gelin daha yakından bakarak uygulamadaki bağlama bakalım. ana sayfa/var/www/html/index.html adresinde bulunan Apache web sunucusu

$ ls -Z /var/www/html/index.html -rw-r--r-- kullanıcı adı kullanıcı adı system_u:object_r:httpd_sys_content_t /var/www/html/index.html

Standart dosya izinlerine ek olarak SELinux güvenlik bağlamını da görebiliriz: system_u: object_r: httpd_sys_content_t.

Bağlam user:role:type:mls temeline dayanır, ancak mls alanı gizliyken user:role:type alanları görüntülenir. Bu durumda hedef politikayı da görebiliriz httpd_sys_content_t.

Şimdi "httpd" işlemi (Apache web sunucusu) için SELinux güvenlik bağlamına bakalım:

$ps axZ | grep httpd system_u:system_r:httpd_t 3234 ? SS 0:00 /usr/sbin/httpd

Görüldüğü üzere bu süreç httpd_t domaininde çalışmaktadır.

Şimdi ana dizininizdeki bir dosyanın güvenlik içeriğine bakalım:

$ ls -Z /home/kullanıcıadı/dosyam.txt -rw-r--r-- kullanıcı adı kullanıcı adı user_u:object_r:user_home_t /home/kullanıcıadı/dosyam.txt

Dosyanın user_home_t türünde olduğunu görüyoruz, bu tür varsayılan olarak ana dizindeki tüm dosyalara atanmıştır.
Erişime yalnızca aynı türdeki öğeler arasında izin verilir, bu nedenle Apache web sunucusu httpd_sys_content_t türündeki /var/www/html/index.html dosyasını kolayca okuyabilir. Aynı zamanda, Apache httpd_t etki alanında çalıştığından ve kullanıcı adı: kullanıcı adı alanları doldurulmadığından, home/kullanıcı adı/dosyam.txt dosyasına erişemez, ancak bu dosya, adı olmayan işlemler tarafından okunabilir. hedef belirlendi. Bu şekilde, Apache web sunucusunun güvenliği ihlal edilirse, saldırgan httpd_t etki alanında olmayan dosyalara erişemez veya işlemleri çalıştıramaz.

5. SELinux sorunlarını giderme

Er ya da geç SELinux'un bir şeye erişiminizi reddettiği bir durumla karşı karşıya kalacaksınız. Erişim reddinin birkaç ana nedeni vardır:

Yanlış etiketlenmiş dosya.
- Süreç yanlış bağlamda çalışıyor
- Politikada hata. İşlem, politika oluşturulurken dikkate alınmayan bir dosyaya erişim gerektirir.
- İstila girişiminde bulunuldu.

Erişim reddinin ilk üç nedeni oldukça kolay bir şekilde çözümlenirken, izinsiz giriş girişimi sırasında bir alarm çalınır ve kullanıcıya ilgili bir bildirim gönderilir.
Herhangi bir sorunla başa çıkmak için SELinux günlüğüne bakmanız yeterlidir. Varsayılan olarak, denetim işlemi tarafından /var/log/audit/audit.log dosyasına yazılır. Bu işlem çalışmıyorsa, SELinux /var/log/messages dosyasında günlüğe kaydeder; bu durumda tüm erişim kontrol sistemi mesajları, örneğin gerekli satırları hızlı bir şekilde filtrelemenize olanak tanıyan AVC anahtarıyla işaretlenir. grep komutunu kullanarak.
İÇİNDE en son sürümler dağıtımlar (CentOS 5'ten başlayarak), bir yardımcı programdır grafik arayüzü SELinux günlüğünü kullanışlı ve kullanıcı dostu bir biçimde görüntülemenizi sağlayan kullanıcı. Konsoldan sealert -b yazarak arayabilirsiniz. Yardımcı program setroubleshoot paketinin bir parçasıdır. X sunucusu çalışmıyorsa aşağıdaki komutla insanların okuyabileceği raporlar oluşturabilirsiniz:

Sealert -a /var/log/audit/audit.log > /path/to/mylogfile.txt

5.1 Dosya güvenliği içerik etiketlerini değiştirme.

"Chow" ve "chmod" komutları, içindeki bir dosyanın sahibini veya izinlerini değiştirmenize izin verdiği gibi, "chcon" komutu da dosyaların veya dizinlerin SELinux içeriğini değiştirmenize olanak tanır. standart sistem giriş kontrolu.

Birkaç örneğe bakalım.
Apache web sunucusunun sistemde yüklü olduğunu ve sitelerin depolandığı klasörü (varsayılan olarak /var/www/html/'dir) örneğin /html/ olarak değiştirmemiz ve bir dizin oluşturmamız gerektiğini varsayalım. Bu dizindeki html dosyası.
# mkdir /html # touch /html/index.html # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:default_t /html/index.html # ls -Z | grep html drwxr-xr-x root root user_u:object_r:default_t html

Yukarıda hem /html dizininin hem de güvenlik bağlamındaki /html/index.html dosyasının default_t türünde olduğunu görüyoruz. Bu, Apache'yi başlatıp bu dizin veya dosyayla çalışmayı denediğimizde SELinux'un erişimimizi engelleyeceği anlamına gelir. Ve bu kesinlikle doğru olacaktır çünkü Apache ile etkileşime giren dosyalar için doğru güvenlik bağlamı httpd_sys_content_t'dir.
Bağlamı değiştirelim ve her şeyin doğru yapılıp yapılmadığını kontrol edelim:

# chcon -v --type=httpd_sys_content_t /html /html içeriği user_u:object_r:httpd_sys_content_t olarak değiştirildi # chcon -v --type=httpd_sys_content_t /html/index.html /html/index.html içeriği user_u:object_r olarak değiştirildi :httpd_sys_content_t # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:httpd_sys_content_t /html/index.html # ls -Z | grep html drwxr-xr-x kök kök user_u:object_r:httpd_sys_content_t html
Her dosyayı ve her dizini manuel olarak işlemeniz gerekmez; yalnızca -R özyinelemeli dizin geçiş seçeneğini kullanabilirsiniz:

# chcon -Rv --type=httpd_sys_content_t /html

Güvenlik bağlamındaki bu tür değişiklikler yeniden başlatmalar arasında da devam edecek, ancak dosya sistemi etiketleri değiştirilirse değişiklikler kaybolacaktır. Bakım ve çalıştırma sırasında bu durum nadir değildir. Böyle bir durumda doğru çözüm (tabii ki test ettikten sonra) ek bir kural oluşturmak ve ardından bunu yerel yerel kurallarla birleştirmek olacaktır. Böylece temel kurallardan daha yüksek önceliğe sahip olacaktır.

SELinux'un dosya sistemi etiketlerini değiştirdikten sonra bile düzgün çalışması için, SELinux'u bir GUI arayüzü ile yönetmeye yönelik her iki aracı ve semanage konsolu yardımcı programını kullanabiliriz:

Semanage fcontext -a -t httpd_sys_content_t "/html(/.*)?"

Yukarıdaki örnekte httpd_sys_content_t içeriğini /html dizininde bulunan tüm dosyalara atadık.

5.2 SELinux güvenlik bağlamını geri yükleme.

"Restorecon" komutu, güvenlik içeriğini varsayılan olarak atanmış olanla değiştirmenize olanak tanır.
Örnek olarak yine Apache web sunucusunu kullanıyoruz. Kullanıcının kendi ana dizinindeki index.html dosyasının bir kopyasını düzenlediğini ve bunu (mv komutuyla) web sitelerinin depolandığı dizine (/var/www/html) taşıdığını varsayalım.

Lütfen kopyalarken (cp komutu), dosyanın güvenlik içeriğinin hedef dizinin içeriğiyle çakışacağını, taşıma sırasında ise güvenlik içeriğinin kaynak bağlamıyla çakışacağını unutmayın. Elbette güvenlik bağlamını değiştirmek için chcon komutunu kullanabiliriz, ancak taşınan dosyalar artık /var/www/html dizininde olduğundan, o dizinde bulunan tüm dosyalar için bağlam ayarlarını kolayca geri yükleyebiliriz.

Yalnızca index.html dosyasının içeriğini geri yüklemek için şu komutu kullanabiliriz:

# restorecon -v /var/www/html/index.html

Dizinin tamamını yinelemeli olarak dolaşmak ve içerdiği tüm dosyaların içeriğini değiştirmek istiyorsak, aşağıdaki komutu kullanırız:

# restorecon -Rv /var/www/html

5.3 Tüm dosya sistemi için etiketleri değiştirme.

Bazen tüm dosya sistemindeki güvenlik etiketlerini yeniden ayarlamak gerekebilir. Çoğu zaman bu işlem, sistem bir süre kapatıldıktan sonra SELinux'un yeniden etkinleştirilmesi sırasında gerçekleştirilir. Politika yönetimi türünü katı olarak değiştirirsek de bu gereklidir (bu durumda tüm süreçler kendi özel etki alanlarında çalışır; hiç kimse unconfined_t etki alanında çalışamaz).

Otomatik olarak yeniden bölümlendirmek için dosya sistemi bir sonraki yeniden başlatmanızda aşağıdaki komutları girin:
# /.autorelabel'e dokunun # yeniden başlat
Bazen otomatik yeniden bölümleme çalışmaz (çoğunlukla SELinux'un devre dışı olduğu dağıtım kitinin güncellendiği durumlarda). Bu durumda aşağıdaki komutu kullanın:

# genhomedircon # /.autorelabel'e dokunun # yeniden başlat

5.4 Bağlantı noktalarına erişimin sağlanması.

Genellikle Apache gibi hizmetlerin standart olmayan bağlantı noktalarını dinleyebilmesini ve bu bağlantı noktalarından gelen bağlantıları kabul edebilmesini isteriz. Temel SELinux politikaları yalnızca belirli bir hizmetle sıkı bir şekilde ilişkili olan önceden tanımlanmış bağlantı noktalarına erişime izin verir. Diyelim ki Apache'nin 81 numaralı bağlantı noktasını dinlemesini istiyoruz. Bu durumda semanage komutunu kullanarak bir kural eklememiz gerekir:

# semanage bağlantı noktası -a -t http_port_t -p tcp 81

SELinux'un erişim sağladığı bağlantı noktalarının tam listesi şu şekilde görüntülenebilir:

# semanage bağlantı noktası -l

Kılavuzun bir sonraki ikinci bölümünde sistem politikalarının esnek yapılandırılma olasılığını göstereceğiz.

Güvenliği Geliştirilmiş Linux (SELinux), Linux'ta erişim kontrolü güvenlik politikaları için destek sağlayan bir özellik mekanizmasıdır.

SELinux, kullanıcılara veya yardımcı programlara erişim için kurallar oluşturabilir, bu da yardımcı programların bazı erişim yeteneklerini, bu yetenekleri ve davranışlarını kurallar şeklinde tanımlayarak sınırlamayı mümkün kılar ve SELinux kullanan işletim sistemi bu kurallara uyumu izleyecektir. Bu başlıkta size CentOS'ta SELinux'u nasıl devre dışı bırakacağınızı veya etkinleştireceğinizi anlatacağım. Bazı dağıtımlarda SELinux varsayılan olarak etkindir; bu, SELinux'un nasıl çalıştığını veya nasıl yapılandırılacağını anlamadığınız takdirde bazı istenmeyen davranışlara neden olabilir.

SELinux'u devre dışı bırakmak için bu yazıda bahsettiğimiz 4 farklı yöntemden herhangi birini kullanabilirsiniz.

SELinux, Linux Çekirdeğinde tanımlanan zorunlu erişim kontrolleri de dahil olmak üzere güvenlik politikalarını uygulayacaktır. Sistemdeki her dosya ve işlem, SELinux tarafından kullanılacak belirli kısayollarla etiketlenecektir. Komutu kullanabilir ve bu kısayolları aşağıda gösterildiği gibi görüntüleyebilirsiniz:

# ls -Z /etc/

Değil tam liste bahsettiğim sizin için farklı olabilir.

CentOS'ta SELinux'u devre dışı bırakmanın 1. yöntemi. Geçici.

SELinux'u geçici olarak devre dışı bırakmak için /selinux/enforce dosyasını aşağıda gösterildiği gibi düzenlemeniz gerekir. Lütfen sistem yeniden başlatıldıktan sonra bu seçeneğin artık mevcut olmayacağını unutmayın.

Şimdi SELinux'un sunucuda hangi duruma sahip olduğunu kontrol edelim:

# kedi /selinux/enforce 1

Veya şunları kullanabilirsiniz:

# /usr/sbin/sestatus SELinux durumu: etkin SELinuxfs montajı: /selinux Geçerli mod: izin verilen Yapılandırma dosyasındaki mod: zorlama Politika sürümü: 24 Yapılandırma dosyasındaki politika: hedefli

Bu, açık olduğu anlamına gelir. Kapatmak için aşağıdaki komutu kullanın:

# echo 0 > /selinux/enforce

Ve tekrar kontrol edelim:

# kedi /selinux/enforce 0

Setenforce için olası seçenekler şunlardır:

  • 1 (etkinleştir).
  • 0 (devre dışı bırak).

SELinux'u devre dışı bırakmak için aşağıda gösterildiği gibi setenforce komutunu da kullanabilirsiniz. İşte bu komutu çalıştırmanın bir örneği:

#setenforce 0

Veya başka bir kullanım örneği sunacağım:

# setenforce İzin Veren

Not: Kontrol etmek için başka bir harika komut daha var:

# getenforce İzin Veren

CentOS'ta SELinux'u devre dışı bırakmanın 2. yöntemi. Son olarak!

CentOS'ta SELinux'un durumunu kontrol edelim.

# kedi /etc/selinux/config

Açtım, kapatmak istiyorum, sonra bunu yapmak için yapılandırmayı açıp şunu yazmanız gerekiyor:

# vim /etc/selinux/config

Bulmak gerek:

SELINUX=etkin

İle ikame edilmiş:

Aşağıdaki ekran görüntüsünde gösterildiği gibi:

Bundan sonra işletim sistemimizi yeniden başlatmamız gerekiyor:

# yeniden başlat

3. yöntem. Grub önyükleyicisinde SELinux'u devre dışı bırakmak.

Sisteminizde /etc/selinux/config dosyasını bulamıyorsanız, aşağıda gösterildiği gibi GRUB önyükleme yükleyicisine bir parametre ileterek SELinux'u devre dışı bırakabilirsiniz.

# kedi /boot/grub/grub.conf

4. yöntem. SELinux'ta yalnızca belirli bir hizmeti devre dışı bırakma - HTTP/Apache

SELinux'un tamamını devre dışı bırakmak istemiyorsanız, SELinux'u yalnızca belirli bir hizmet için de devre dışı bırakabilirsiniz. Örneğin, HTTP/Apache sunmak için SELinux'u devre dışı bırakmak istiyorsanız, /etc/selinux/targeted/booleans.conf dosyasındaki httpd_disable_trans değişkenini değiştirmeniz gerekir.




Tepe