Linux aabo awọn ọna šiše

Ọkan ninu awọn idi fun aṣeyọri nla ti Linux OS lori ifibọ, awọn ẹrọ alagbeka ati awọn olupin jẹ iwọn giga ti aabo ti ekuro, awọn iṣẹ ti o jọmọ ati awọn ohun elo. Ṣugbọn ti o ba ya a jo wo si faaji ti ekuro Linux, lẹhinna ko ṣee ṣe lati wa ninu rẹ square lodidi fun aabo bii iru bẹẹ. Nibo ni aabo eto aabo Linux wa ati kini o ni ninu?

Lẹhin lori Awọn modulu Aabo Lainos ati SELinux

Lainos Imudara Aabo jẹ eto awọn ofin ati awọn ọna iraye si ti o da lori dandan ati awọn awoṣe iraye si ipilẹ ipa lati daabobo awọn eto Linux lati awọn irokeke ti o pọju ati ṣatunṣe awọn aito ti Iṣakoso Wiwọle Lakaye (DAC), eto aabo Unix ibile. Ise agbese na bẹrẹ lati inu ifun ti Ile-iṣẹ Aabo Orilẹ-ede AMẸRIKA, ati pe o ni idagbasoke taara nipasẹ awọn alagbaṣe Secure Computing Corporation ati MITER, ati nọmba awọn ile-iṣẹ iwadii.

Linux aabo awọn ọna šiše
Awọn modulu Aabo Linux

Linus Torvalds ṣe awọn asọye pupọ nipa awọn idagbasoke NSA tuntun ki wọn le wa ninu ekuro Linux akọkọ. O ṣe apejuwe agbegbe gbogbogbo kan, pẹlu eto awọn interceptors lati ṣakoso awọn iṣẹ pẹlu awọn nkan ati ṣeto awọn aaye aabo kan ninu awọn ẹya data ekuro lati tọju awọn abuda ti o baamu. Ayika yii le ṣee lo nipasẹ awọn modulu ekuro ti o ṣee gbe lati ṣe eyikeyi awoṣe aabo ti o fẹ. LSM ni kikun wọ ekuro Linux v2.6 ni ọdun 2003.

Ilana LSM pẹlu awọn aaye ẹṣọ ni awọn ẹya data ati awọn ipe si awọn iṣẹ idalọwọduro ni awọn aaye pataki ninu koodu ekuro lati ṣe afọwọyi wọn ati ṣe iṣakoso iwọle. O tun ṣe afikun iṣẹ ṣiṣe fun iforukọsilẹ awọn modulu aabo. Ni wiwo /sys/kernel/aabo/lsm ni atokọ ti awọn modulu ti nṣiṣe lọwọ lori eto naa. Awọn ìkọ LSM wa ni ipamọ sinu awọn atokọ ti a pe ni aṣẹ ti a sọ ni CONFIG_LSM. Awọn iwe alaye lori awọn kio wa ninu faili akọsori pẹlu/linux/lsm_hooks.h.

LSM subsystem jẹ ki o ṣee ṣe lati pari isọpọ kikun ti SELinux pẹlu ẹya kanna ti ekuro Linux iduroṣinṣin v2.6. Fere lẹsẹkẹsẹ, SELinux di boṣewa de facto fun agbegbe Linux to ni aabo ati pe o wa ninu awọn pinpin olokiki julọ: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.

