Pituduh Pemula pikeun SELinux

Pituduh Pemula pikeun SELinux

Tarjamahan tina artikel disusun pikeun siswa tangtu "Kaamanan Linux"

SELinux atanapi Security Enhanced Linux mangrupikeun mékanisme kontrol aksés anu ditingkatkeun anu dikembangkeun ku Badan Kaamanan Nasional AS (NSA) pikeun nyegah intrusi jahat. Éta ngalaksanakeun modél kontrol aksés anu dipaksa (atanapi wajib) (Inggris Mandatory Access Control, MAC) dina luhureun modél discretionary (atanapi selektif) anu aya (English Discretionary Access Control, DAC), nyaéta, idin pikeun maca, nyerat, ngaéksekusi.

SELinux gaduh tilu modeu:

  1. Ngalaksanakeun - panolakan aksés dumasar kana aturan kawijakan.
  2. permisif - ngajaga log lampah nu ngalanggar kawijakan, nu bakal dilarang dina mode enforcing.
  3. cacad - nganonaktipkeun lengkep SELinux.

Sacara standar, setélan aya dina /etc/selinux/config

Ngarobah modeu SELinux

Pikeun manggihan mode ayeuna, ngajalankeun

$ getenforce

Pikeun ngarobah mode permisif ngajalankeun paréntah di handap ieu

$ setenforce 0

atawa, pikeun ngarobah mode tina permisif dina maksakeun, vypolnite

$ setenforce 1

Upami anjeun kedah nganonaktipkeun lengkep SELinux, maka ieu ngan ukur tiasa dilakukeun ku file konfigurasi

$ vi /etc/selinux/config

Pikeun nganonaktipkeun, robih parameter SELINUX sapertos kieu:

SELINUX=disabled

Nyetél SELinux

Unggal file sareng prosés ditandaan ku kontéks SELinux, anu ngandung émbaran tambahan sapertos pangguna, peran, jinis, jsb. Upami ieu pertama kalina anjeun ngaktifkeun SELinux, anjeun kedah ngonpigurasikeun kontéks sareng labélna. Prosés assigning labél jeung konteks katelah tagging. Pikeun ngamimitian nyirian, dina file konfigurasi urang ngarobah mode ka permisif.

$ vi /etc/selinux/config
SELINUX=permissive

Sanggeus nyetel mode permisif, Jieun hiji file disumputkeun kosong dina root kalawan nami autorelabel

$ touch /.autorelabel

jeung balikan deui komputer

$ init 6

Catetan: Kami nganggo modeu permisif pikeun nyirian, saprak pamakéan mode maksakeun tiasa nyababkeun sistem ngadat nalika reboot.

Tong hariwang upami undeuran macét dina sababaraha file, nyirian peryogi sakedik. Saatos nyirian parantos réngsé sareng sistem anjeun di-boot, anjeun tiasa angkat kana file konfigurasi sareng nyetél modeu maksakeunsarta ogé ngajalankeun:

$ setenforce 1

Anjeun ayeuna parantos suksés ngaktifkeun SELinux dina komputer anjeun.

Ngawaskeun log

Anjeun meureun geus sapatemon sababaraha kasalahan salila nyirian atawa bari sistem jalan. Pikeun mariksa naha SELinux anjeun berpungsi leres sareng upami éta henteu ngahalangan aksés ka palabuhan, aplikasi, jsb, anjeun kedah ningali log. Log SELinux perenahna di /var/log/audit/audit.log, tapi anjeun teu perlu maca sakabeh hal pikeun manggihan kasalahan. Anjeun tiasa nganggo utilitas audit2why pikeun milarian kasalahan. Jalankeun paréntah di handap ieu:

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

Hasilna, anjeun bakal nampa daptar kasalahan. Upami teu aya kasalahan dina log, maka moal aya pesen anu bakal ditingalikeun.

Ngonpigurasikeun Kawijakan SELinux

Kabijakan SELinux mangrupikeun sakumpulan aturan anu ngatur mékanisme kaamanan SELinux. Kabijakan netepkeun sakumpulan aturan pikeun lingkungan khusus. Ayeuna urang bakal diajar kumaha ngonpigurasikeun kabijakan pikeun ngamungkinkeun aksés kana jasa anu dilarang.

1. Nilai logika (switch)

Saklar (booleans) ngidinan Anjeun pikeun ngarobah bagéan kawijakan dina runtime, tanpa kudu nyieun kawijakan anyar. Aranjeunna ngidinan Anjeun pikeun nyieun parobahan tanpa rebooting atawa recompiling kawijakan SELinux.

