Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 28349|Yanıt: 4

[linux] Linux'ta selinux'un ne olduğunu kapsamlı bir şekilde anlamak

[Bağlantıyı kopyala]
Yayınlandı 5.07.2019 11:25:50 | | | |
1. Önsöz

Güvenlik Destekli Linux (SELinux), Linux çekirdek modülü ve Linux'un bir güvenlik alt sistemidir.

SELinux öncelikle NSA tarafından geliştirildi. Linux çekirdekleri 2.6 ve üzeri sürümler zaten SELinux modüllerini entegre ediyor.

SELinux çok karmaşık ve öğrenmesi zor olan birçok kavramsal unsur içeriyor. Birçok Linux sistem yöneticisi, SELinux'u sorun buldukları için kapatmıştır.

SELinux'u ustalaşıp doğru kullanırsanız, bence tüm sistem temelde "yok edilemez" bir noktaya ulaşabilir (mutlak bir güvenlik olmadığını unutmayın).

SELinux'un temel kavramlarını ve basit yapılandırma yöntemlerini ustalaştırmak, her Linux sistem yöneticisi için zorunlu bir derstir.

Bu makale CentOS 7.4.1708 üzerinden dayanmaktadır.

Bu makale tamamen kişisel bir öğrenme deneyimi paylaşımı ve alışverişidir, hatalar kaçınılmazdır, sadece referans amaçlıdır! Bir hata bulursanız lütfen belirtin, çok teşekkürler!

2. SELinux'un rolü ve izin yönetimi mekanizması

2.1 SELinux'un rolü

SELinux'un ana işlevi, sistemdeki hizmet süreçlerinin erişebileceği kaynakları en aza indirmektir (en az ayrıcalık ilkesi).

Root olarak çalışan bir ağ servisinde 0day güvenlik açığı varsa, hackerlar bu açığı kullanarak sunucunuzda istediklerini root olarak yapabilirler. Korkutucu değil mi?

SELinux bu sorunu çözmek için burada.

2.2 DAC

SELinux kullanmayan bir işletim sisteminde, bir kaynağa erişilemeyeceğini belirleyen faktör, bir kaynağın ilgili kullanıcının (okuma, yazma, yürütme) izinlerine sahip olup olmadığıdır.

Bu kaynağa erişim süreci yukarıdaki koşulları karşıladığı sürece erişilebilir.

En ölümcül sorun, root kullanıcılarının herhangi bir düzenlemeye tabi olmaması ve sistemdeki herhangi bir kaynağa kısıtlama olmadan erişilebilmesidir.

Bu izin yönetim mekanizmasının ana gövdesi, otonom erişim kontrolü (DAC) olarak da bilinen kullanıcıdır.

2.3 MAC

SELinux kullanan bir işletim sisteminde, bir kaynağa erişilemeyeceğini belirleyen faktörler sadece yukarıdaki faktörler değil, aynı zamanda her süreç türünün belirli bir kaynak türüne erişimi olup olmadığıdır.

Bu şekilde, bir süreç root olarak çalışıyor olsa bile, bir kaynağa erişim izni verip vermemeye karar vermeden önce işlem türünü ve erişilebilecek kaynak türlerini belirlemek gerekir. Sürecin aktif alanı da minimuma indirilebilir.

Root olarak çalışan bir servis süreci bile genellikle sadece ihtiyaç duyduğu kaynaklara erişebiliyor. Bir program savunmasız olsa bile, etkinin kapsamı erişmesine izin verilen kaynaklarla sınırlıdır. Güvenlik büyük ölçüde artırıldı.

Bu izin yönetim mekanizmasının ana gövdesi, zorunlu erişim kontrolü (MAC) olarak da bilinen süreçtir.

MAC iki şekilde ayrılır; biri Kategori Güvenliği (MCS) modu, diğeri ise Çok Seviyeli Güvenlik (MLS) modu olarak adlandırılır.

Aşağıdaki eylemler MCS modundadır.

2.4 DAC ve MAC'in karşılaştırması