SELinux Gilosari

  • Idanimọ - Olumulo SELinux kii ṣe kanna bi ID olumulo Unix/Linux ti o ṣe deede; wọn le wa papọ lori eto kanna, ṣugbọn yatọ patapata ni pataki. Iwe akọọlẹ Linux boṣewa kọọkan le ṣe deede si ọkan tabi diẹ sii ni SELinux. Idanimọ SELinux jẹ apakan ti ipo aabo gbogbogbo, eyiti o pinnu iru awọn ibugbe ti o le ati pe ko le darapọ mọ.
  • Awọn ibugbe - Ni SELinux, agbegbe kan jẹ ipo ipaniyan ti koko-ọrọ kan, ie ilana kan. Agbegbe taara pinnu iwọle ti ilana kan ni. Agbegbe kan jẹ ipilẹ atokọ ti kini awọn ilana le ṣe tabi kini ilana le ṣe pẹlu awọn oriṣi oriṣiriṣi. Diẹ ninu awọn apẹẹrẹ ti awọn ibugbe jẹ sysadm_t fun iṣakoso eto, ati olumulo_t eyiti o jẹ agbegbe olumulo ti kii ṣe anfani deede. Eto init n ṣiṣẹ ni aaye init_t, ati ilana ti a npè ni n ṣiṣẹ ni agbegbe name_t.
  • Awọn ipa - Kini o ṣiṣẹ bi agbedemeji laarin awọn ibugbe ati awọn olumulo SELinux. Awọn ipa pinnu iru awọn ibugbe ti olumulo le jẹ ti ati iru awọn nkan wo ni wọn le wọle si. Ilana iṣakoso iwọle yii ṣe idilọwọ irokeke awọn ikọlu imudara anfani. Awọn ipa ti wa ni kikọ sinu Ipa Da lori Wiwọle Iṣakoso (RBAC) awoṣe aabo ti a lo ninu SELinux.
  • Awọn oriṣi - Irisi atokọ Imudaniloju Iru ti o yan si ohun kan ati pinnu tani o le wọle si. Iru si itumọ agbegbe, ayafi ti agbegbe naa kan ilana kan, ati iru kan si awọn nkan bii awọn ilana, awọn faili, awọn iho, ati bẹbẹ lọ.
  • Awọn koko-ọrọ ati awọn nkan - Awọn ilana jẹ awọn koko-ọrọ ati ṣiṣe ni ipo kan pato, tabi agbegbe aabo. Awọn orisun eto iṣẹ: awọn faili, awọn iwe ilana, awọn iho, ati bẹbẹ lọ, jẹ awọn nkan ti a yàn iru kan, ni awọn ọrọ miiran, ipele ikọkọ.
  • SELinux imulo - SELinux nlo ọpọlọpọ awọn eto imulo lati daabobo eto naa. Ilana SELinux n ṣalaye iraye si awọn olumulo si awọn ipa, awọn ipa si awọn agbegbe, ati awọn ibugbe si awọn oriṣi. Ni akọkọ, olumulo ni aṣẹ lati gba ipa kan, lẹhinna ipa naa ni aṣẹ lati wọle si awọn ibugbe. Nikẹhin, agbegbe kan le ni iwọle si awọn iru nkan kan nikan.

LSM ati SELinux faaji

Pelu orukọ naa, awọn LSM kii ṣe awọn modulu Linux ti o ṣee gbe ni gbogbogbo. Sibẹsibẹ, bii SELinux, o ti ṣepọ taara sinu ekuro. Eyikeyi iyipada si koodu orisun LSM nilo akojọpọ ekuro tuntun kan. Aṣayan ti o baamu gbọdọ wa ni muu ṣiṣẹ ninu awọn eto ekuro, bibẹẹkọ koodu LSM kii yoo muu ṣiṣẹ lẹhin bata. Ṣugbọn paapaa ninu ọran yii, o le ṣiṣẹ nipasẹ aṣayan bootloader OS.

Linux aabo awọn ọna šiše
LSM ayẹwo akopọ

LSM ti ni ipese pẹlu awọn iwọ ni awọn iṣẹ ekuro mojuto ti o le ṣe pataki fun awọn sọwedowo. Ọkan ninu awọn ẹya akọkọ ti awọn LSM ni pe wọn ti tolera. Nitorinaa, awọn sọwedowo boṣewa tun ṣe, ati ipele kọọkan ti LSM nikan ṣafikun awọn idari ati awọn idari afikun. Eyi tumọ si pe wiwọle ko le ṣe yiyi pada. Eyi han ni eeya; ti abajade ti awọn sọwedowo DAC ti o ṣe deede jẹ ikuna, lẹhinna ọrọ naa kii yoo paapaa de awọn kio LSM.

SELinux gba faaji aabo Flask ti ẹrọ ṣiṣe iwadii Fluke, ni pataki ipilẹ ti anfani ti o kere ju. Pataki ti ero yii, gẹgẹbi orukọ rẹ ṣe daba, ni lati fun olumulo tabi ilana nikan awọn ẹtọ wọnyẹn ti o ṣe pataki lati ṣe awọn iṣe ti a pinnu. Ilana yii jẹ imuse nipa lilo titẹ iwọle fi agbara mu, nitorinaa iṣakoso iraye si ni SELinux da lori ibugbe => iru awoṣe.

