Pandhuan Pamula kanggo SELinux

Pandhuan Pamula kanggo SELinux

Terjemahan artikel sing disiapake kanggo siswa kursus "Linux Keamanan"

SELinux utawa Security Enhanced Linux minangka mekanisme kontrol akses sing ditingkatake sing dikembangake dening Badan Keamanan Nasional AS (NSA) kanggo nyegah gangguan sing mbebayani. Iki ngetrapake model kontrol akses sing dipeksa (utawa wajib) (Inggris Mandatory Access Control, MAC) ing ndhuwur model discretionary (utawa selektif) sing ana (English Discretionary Access Control, DAC), yaiku, ijin kanggo maca, nulis, nglakokake.

SELinux duwe telung mode:

  1. Enforcing - penolakan akses adhedhasar aturan kabijakan.
  2. Permisif - tetep log saka tumindak sing nglanggar kawicaksanan, kang bakal dilarang ing mode enforcing.
  3. dipatèni - mateni lengkap SELinux.

Kanthi gawan setelan ing /etc/selinux/config

Ngganti mode SELinux

Kanggo ngerteni mode saiki, mbukak

$ getenforce

Kanggo ngganti mode dadi permisif jalanake printah ing ngisor iki

$ setenforce 0

utawa, kanggo ngganti mode saka permissive ing nglakokaké, eksekusi

$ setenforce 1

Yen sampeyan kudu mateni SELinux kanthi lengkap, mula iki mung bisa ditindakake liwat file konfigurasi

$ vi /etc/selinux/config

Kanggo mateni, ganti parameter SELINUX kaya ing ngisor iki:

SELINUX=disabled

Nyetel SELinux

Saben file lan proses ditandhani karo konteks SELinux, sing ngemot informasi tambahan kayata pangguna, peran, jinis, lsp. Yen iki pisanan sampeyan ngaktifake SELinux, sampeyan kudu ngatur konteks lan label. Proses menehi label lan konteks dikenal minangka tagging. Kanggo miwiti menehi tandha, ing file konfigurasi kita ngganti mode kanggo permissive.

$ vi /etc/selinux/config
SELINUX=permissive

Sawise nyetel mode permissive, nggawe file didhelikake kosong ing ROOT karo jeneng autorelabel

$ touch /.autorelabel

lan miwiti maneh komputer

$ init 6

Cathetan: Kita nggunakake mode permissive kanggo menehi tandha, wiwit nggunakake mode nglakokaké bisa nyebabake sistem kacilakan nalika urip maneh.

Aja kuwatir yen download macet ing sawetara file, menehi tandha butuh sawetara wektu. Sawise menehi tandha rampung lan sistem sampeyan wis boot, sampeyan bisa pindhah menyang file konfigurasi lan nyetel mode nglakokakélan uga mlaku:

$ setenforce 1

Sampeyan saiki wis kasil ngaktifake SELinux ing komputer.

Ngawasi log

Sampeyan bisa uga nemoni sawetara kesalahan nalika menehi tandha utawa nalika sistem mlaku. Kanggo mriksa manawa SELinux sampeyan bisa digunakake kanthi bener lan yen ora ngalangi akses menyang port, aplikasi, lan liya-liyane, sampeyan kudu ndeleng log. Log SELinux dumunung ing /var/log/audit/audit.log, nanging sampeyan ora perlu maca kabeh kanggo nemokake kesalahan. Sampeyan bisa nggunakake sarana audit2why kanggo nemokake kesalahan. Jalanake printah ing ngisor iki:

$ audit2why < /var/log/audit/audit.log

Akibaté, sampeyan bakal nampa dhaptar kesalahan. Yen ora ana kesalahan ing log, mula ora ana pesen sing bakal ditampilake.

Konfigurasi Kebijakan SELinux

Kabijakan SELinux minangka sakumpulan aturan sing ngatur mekanisme keamanan SELinux. Kabijakan nemtokake sakumpulan aturan kanggo lingkungan tartamtu. Saiki kita bakal sinau carane ngatur kabijakan kanggo ngidini akses menyang layanan sing dilarang.

1. Nilai logika (switch)

Ngalih (boolean) ngidini sampeyan ngganti bagean saka kabijakan nalika runtime, tanpa kudu nggawe kabijakan anyar. Dheweke ngidini sampeyan nggawe owah-owahan tanpa reboot utawa nyusun ulang kabijakan SELinux.