İşte bunu göstermek için bir fotoğraf.



Gördüğünüz gibi, DAC modunda, ilgili dizin ilgili kullanıcının izinlerine sahip olduğu sürece erişilebilir. MAC modunda, süreçlerin erişebileceği dizin yelpazesiyle de sınırlıdır.

3. SELinux'un temel kavramları

3.1 Konu

Bu tamamen bir süreçle eşitlenebilir.

Not: Anlaşılması kolaylığı için, aksi belirtilmedikçe, süreç aşağıda ana gövde olarak kabul edilir.

3.2 Nesne

Müdür tarafından erişilen kaynaklar. Dosyalar, dizinler, portlar, cihazlar vb. olabilir.

Not: Anlaşılması kolaylığı için, aksi belirtilmedikçe, aşağıdaki belgeler veya dizinler nesne olarak kabul edilir.

3.3 Pola ve Kural

Sistemde genellikle çok sayıda dosya ve süreç bulunur ve zaman ve ek yük tasarrufu için genellikle sadece belirli süreçleri seçici olarak düzenliyoruz.

Ve hangi süreçlerin düzenlenmesi gerektiği ve nasıl kontrol edileceği politika tarafından belirlenir.

Bir poliçede birden fazla kural vardır. Bazı kurallar gerektiğinde etkinleştirilebilir veya devre dışı bırakılabilir (bundan sonra Boolean kuralları olarak adlandırılır).

Kurallar modüler ve genişletilebilir. Yeni bir uygulama kurulurken, uygulama yeni modüller ekleyerek kurallar ekleyebilir. Kullanıcılar ayrıca kuralları manuel olarak ekleyebilir veya çıkarabilirler.

CentOS 7 sisteminde üç politika seti vardır:

1. hedefli: Çoğu ağ servis sürecini kontrol eder. Bu, sistemin varsayılan olarak kullandığı politikadır (aşağıdakilerin hepsi kullanılmıştır).

2. Asgari: Hedeflenen sisteme göre yalnızca seçilmiş ağ servis süreçleri düzenlenir. Genelde hayır.

3. MLS: Çok seviyeli güvenlik koruması. Tüm süreçleri düzenleyin. Bu en katı politikadır ve yapılandırması çok zordur. Genellikle, güvenlik için çok yüksek gereksinimler olmadıkça kullanılmaz.

Politikalar /etc/selinux/config içinde ayarlanabilir.

3.4 Güvenlik Bağlamı

Güvenlik bağlamı, SELinux'un merkezinde yer alıyor.

Güvenlik bağlamını "süreç güvenliği bağlamı" ve "belge güvenliği bağlamı" olarak bölüyorum.

Bir Süreç Güvenliği Bağlamı genellikle birden fazla Belge Güvenliği Bağlamına karşılık gelir.

Yalnızca iki aracın güvenlik bağlamı karşılık geldiğinde bir süreç dosyaya erişebilir. Yazışmaları, poliçedeki kurallara göre belirlenir.

Dosya güvenlik bağlamı, dosyanın nerede oluşturulduğu ve onu oluşturan sürece göre belirlenir. Ve sistemin varsayılan değerler seti vardır ve kullanıcılar da varsayılan değerleri ayarlayabilir.

Sadece dosyaları taşımak, dosyalarınızın güvenlik bağlamını değiştirmediğini unutmamak önemlidir.

Güvenlik bağlamının yapısı ve anlamı

Güvenlik bağlamında dört alan bulunur ve bunlar iki noktayla ayrılır. Şekiller gibi: system_u:object_r:admin_home_t:s0.


3.5 SELinux Çalışma Modu

SELinux'un üç çalışma modu vardır:

1. zorunluluk: Zorunlu mod. SELinux kurallarının ihlalleri engellenecek ve kayıtlara kaydedilecektir.

2. İzin verici: Tolerans modu. SELinux kural ihlalleri yalnızca kayıtlara kaydedilir. Genelde hata ayıklama için.