Ṣeun si titẹ iwọle fi agbara mu, SELinux ni awọn agbara iṣakoso iwọle ti o tobi pupọ ju awoṣe DAC ibile ti a lo ninu awọn ọna ṣiṣe Unix/Linux. Fun apẹẹrẹ, o le ṣe idinwo nọmba ibudo nẹtiwọki ti olupin ftp yoo sopọ si, gba kikọ ati yiyipada awọn faili ni folda kan, ṣugbọn kii ṣe piparẹ wọn.

Awọn paati akọkọ ti SELinux ni:

  • Afihan Iridaju Server - Ilana akọkọ fun siseto iṣakoso wiwọle.
  • Aabo eto imulo database.
  • Ibaraenisepo pẹlu LSM iṣẹlẹ interceptor.
  • Selinuxfs - Pseudo-FS, kanna bi / proc ati agesin ni / sys/fs/selinux. Ni agbara ti o kun nipasẹ ekuro Linux ni akoko asiko ati awọn faili ti o ni alaye ipo SELinux ninu.
  • Wiwọle Vector kaṣe - Ohun elo siseto fun jijẹ sise.

Linux aabo awọn ọna šiše
Bawo ni SELinux ṣiṣẹ

Gbogbo rẹ ṣiṣẹ bi eleyi.

  1. Koko-ọrọ kan, ni awọn ofin SELinux, ṣe iṣe idasilẹ lori ohun kan lẹhin ayẹwo DAC, bi o ṣe han ninu aworan oke. Ibeere yii lati ṣe iṣẹ kan lọ si interceptor iṣẹlẹ LSM.
  2. Lati ibẹ, ibeere naa, pẹlu koko-ọrọ ati ipo aabo ohun, ti kọja si SELinux Abstraction ati Hook Logic module, eyiti o jẹ iduro fun ibaraenisepo pẹlu LSM.
  3. Aṣẹ ṣiṣe ipinnu lori iwọle si koko-ọrọ si ohun kan jẹ Olupin Imudaniloju Afihan ati pe o gba data lati SELinux AnHL.
  4. Lati ṣe awọn ipinnu nipa iraye si tabi kiko, Olupin Imudaniloju Afihan yipada si Eto-iṣẹ caching Vector Cache (AVC) fun awọn ofin ti o lo julọ.
  5. Ti ko ba ri ojutu kan fun ofin ti o baamu ni kaṣe, lẹhinna ibeere naa ti kọja si ibi ipamọ data imulo aabo.
  6. Abajade wiwa lati ibi ipamọ data ati AVC ti pada si Olupin Imudaniloju Afihan.
  7. Ti eto imulo ti a rii ba baamu iṣe ti o beere, lẹhinna iṣẹ naa gba laaye. Bibẹẹkọ, iṣẹ naa jẹ eewọ.

Ṣiṣakoṣo awọn Eto SELinux

SELinux n ṣiṣẹ ni ọkan ninu awọn ipo mẹta:

  • Gbigbe - Ifaramọ to muna si awọn eto imulo aabo.
  • Gbigbanilaaye - O ṣẹ awọn ihamọ jẹ idasilẹ; akọsilẹ ti o baamu ni a ṣe ninu iwe akọọlẹ.
  • Alaabo — Awọn ilana aabo ko si ni ipa.

O le wo iru ipo SELinux wa pẹlu aṣẹ atẹle.

[admin@server ~]$ getenforce
Permissive

Yiyipada ipo ṣaaju ki o to atunbere, fun apẹẹrẹ, ṣeto rẹ si imuṣiṣẹ, tabi 1. Paramita igbanilaaye ni ibamu pẹlu koodu nomba 0.

[admin@server ~]$ setenfoce enforcing
[admin@server ~]$ setenfoce 1 #то же самое

O tun le yi ipo pada nipa ṣiṣatunṣe faili naa:

[admin@server ~]$ cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.

SELINUXTYPE=afojusun

