Ana içeriğe atla

selinux aksaklık nedeninin incelenmesi

selinux kullanmaya başladığımızda, audit ile ilgili sorun yaşamaya başladıysak ilk yapmamız gereken nedeni sorunun nedenini sisteme sormak olur.

Öncelikle için policy paketleri ile ilgili policycoreutils-python-2.5-29.el7_6.1.x86_64 paket yüklenmiş olmalı.

[root@rhel7lab01 ~]#
[root@rhel7lab01 ~]# yum info policycoreutils-python-2.5-29.el7_6.1.x86_64
Loaded plugins: langpacks, priorities, product-id, ps, remove-with-leaves, search-disabled-repos, show-leaves, subscription-manager, upgrade-helper
Installed Packages
Name        : policycoreutils-python
Arch        : x86_64
Version     : 2.5
Release     : 29.el7_6.1
Size        : 1.2 M
Repo        : installed
From repo   : rhel-7-server-rpms
Summary     : SELinux policy core python utilities
URL         : http://www.selinuxproject.org
License     : GPLv2
Description : The policycoreutils-python package contains the management tools use to manage
            : an SELinux environment.

[root@rhel7lab01 ~]#

Paket yüklüyse, öncelikle izin verilmeyen işlemleri listeleri, hangisi bizim aksaklığımızla alakalı ise audit bilgisini alarak izin verebiliriz

 grep  denied /var/log/audit/audit.log

[root@rhel7lab01 ~]# grep 1564549471.069:2262  /var/log/audit/audit.log |audit2why
type=AVC msg=audit(1564549471.069:2262): avc:  denied  { read } for  pid=15715 comm="nginx" name="/" dev="dm-2" ino=64 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:unlabeled_t:s0 tclass=dir permissive=0

        Was caused by:
                Missing type enforcement (TE) allow rule.

                You can use audit2allow to generate a loadable module to allow this access.

type=AVC msg=audit(1564549408.164:2259): avc:  denied  { read } for  pid=15703 comm="nginx" name="/" dev="dm-2" ino=64 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:unlabeled_t:s0 tclass=dir permissive=0                                                           

        Was caused by:
                Missing type enforcement (TE) allow rule.

                You can use audit2allow to generate a loadable module to allow this access.

type=AVC msg=audit(1564549419.241:2260): avc:  denied  { read } for  pid=15703 comm="nginx" name="rhel7" dev="dm-2" ino=67159104 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:unlabeled_t:s0 tclass=dir permissive=0                                             

        Was caused by:
                Missing type enforcement (TE) allow rule.

                You can use audit2allow to generate a loadable module to allow this access.

incelediğimiş işlem güvenebileceğimiz bir işlemse buna izin aşağıdaki gibi izin verebiliriz.


[root@rhel7lab01 ~]# grep nginx   /var/log/audit/audit.log |audit2allow   > nginx.te
[root@rhel7lab01 ~]# cat nginx.te 


#============= httpd_t ==============

#!!!! WARNING: 'unlabeled_t' is a base type.
allow httpd_t unlabeled_t:dir read;
[root@rhel7lab01 ~]# 

[root@rhel7lab01 ~]# grep nginx   /var/log/audit/audit.log |audit2allow  -M nginx 
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i nginx.pp

[root@rhel7lab01 ~]# semodule -i nginx.pp
[root@rhel7lab01 ~]# 

selinux kullanıyorsak, sistemimizde yüklü olması faydalı olacak paketlerden bir taneside setools-console paketi. Bu paket yüklü değilse;
yum install setools-console
yükleyebiliriz. Bu kapetle gelen araçlardan bir taneside seinfo.
seinfo ile tüm selinux ile ilgili tip/etiketleri görebiliriz.
Bu komutu direk kullanacak olursak çok fazla bilgi ekrana yazılır.
# seinfo -t |wc -l
4448
 Bundan dolayı http ile ilgili olanları görmek istiyorsak;
seinfo -t |grep http


Sistemimizdeki varsayılan selinux etikelerini görmek için semanage aracından faydalanabiliriz.

[root@server1 ~]# semanage fcontext -l

Şayet web dizinimizi standart bir dizinden farklı bir yere ayarladığımızda ayarladığımız dizinin web sunucusu tarafından okunmasına izin verilmesi için semanage ile izin vermemiz gerekiyor.

örneğin web  kök dizinimizi /var/www/html den /web dizinine çevirecek olursak,
web servisininin bu dizini okuyabilmesi için aşağıdaki gibi /web dizinini etiketleriz.

semanage fcontext  -a -t httpd_sys_content_t '/web(/.*)?'

daha detaylı işlemler yapmak istiyorsak aşağıdakileri inceleyebiliriz.
# seinfo -t |grep httpd_sys
   httpd_sys_content_t
   httpd_sys_htaccess_t
   httpd_sys_ra_content_t
   httpd_sys_rw_content_t
   httpd_sys_script_t
   httpd_sys_script_exec_t

ilave olarak kullanıcılar kendi homedizinlerinde web yayını yapacaklarsa;
httpd_enable_homedirs  özelliğini on yapmamız gerekiyor. Varsayılan olarak off dur ve selinux aktif olan sistemde normal kullancıları home dizinlerinde web yayını yapamazlar.

httpd_enable_homedirs --> off
setsebool -P httpd_enable_homedirs  on








Yorumlar

Bu blogdaki popüler yayınlar

ttnet tilgin hg1332 modem(router) kablosuz özelliğini güçlendirmek

Bu gün ttnetin hediyesi olan tilgin yönlendiriciyle biraz oynayayım dedim Matkap, ve rg316-rp-sma kablo alıp cihazın kapağını tekrar açtım. Matkapla usb çıkışın yanına bir delik açarak kaployu taktım. Sonra elimdeki antenlerden ikiti tanesini takıp test ettim. . Bu iki antenin, gözle farkedilir derecede sinyalleri kuvvetlendirdiğini fark ettim.. Normalde bu cihaz ile evin iki en uc noktaları arasında haberleşme olmaz iken şimdi en kör iki uç arasında sorun olmadan kablosuz kullanılabildiğini gördüm. Arada 4 tane kuvvetli beton duvar mevcut. Deneme bitti, tilgin rafa kalktı yine. Her nekadar ben bu cihazı kaldırsamda, kullanmak zorunda olan arkadaşlar, bir kablo ve ikitane anten takarak her herde kullanabilirler. İyi eğlenceler.