3. devre dışı bırakın: SELinux'u kapatın.

SELinux çalışma modu /etc/selinux/config içinde ayarlanabilir.

Devre dışı bırakmaktan zorunlu veya izin vericiye geçmek istiyorsanız, sistemi yeniden başlatmanız gerekecek. Ve tam tersi.

Zorunlu ve İzin modları Setenforce 1|0 komutuyla hızlıca değiştirilebilir.

Sistem bir süredir SELinux kapalıyken çalışıyorsa, SELinux açıldıktan sonraki ilk yeniden başlatmanın daha yavaş olabileceğini belirtmek önemlidir. Çünkü sistem, diskteki dosyalar için güvenli bir bağlam yaratmak zorunda (yaklaşık 10 dakika yeniden başlattığımı ve cihazın öldüğünü düşündüğümü söyledim...... )。

SELinux kayıtları auditd.service yardımıyla kaydedilmeli, lütfen devre dışı bırakmayın.

3.6 SELinux İş Akışı

İşte bir fotoğraftan alıntı, çok fazla açıklama olmadan.



Not: Yukarıdaki güvenlik metni güvenlik bağlamına atıfta bulunur.

4. Temel SELinux işlemleri

4.1 Bir dosyanın veya dizinin güvenlik bağlamını sorgulama

Komut temel kullanımı

ls -z

Kullanım örnekleri

/etc/hostların güvenlik bağlamını sorgulayın.

ls -Z /etc/hosts

İdam sonuçları

-rw-r--r--. kök kök system_u:object_r:net_conf_t:s0 /etc/hosts

4.2 Sürecin güvenlik bağlamını sorgulama

Komut temel kullanımı

ps auxZ | grep -v grep | grep

Kullanım örnekleri

Nginx ile ilgili süreçlerin güvenlik bağlamını sorgulayın.

ps auxZ | grep -v grep | Grep Nginx

İdam sonuçları

system_u:system_r:httpd_t:s0 kök 7997 0.0 0.0 122784 2156 ? Ss 14:31 0:00 nginx: ana süreç /usr/sbin/nginx

system_u:system_r:httpd_t:s0 nginx 7998 0.0 0.0 125332 7560 ? S 14:31 0:00 nginx: işçi süreci

4.3 Bir dosyanın veya dizinin güvenlik bağlamını manuel olarak değiştirmek

Komut temel kullanımı

CHCON [...]

Seçenek fonksiyonu -u Güvenlik bağlamının kullanıcı alanını değiştir -r Güvenlik bağlamının rol alanını değiştir -t Güvenlik bağlamının tür alanını değiştir -l Güvenlik bağlamının seviye alanını değiştir --referans Belirlenen dosya veya dizinle tutarlı güvenlik bağlamını değiştir -R Özyinelemeli işlem -h Soft link'in güvenlik bağlamını değiştir (bu seçenek olmadan soft link'in ilgili dosyasını değiştir)

Kullanım örnekleri

Testin güvenlik bağlamını aaa_u:bbb_r:ccc_t:s0 olarak değiştirin.

chcon -u aaa_u -r bbb_r -t ccc_t test

4.4 Bir dosyanın veya dizinin güvenlik bağlamını varsayılan değerine geri döndür

Komut temel kullanımı

RestoreCon [seçenekler] [...]

Seçenek Fonksiyonu - V Baskı İşlemi Prosedürü - R Özyinelemeli İşlem

Kullanım örnekleri

Nginx sunucunuzun dizinine bazı web dosyaları ekledikten sonra, bu yeni dosyalar için doğru güvenlik bağlamını ayarlayın.

restorecon -R /usr/share/nginx/html/

4.5 Boolean kuralları ve sistemdeki durumları sorgulama

Komut temel kullanımı

getsebool -a

Komut ya tüm kuralları ya da sadece bir kuralı sorguladığı için, genellikle önce tüm kuralları sorgular, sonra grep ile filtreler.

Kullanım örnekleri

httpd ile ilgili Boolean kurallarını sorgulayın.