Iyatọ pẹlu setenfoce ni pe nigbati ẹrọ ṣiṣe bata bata, ipo SELinux yoo ṣeto ni ibamu pẹlu iye paramita SELINUX ninu faili iṣeto. Ni afikun, awọn iyipada si imuṣiṣẹ <=> alaabo nikan ni ipa nipasẹ ṣiṣatunṣe faili /etc/selinux/config ati lẹhin atunbere.

Wo ijabọ ipo kukuru kan:

[admin@server ~]$ sestatus

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31

Lati wo awọn abuda SELinux, diẹ ninu awọn ohun elo boṣewa lo paramita -Z.

[admin@server ~]$ ls -lZ /var/log/httpd/
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20200920
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20200927
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20201004
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20201011
[admin@server ~]$ ps -u apache -Z
LABEL                             PID TTY          TIME CMD
system_u:system_r:httpd_t:s0     2914 ?        00:00:04 httpd
system_u:system_r:httpd_t:s0     2915 ?        00:00:00 httpd
system_u:system_r:httpd_t:s0     2916 ?        00:00:00 httpd
system_u:system_r:httpd_t:s0     2917 ?        00:00:00 httpd
...
system_u:system_r:httpd_t:s0     2918 ?        00:00:00 httpd

Ti a ṣe afiwe si iṣelọpọ deede ti ls -l, ọpọlọpọ awọn aaye afikun wa ni ọna kika atẹle:

<user>:<role>:<type>:<level>

Aaye ti o kẹhin n tọka si nkan bi isọdi aabo ati pe o ni apapọ awọn eroja meji:

  • s0 - pataki, ti a tun kọ bi aarin-kekere ipele
  • c0, c1… c1023 - ẹka.

Iyipada wiwọle iṣeto ni

Lo semodule lati ṣajọpọ, ṣafikun, ati yọ awọn modulu SELinux kuro.

[admin@server ~]$ semodule -l |wc -l #список всех модулей
408
[admin@server ~]$ semodule -e abrt #enable - активировать модуль
[admin@server ~]$ semodule -d accountsd #disable - отключить модуль
[admin@server ~]$ semodule -r avahi #remove - удалить модуль

Ẹgbẹ akọkọ semanage wiwọle so olumulo SELinux pọ si olumulo ẹrọ ṣiṣe, keji ṣafihan atokọ kan. Nikẹhin, aṣẹ ti o kẹhin pẹlu iyipada -r yọkuro aworan agbaye ti awọn olumulo SELinux si awọn akọọlẹ OS. Alaye ti sintasi fun awọn iye Range MLS/MCS wa ni apakan ti tẹlẹ.

[admin@server ~]$ semanage login -a -s user_u karol
[admin@server ~]$ semanage login -l

Login Name SELinux User MLS/MCS Range Service
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0-s0:c0.c1023 *
system_u system_u s0-s0:c0.c1023 *
[admin@server ~]$ semanage login -d karol

Egbe semanage olumulo ti a lo lati ṣakoso awọn maapu laarin awọn olumulo SELinux ati awọn ipa.

[admin@server ~]$ semanage user -l
                Labeling   MLS/       MLS/                          
SELinux User    Prefix     MCS Level  MCS Range             SELinux Roles
guest_u         user       s0         s0                    guest_r
staff_u         staff      s0         s0-s0:c0.c1023        staff_r sysadm_r
...
user_u          user       s0         s0                    user_r
xguest_u        user       s0         s0                    xguest_r
[admin@server ~]$ semanage user -a -R 'staff_r user_r'
[admin@server ~]$ semanage user -d test_u

Awọn paramita aṣẹ:

  • -a ṣafikun titẹsi maapu ipa aṣa aṣa;
  • -l akojọ awọn olumulo ati awọn ipa ti o baamu;
  • -d paarẹ titẹsi maapu ipa olumulo;
  • -R akojọ ti awọn ipa so si olumulo;

Awọn faili, Awọn ibudo ati Awọn idiyele Boolean

Kọọkan SELinux module pese kan ti ṣeto ti awọn ofin fifi aami faili, sugbon o tun le fi ara rẹ ofin ti o ba wulo. Fun apẹẹrẹ, a fẹ ki olupin wẹẹbu ni awọn ẹtọ wiwọle si folda /srv/www.