Conto:
Ayo dadi ngomong kita pengin nuduhake direktori ngarep pangguna liwat FTP maca / nulis, lan kita wis nuduhake, nanging nalika kita nyoba kanggo ngakses, kita ora weruh apa-apa. Iki amarga kabijakan SELinux nyegah server FTP maca lan nulis menyang direktori ngarep pangguna. Kita kudu ngganti kabijakan supaya server FTP bisa ngakses direktori ngarep. Ayo ndeleng apa ana switch kanggo iki kanthi nindakake

$ semanage boolean -l

Printah iki bakal nampilake saklar sing kasedhiya kanthi kahanan saiki (aktif utawa mateni) lan deskripsi. Sampeyan bisa nyaring telusuran kanthi nambahake grep kanggo nemokake asil mung ftp:

$ semanage boolean -l | grep ftp

lan sampeyan bakal nemokake ing ngisor iki

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

Ngalih iki dipatèni, supaya kita bakal ngaktifake karo setsebool $ setsebool ftp_home_dir on

Saiki daemon ftp kita bakal bisa ngakses direktori ngarep pangguna.
Cathetan: Sampeyan uga bisa entuk dhaptar saklar sing kasedhiya tanpa katrangan kanthi nindakake getsebool -a

2. Label lan konteks

Iki minangka cara sing paling umum kanggo ngetrapake kabijakan SELinux. Saben file, folder, proses lan port ditandhani karo konteks SELinux:

  • Kanggo file lan folder, label disimpen minangka atribut lengkap ing sistem file lan bisa dideleng nganggo printah ing ngisor iki:
    $ ls -Z /etc/httpd
  • Kanggo pangolahan lan port, labeling dikelola dening kernel, lan sampeyan bisa ndeleng label kasebut kaya ing ngisor iki:

proses

$ ps –auxZ | grep httpd

port

$ netstat -anpZ | grep httpd

Conto:
Saiki ayo goleki conto kanggo luwih ngerti label lan konteks. Ayo kita duwe server web sing, tinimbang direktori /var/www/html/ использует /home/dan/html/. SELinux bakal nganggep iki minangka nglanggar kabijakan lan sampeyan ora bakal bisa ndeleng kaca web sampeyan. Iki amarga kita durung nyetel konteks keamanan sing digandhengake karo file HTML. Kanggo ndeleng konteks keamanan standar, gunakake printah ing ngisor iki:

$ ls –lz /var/www/html
 -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

Ing kene kita entuk httpd_sys_content_t minangka konteks kanggo file html. Kita kudu nyetel konteks keamanan iki kanggo direktori saiki, sing saiki duwe konteks ing ngisor iki:

-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

Prentah alternatif kanggo mriksa konteks keamanan file utawa direktori:

$ semanage fcontext -l | grep '/var/www'

Kita uga bakal nggunakake semanage kanggo ngganti konteks yen wis nemokake konteks keamanan sing bener. Kanggo ngganti konteks /home/dan/html, jalanake printah ing ngisor iki:

$ semanage fcontext -a -t httpd_sys_content_t ‘/home/dan/html(/.*)?’
$ semanage fcontext -l | grep ‘/home/dan/html’
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html

Sawise konteks diganti nggunakake semanage, printah restorecon bakal mbukak konteks standar kanggo file lan direktori. Server web kita saiki bakal bisa maca file saka folder kasebut /home/dan/htmlamarga konteks keamanan kanggo folder iki wis diganti dadi httpd_sys_content_t.

3. Nggawe kabijakan lokal

Bisa uga ana kahanan sing cara ing ndhuwur ora ana gunane lan sampeyan entuk kesalahan (avc/denial) ing audit.log. Yen kedadeyan kasebut, sampeyan kudu nggawe kabijakan lokal. Sampeyan bisa nemokake kabeh kesalahan nggunakake audit2why, kaya sing kasebut ing ndhuwur.

Sampeyan bisa nggawe kabijakan lokal kanggo ngatasi kesalahan. Contone, kita entuk kesalahan sing ana gandhengane karo httpd (apache) utawa smbd (samba), kita entuk kesalahan lan nggawe kabijakan kanggo dheweke:

apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy

iku http_policy и smb_policy iku jeneng kawicaksanan lokal sing digawe. Saiki kita kudu mbukak kabijakan lokal sing digawe iki menyang kabijakan SELinux saiki. Iki bisa ditindakake kaya ing ngisor iki:

$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp

Kabijakan lokal kita wis diundhuh lan kita ora bakal nampa avc utawa denail maneh ing audit.log.

Iki minangka upaya kanggo mbantu sampeyan ngerti SELinux. Muga-muga sawise maca artikel iki sampeyan bakal luwih kepenak karo SELinux.

Source: www.habr.com

Add a comment