conto
Hayu urang nyebutkeun urang hoyong bagikeun diréktori imah pamaké via FTP baca / nulis, sarta kami geus dibagikeun eta, tapi lamun urang nyoba ngakses eta, urang teu ningali nanaon. Ieu kusabab kawijakan SELinux nyegah server FTP tina maca sareng nyerat kana diréktori asal pangguna. Urang kedah ngarobih kawijakan supados pangladén FTP tiasa ngaksés diréktori bumi. Hayu urang tingali upami aya saklar pikeun ieu ku ngalakukeun

$ semanage boolean -l

Paréntah ieu bakal daptar saklar anu sayogi sareng kaayaan ayeuna (on atanapi pareum) sareng pedaran. Anjeun tiasa nyaring pilarian Anjeun ku nambahkeun grep pikeun manggihan hasil ftp-hijina:

$ semanage boolean -l | grep ftp

tur anjeun bakal manggihan di handap

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

switch ieu ditumpurkeun, jadi kami bakal ngaktipkeun eta kalawan setsebool $ setsebool ftp_home_dir on

Ayeuna daemon ftp urang bakal tiasa ngaksés diréktori bumi pangguna.
Catetan: Anjeun oge bisa meunangkeun daptar switch sadia tanpa katerangan ku ngalakukeun getsebool -a

2. Label jeung konteks

Ieu mangrupikeun cara anu paling umum pikeun nerapkeun kawijakan SELinux. Unggal file, polder, prosés sareng port ditandaan ku kontéks SELinux:

  • Pikeun file sareng polder, labél disimpen salaku atribut anu diperpanjang dina sistem file sareng tiasa ditingali ku paréntah di handap ieu:
    $ ls -Z /etc/httpd
  • Pikeun prosés sareng palabuhan, panyiri diurus ku kernel, sareng anjeun tiasa ningali labél ieu sapertos kieu:

proses

$ ps –auxZ | grep httpd

palabuhan

$ netstat -anpZ | grep httpd

conto
Ayeuna hayu urang tingali conto pikeun langkung ngartos labél sareng kontéks. Hayu urang nyebutkeun urang boga web server éta, tinimbang diréktori a /var/www/html/ использует /home/dan/html/. SELinux bakal nganggap ieu ngalanggar kawijakan sareng anjeun moal tiasa ningali halaman wéb anjeun. Ieu kusabab urang teu acan nyetel konteks kaamanan pakait sareng file HTML. Pikeun ningali konteks kaamanan standar, paké paréntah di handap ieu:

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

Di dieu urang meunang httpd_sys_content_t salaku konteks pikeun file html. Urang kedah nyetél kontéks kaamanan ieu pikeun diréktori urang ayeuna, anu ayeuna gaduh kontéks ieu:

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

Paréntah alternatif pikeun mariksa kontéks kaamanan file atanapi diréktori:

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

Kami ogé bakal nganggo semanage pikeun ngarobih kontéks saatos mendakan kontéks kaamanan anu leres. Pikeun ngarobah kontéks /home/dan/html, jalankeun paréntah di handap ieu:

$ 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

Saatos kontéks dirobih nganggo semanage, paréntah restorecon bakal ngamuat kontéks standar pikeun file sareng diréktori. Pangladén wéb kami ayeuna bakal tiasa maca file tina polder /home/dan/htmlsabab konteks kaamanan pikeun folder ieu geus robah jadi httpd_sys_content_t.

3. Jieun kawijakan lokal

Meureun aya kaayaan dimana metodeu di luhur henteu aya gunana pikeun anjeun sareng anjeun nampi kasalahan (avc/denial) dina audit.log. Nalika ieu kajadian, Anjeun kudu nyieun kawijakan lokal. Anjeun tiasa mendakan sadaya kasalahan nganggo audit2why, sapertos anu dijelaskeun di luhur.

Anjeun tiasa nyieun kawijakan lokal pikeun ngabéréskeun kasalahan. Contona, urang meunang kasalahan nu patali jeung httpd (Apache) atawa smbd (samba), urang grep kasalahan sarta nyieun kawijakan pikeun aranjeunna:

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

Ieu téh http_policy и smb_policy nyaeta nami kawijakan lokal nu urang dijieun. Ayeuna urang kedah ngamuat kawijakan lokal anu diciptakeun ieu kana kawijakan SELinux ayeuna. Ieu bisa dilakukeun saperti kieu:

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

Kabijakan lokal urang parantos diunduh sareng urang henteu kedah nampi avc atanapi denail di audit.log.

Ieu usaha kuring pikeun ngabantosan anjeun ngartos SELinux. Kuring miharep yén sanggeus maca artikel ieu anjeun bakal ngarasa leuwih nyaman jeung SELinux.

sumber: www.habr.com

Tambahkeun komentar