[admin@server ~]$ semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?
[admin@server ~]$ restorecon -R /srv/www/

Aṣẹ akọkọ forukọsilẹ awọn ofin isamisi tuntun, ati awọn atunto keji, tabi dipo ṣeto, awọn oriṣi faili ni ibamu pẹlu awọn ofin lọwọlọwọ.

Bakanna, awọn ebute oko oju omi TCP/UDP ti samisi ni ọna ti awọn iṣẹ ti o yẹ nikan le tẹtisi wọn. Fun apẹẹrẹ, ni ibere fun olupin wẹẹbu lati gbọ lori ibudo 8080, o nilo lati ṣiṣẹ aṣẹ naa.

[admin@server ~]$ semanage port -m -t http_port_t -p tcp 8080

Nọmba pataki ti awọn modulu SELinux ni awọn aye ti o le gba awọn iye Boolean. Gbogbo atokọ ti iru awọn paramita ni a le rii ni lilo getsebool -a. O le yi awọn iye Boolean pada nipa lilo setsebool.

[admin@server ~]$ getsebool httpd_enable_cgi
httpd_enable_cgi --> on
[admin@server ~]$ setsebool -P httpd_enable_cgi off
[admin@server ~]$ getsebool httpd_enable_cgi
httpd_enable_homedirs --> off

Idanileko, ni iraye si wiwo oju opo wẹẹbu Pgadmin

Jẹ ki a wo apẹẹrẹ ti o wulo: a fi pgadmin7.6-web sori RHEL 4 lati ṣakoso aaye data PostgreSQL. A rin kekere kan ibere pẹlu awọn eto pg_hba.conf, postgresql.conf ati config_local.py, ṣeto awọn igbanilaaye folda, fi sori ẹrọ awọn modulu Python ti o padanu lati pip. Ohun gbogbo ti ṣetan, a ṣe ifilọlẹ ati gba 500 Ti abẹnu Server aṣiṣe.

Linux aabo awọn ọna šiše

A bẹrẹ pẹlu awọn ifura aṣoju, ṣayẹwo /var/log/httpd/error_log. Awọn titẹ sii ti o nifẹ si wa nibẹ.

[timestamp] [core:notice] [pid 23689] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
...
[timestamp] [wsgi:error] [pid 23690] [Errno 13] Permission denied: '/var/lib/pgadmin'
[timestamp] [wsgi:error] [pid 23690] [timestamp] [wsgi:error] [pid 23690] HINT : You may need to manually set the permissions on
[timestamp] [wsgi:error] [pid 23690] /var/lib/pgadmin to allow apache to write to it.

Ni aaye yii, pupọ julọ awọn alabojuto Lainos yoo ni idanwo ni agbara lati ṣiṣẹ setencorce 0, ati pe iyẹn yoo jẹ opin rẹ. Ni otitọ, Mo ṣe iyẹn ni igba akọkọ. Eleyi jẹ ti awọn dajudaju tun ọna kan jade, sugbon jina lati awọn ti o dara ju.

Pelu awọn apẹrẹ ti o ni ẹru, SELinux le jẹ ore-olumulo. O kan fi sori ẹrọ ni package setroubleshoot ati ki o wo awọn eto log.

[admin@server ~]$ yum install setroubleshoot
[admin@server ~]$ journalctl -b -0
[admin@server ~]$ service restart auditd

Jọwọ ṣe akiyesi pe iṣẹ iṣatunṣe gbọdọ tun bẹrẹ ni ọna yii, kii ṣe lilo systemctl, laibikita wiwa ti systemd ninu OS. Ninu iwe eto yoo wa ni itọkasi ko nikan ni o daju ti ìdènà, sugbon o tun idi ati ọna lati bori wiwọle.

Linux aabo awọn ọna šiše

A ṣe awọn aṣẹ wọnyi:

[admin@server ~]$ setsebool -P httpd_can_network_connect 1
[admin@server ~]$ setsebool -P httpd_can_network_connect_db 1

A ṣayẹwo iraye si oju-iwe wẹẹbu pgadmin4, ohun gbogbo n ṣiṣẹ.

Linux aabo awọn ọna šiše

Linux aabo awọn ọna šiše

orisun: www.habr.com

Fi ọrọìwòye kun