getsebool -a | grep httpd

İdam sonuçları

httpd_anon_write -->

httpd_builtin_scripting -->

httpd_can_check_spam -->

httpd_can_connect_ftp -->

#以下省略

4.6 Boolean kuralının Değiştirilmesi

Komut temel kullanımı

Setsebool [seçenek]

Seçenek fonksiyonu -P yeniden başlatma hâlâ geçerlidir

Kullanım örnekleri

httpd_anon_write kuralları açın.

setsebool -P httpd_anon_write on

4.7 Bir Dizin İçin Varsayılan Güvenlik Bağlamı Ekle

Komut temel kullanımı

semanage fcontext -a -t "(/.*)?"

Not: Bir dizinin veya dosyanın varsayılan güvenlik bağlamı, grep filtreleme ile birlikte semanage fcontext -l komutu kullanılarak görüntülenebilir.

Kullanım örnekleri

Nginx'e yeni bir site dizini /usr/share/nginx/html2 ekledikten sonra, orijinal dizinle aynı varsayılan güvenlik bağlamını ayarlamanız gerekir.

semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/html2(/.*)?"

4.8 Belirli işlem türlerinin izin verdiği portları ekleyin

Komut temel kullanımı

semanage port -a -t -p

Not: Çeşitli hizmet türleri için izin verilen port numaraları, grep filtreleme ile semanage port -l komutu kullanılarak görüntülenebilir.

Kullanım örnekleri

Nginx için HTTP servisleri için 10080 portunu kullanmanız gerekir.

Semanage port -a -t http_port_t -p TCP 10080

5. SELinux hata analizi ve çözümü

5.1 SELinux Logs'u Anlama

SELinux etkinleştirildiğinde, birçok hizmetin bazı normal davranışları ihlal olarak kabul edilir (hem başlıkta hem de aşağıdaki hatalarda).

Şu anda, bunları analiz etmek ve çözmek için SELinux ihlal kayıtlarını kullanmamız gerekiyor.

SELinux ihlal kayıtları /var/log/audit/audit.log içinde kaydedilir.

/var/log/audit/audit.log 的内容大概是这样的。

type=LOGIN msg=audit(1507898701.391:515): pid=8523 uid=0 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=25 res=1

type=USER_START msg=audit(1507898701.421:516): pid=8523 uid=0 auid=0 ses=25 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 msg='op=PAM:session_open grantors=pam_loginuid,pam_ keyinit,pam_limits,pam_systemd acct="root" exe="/usr/sbin/crond" hostname=? addr=? terminal=cron res=başarı'

...

Dosya çok fazla içerik içeriyor ve SELinux hatalarıyla ilgisi olmayan birçok sistem denetim günlüğüyle karışmış. Analiz için sealert aracını kullanacağız (eğer komut komutunu bulamazsa, setroubleshoot paketini yükleyin).

5.2 Sealert ile hataları analiz et

Komut temel kullanımı

sealert -a /var/log/audit/audit.log

Komut yürütüldükten sonra, sistemin kayıtlardaki ihlalleri analiz etmek ve analiz raporu sunmak için biraz zaman ayırması gerekir.




Önceki:CentOS7 Güvenlik Duvarını Görüntü ve kapatma
Önümüzdeki:HDFS'nin Java API arayüzüne erişimi ustalıkla yönetin
 Ev sahibi| Yayınlandı 22.07.2021 17:17:58 |
SELinux'u kapat

Getenforce #查看是否是 devre dışı bırakırsanız, aşağıdaki komutu çalıştırın
vim /etc/selinux/config
SELINUX=zorunlu bırakmayı SELINUX=disabled olarak değiştirin, kaydet ve çıkış
 Ev sahibi| Yayınlandı 15.10.2021 13:21:42 |
 Ev sahibi| Yayınlandı 15.10.2021 14:22:40 |
Bölüm takasını devre dışı bırak

 Ev sahibi| Yayınlandı 3.09.2024 14:16:43 |
SELINUX'u kapat





Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com