Chapter 5
Managing Selinux Security
dnf install -y policycoreutil policycoreutil-pythonAdi user/group/others səlahiyyətləri DAC (discretionary access control) sayılır, Selinuxun obyekt yönümlü qaydaları isə MAC (mandatory access control) sayılır.
Selinuxun əsas məqsədi istifadəçi məlumatlarını comprimised olan system service-lərindən qorumaqdır. Selinux disable olunduğu halda web servisin compromise edilməsi /tmp və /var/tmp -yə faylların yazılması ilə nəticələnə bilir. Selinux enabled olduqda isə bu hal baş vermir.
Üç modu var: enforcing, permissive (troubleshooting üçün istifadə olunur), disabled
Selinux logs located in:
grep AVC /var/log/audit/audit.loggetenforce - hazirki veziyyete baxmaqcun
setenforce - enforce veya permissive modlari aktivlesdirmekcundur,
# setenforce ile edilen deyisiklik rebootdan sonra oz quvvesini itirir.
/etc/sysconfig/selinux - OS start olanda selinuxa default config vermekcundur.
Hemin faylda:
enforcing=0 - permissive modda basladir
enforcing=1 - enforcing modda basladir
selinux=0 - SELinux disable edir
selinux=1 - SELinux enable edir
Disalbe etmeyin ikinci yolu:
System boot olarken "e" basib, kerneli load eden setrin axirinda yazmaq lazimdmir:
selinux=0
sonra ise basmaq lazimdir: Ctrl+xSelinux targeting haqqında???
Targeted: Focuses on critical processes, less restrictive.
Minimum: More restrictive, confines additional processes.
MLS: Highly restrictive, implements fine-grained Multi-Level Security
SELinux file contexts
Yeni fayllar adətən öz SELinux contextini üst qovluqdan götürür.
Context labels:
adların bitişinə görə:
u - Selinux user
r - role
t - type
s - level (0 is minimum)
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file2/tmp qovluğunda 2 fayl yaradıb biri mv digərini cp əmri ilə /var/www/html qovluğuna ataq:
touch /tmp/file1
touch /tmp/file2
[ali@localhost tmp]$ ls -lZ /tmp/file*
-rw-rw-r--. 1 ali ali unconfined_u:object_r:user_tmp_t:s0 0 Jun 22 14:59 /tmp/file1
-rw-rw-r--. 1 ali ali unconfined_u:object_r:user_tmp_t:s0 0 Jun 22 14:49 /tmp/file2
mv /tmp/file1 /var/www/html/
cp /tmp/file2 /var/www/html
ls -Zl /tmp/file*
-rw-rw-r--. 1 ali ali unconfined_u:object_r:user_tmp_t:s0 0 Jun 22 14:49 file1
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 0 Jun 22 14:58 file2mv əmrindən istifadə etdikdə faylın selinux context type-ı dəyişmir. cp əmrindən istifadə etdikdə isə dəyişir.
Changing file context
Context dəyişmək üçün mövcud olan əmrlər:
chcon
semanage fcontext
restoreconchcon
Test və eksperiment məqsədləri üçün istifadə olunur. Çünki edilmiş dəyişiklik heçvaxt "SELinux context database"də saxlanılmır. restorecon əmri icra edildikdə chcon əmrindən sonrakı dəyişikliklər qüvvədən düşür.
semanage
semanage manpage-də qəşənq nümunələr olduğu üçün baxmağa dəyər:
man semanageweb qovluğunun contextini httpd_sys_content_t-yə dəyişmək üçün:
semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"-a add
-d delete
-l list semanage fcontext -l | grep httpdrestorecon
Dəyişiklikləri yadda saxlamaqçün istifadə olunur.
restorecon -R -v /webDüzgün contextin tapılması
dnf install -y selinux-policy-doc
man -k _selinux | grep httpd (servisin adi)
man httpd_selinuxSELinux booleans
# butun booleanlarin siyahisi
getsebool -a
getsebool httpd_enable_homedirs
sudo getsebool httpd_enable_homedirs on
sudo semanage boolean -l | grep httpd_enable_homedirs
setsebool -P httpd_enable_homedirs on
sudo semanage boolean -l | grep httpd_enable_homedirs
# Default state ilə current state fərqlilikləri göstərir:
sudo semanage boolean -l -CƏgər ftp xidmətində anonymous write aktivləşdirmişiksə selinuxda onu config etməyənə kimi işləməyəcək. config etmək üçün:
# FTP servisine aid booleanlarin siyahisini isteyirikse:
getsebool -a | grep ftp
setsebool -P ftpd_anon_write onSELinux Port Access
SSH default portu dəyişdirmişiksə, selinuxa görə sysctl vasitəsilə sshd restart edildikdə error verə bilər.
selinux-u permissive moda dəyişdikdə əgər problem aradan qalxırsa deməli problem selinuxdadır.
grep AVC /var/log/audit/audit.log | grep sshYuxarıdakı əmr vasitəsilə loqları analiz etdikdə ssh barəsində çıxan xətaları görmək mümkündür.
ssh configinə baxsaq orda da aşağıdakı əmr sətrinin mövcud olduğunu görmək olar. default port dəyişdikdə selinux-a bu barədə xəbər etmək lazımdır.
vim /etc/ssh/sshd_configsemanage port -a -t sshd_port_t -p 2222 #PORTNUMBER
# context is already assigned erroru cixarsa "-m" isledilmelidir argument olaraq.LOGs
journalctl | grep selart # it gives you UUID
sealert -l <UUID>
autorelable # error verirse reboot vaxti
grub troubleshooting mode-a girib kernel setrinin axirina yaziriq
"systemd.unit=emergency.target"
emergency istifadecisinin parolu: emergency.target
.autorelable-i silirik.
silende error verse ki read-only filesystem
mount -o remount,rw /
rm -rf /.autorelabel
restorecon -Rv /Troubleshooting
Əgər selinux problem çıxardırsa:
setenforce 0
Loqlara bax:
grep AVC /var/log/audit/audit.log
selinux manualina bax:
dnf install selinux-policy-doc
SEALERT:
dnf provides */sealert # eger setroubleshoot-server cixmayibsa install etmekde fayda var.
journalctl | grep sealert
selart -l <UUID>Last updated
Was this helpful?