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.
Ö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
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
Yorum Gönder