Sistemi tas-sigurtà Linux

Waħda mir-raġunijiet għas-suċċess tremend tal-Linux OS fuq apparati u servers mobbli integrati hija l-grad pjuttost għoli ta 'sigurtà tal-qalba, servizzi u applikazzjonijiet relatati. Imma jekk agħti ħarsa aktar mill-qrib għall-arkitettura tal-qalba tal-Linux, allura huwa impossibbli li ssib fih kwadru responsabbli għas-sigurtà bħala tali. Fejn qed taħbi s-subsistema tas-sigurtà tal-Linux u fiex tikkonsisti?

Sfond dwar Moduli tas-Sigurtà tal-Linux u SELinux

Linux Mtejba tas-Sigurtà huwa sett ta 'regoli u mekkaniżmi ta' aċċess ibbażati fuq mudelli ta 'aċċess obbligatorji u bbażati fuq ir-rwoli biex jipproteġu s-sistemi Linux minn theddid potenzjali u jikkoreġu n-nuqqasijiet tal-Kontroll tal-Aċċess Diskrezzjonali (DAC), is-sistema ta' sigurtà tradizzjonali Unix. Il-proġett oriġina fl-imsaren tal-Aġenzija tas-Sigurtà Nazzjonali tal-Istati Uniti, u ġie żviluppat direttament prinċipalment minn kuntratturi Secure Computing Corporation u MITRE, kif ukoll għadd ta 'laboratorji ta' riċerka.

Sistemi tas-sigurtà Linux
Moduli tas-Sigurtà tal-Linux

Linus Torvalds għamel numru ta' kummenti dwar żviluppi ġodda tal-NSA sabiex ikunu jistgħu jiġu inklużi fil-kernel tal-Linux tal-linja prinċipali. Huwa ddeskriva ambjent ġenerali, b'sett ta 'interċetturi biex jikkontrollaw l-operazzjonijiet b'oġġetti u sett ta' ċerti oqsma protettivi fi strutturi tad-dejta tal-qalba biex jaħżnu l-attributi korrispondenti. Dan l-ambjent imbagħad jista 'jintuża minn moduli tal-qalba li jistgħu jitgħabbew biex jimplimentaw kwalunkwe mudell ta' sigurtà mixtieq. LSM daħal għal kollox fil-kernel Linux v2.6 fl-2003.

Il-qafas LSM jinkludi oqsma ta 'gwardja fi strutturi tad-dejta u sejħiet għal funzjonijiet ta' interċettazzjoni f'punti kritiċi fil-kodiċi tal-kernel biex jimmanipulawhom u jwettaq kontroll tal-aċċess. Iżid ukoll funzjonalità għar-reġistrazzjoni tal-moduli tas-sigurtà. L-interface /sys/kernel/security/lsm fiha lista ta' moduli attivi fis-sistema. Il-ganċijiet LSM huma maħżuna f'listi li jissejħu fl-ordni speċifikata f'CONFIG_LSM. Dokumentazzjoni dettaljata dwar il-ganċijiet hija inkluża fil-fajl header include/linux/lsm_hooks.h.

Is-subsistema LSM għamlitha possibbli li titlesta l-integrazzjoni sħiħa ta 'SELinux bl-istess verżjoni tal-kernel tal-Linux stabbli v2.6. Kważi immedjatament, SELinux sar l-istandard de facto għal ambjent Linux sigur u ġie inkluż fl-aktar distribuzzjonijiet popolari: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.

Glossarju SELinux

  • Identità — L-utent ta’ SELinux mhuwiex l-istess bħall-utent tas-soltu Unix/Linux; jistgħu jeżistu flimkien fuq l-istess sistema, iżda essenzjalment huma kompletament differenti. Kull kont standard Linux jista 'jikkorrispondi għal wieħed jew aktar f'SELinux. L-identità SELinux hija parti mill-kuntest tas-sigurtà ġenerali, li jiddetermina liema oqsma tista 'u ma tistax tissieħeb.
  • Dominji - F'SELinux, dominju huwa l-kuntest ta 'eżekuzzjoni ta' suġġett, jiġifieri proċess. Id-dominju jiddetermina direttament l-aċċess li għandu proċess. Dominju huwa bażikament lista ta 'dak li proċessi jistgħu jagħmlu jew dak li proċess jista' jagħmel b'tipi differenti. Xi eżempji ta 'dominji huma sysadm_t għall-amministrazzjoni tas-sistema, u user_t li huwa dominju ta' utent normali mhux privileġġjat. Is-sistema init taħdem fid-dominju init_t, u l-proċess imsemmi jimxi fid-dominju named_t.
  • Rwoli — Dak li jservi bħala intermedjarju bejn id-dominji u l-utenti SELinux. Ir-rwoli jiddeterminaw għal liema dominji jista' jappartjeni utent u għal liema tipi ta' oġġetti jista' jaċċessa. Dan il-mekkaniżmu ta 'kontroll ta' aċċess jipprevjeni t-theddida ta 'attakki ta' eskalazzjoni ta 'privileġġ. Ir-rwoli huma miktuba fil-mudell tas-sigurtà tal-Kontroll tal-Aċċess Ibbażat fuq ir-Rwoli (RBAC) użat f'SELinux.
  • Tipi — Attribut tal-lista ta' Infurzar tat-Tip li huwa assenjat lil oġġett u jiddetermina min jista' jaċċessah. Simili għad-definizzjoni tad-dominju, ħlief li d-dominju japplika għal proċess, u t-tip japplika għal oġġetti bħal direttorji, fajls, sokits, eċċ.
  • Suġġetti u oġġetti - Il-proċessi huma suġġetti u jitmexxew f'kuntest speċifiku, jew dominju tas-sigurtà. Riżorsi tas-sistema operattiva: fajls, direttorji, sokits, eċċ., Huma oġġetti li huma assenjati ċertu tip, fi kliem ieħor, livell ta 'privatezza.
  • Politika SELinux — SELinux juża varjetà ta’ politiki biex jipproteġi s-sistema. Il-politika SELinux tiddefinixxi l-aċċess tal-utenti għal rwoli, rwoli għal dominji, u dominji għal tipi. L-ewwel, l-utent huwa awtorizzat li jikseb rwol, imbagħad ir-rwol huwa awtorizzat li jaċċessa dominji. Fl-aħħarnett, dominju jista 'jkollu aċċess biss għal ċerti tipi ta' oġġetti.

LSM u SELinux arkitettura

Minkejja l-isem, LSMs ġeneralment mhumiex moduli Linux li jistgħu jitgħabbew. Madankollu, bħal SELinux, huwa direttament integrat fil-qalba. Kwalunkwe bidla fil-kodiċi tas-sors LSM teħtieġ kumpilazzjoni ġdida tal-kernel. L-għażla korrispondenti trid tkun attivata fis-settings tal-kernel, inkella l-kodiċi LSM ma jiġix attivat wara l-ibbutjar. Iżda anke f'dan il-każ, jista 'jiġi attivat mill-għażla OS bootloader.

Sistemi tas-sigurtà Linux
LSM check munzell

LSM huwa mgħammar b'ganċijiet fil-funzjonijiet ewlenin tal-qalba li jistgħu jkunu rilevanti għall-kontrolli. Waħda mill-karatteristiċi ewlenin tal-LSMs hija li huma f'munzelli. Għalhekk, il-kontrolli standard għadhom jitwettqu, u kull saff ta 'LSM iżid biss kontrolli u kontrolli addizzjonali. Dan ifisser li l-projbizzjoni ma tistax titneħħa lura. Dan jidher fil-figura; jekk ir-riżultat tal-kontrolli tad-DAC ta 'rutina huwa falliment, allura l-kwistjoni lanqas biss tilħaq il-ganċijiet LSM.

SELinux jadotta l-arkitettura tas-sigurtà Flask tas-sistema operattiva tar-riċerka Fluke, b'mod partikolari l-prinċipju tal-inqas privileġġ. L-essenza ta' dan il-kunċett, kif jissuġġerixxi ismu, hija li tagħti lill-utent jew jipproċessa biss dawk id-drittijiet li huma meħtieġa biex iwettaq l-azzjonijiet maħsuba. Dan il-prinċipju huwa implimentat bl-użu tat-tajpjar ta 'aċċess sfurzat, għalhekk il-kontroll tal-aċċess f'SELinux huwa bbażat fuq il-mudell ta' domain => tip.

Grazzi għall-ittajpjar ta 'aċċess sfurzat, SELinux għandu kapaċitajiet ta' kontroll ta 'aċċess ħafna akbar mill-mudell DAC tradizzjonali użat fis-sistemi operattivi Unix/Linux. Pereżempju, tista 'tillimita n-numru tal-port tan-netwerk li s-server ftp se jgħaqqad miegħu, tippermetti li tikteb u tbiddel fajls f'ċertu folder, iżda mhux tħassarhom.

Il-komponenti ewlenin ta 'SELinux huma:

  • Server tal-Infurzar tal-Politika — Il-mekkaniżmu ewlieni għall-organizzazzjoni tal-kontroll tal-aċċess.
  • Database tal-politika tas-sigurtà tas-sistema.
  • Interazzjoni mal-interċettur tal-avveniment LSM.
  • Selinuxfs - Psewdo-FS, l-istess bħal /proc u mmuntat f'/sys/fs/selinux. Ippopolat dinamikament mill-kernel tal-Linux waqt ir-runtime u li jkun fihom fajls li fihom informazzjoni dwar l-istatus ta' SELinux.
  • Aċċess Vector Cache — Mekkaniżmu awżiljarju biex tiżdied il-produttività.

Sistemi tas-sigurtà Linux
Kif jaħdem SELinux

Kollox jaħdem bħal dan.

  1. Ċertu suġġett, f'termini SELinux, iwettaq azzjoni permessa fuq oġġett wara kontroll DAC, kif muri fl-istampa ta 'fuq. Din it-talba biex titwettaq operazzjoni tmur għand l-interċettur tal-avveniment LSM.
  2. Minn hemm, it-talba, flimkien mal-kuntest tas-sigurtà tas-suġġett u l-oġġett, tiġi mgħoddija lill-modulu SELinux Abstraction and Hook Logic, li huwa responsabbli għall-interazzjoni mal-LSM.
  3. L-awtorità tat-teħid tad-deċiżjonijiet dwar l-aċċess ta’ suġġett għal oġġett hija s-Server tal-Infurzar tal-Politika u tirċievi data minn SELinux AnHL.
  4. Biex jieħu deċiżjonijiet dwar l-aċċess jew iċ-ċaħda, Policy Enforcement Server jirrikorri għas-subsistema ta’ caching ta’ Access Vector Cache (AVC) għar-regoli l-aktar użati.
  5. Jekk soluzzjoni għar-regola korrispondenti ma tinstabx fil-cache, allura t-talba tiġi mgħoddija lid-database tal-politika tas-sigurtà.
  6. Ir-riżultat tat-tfittxija mid-database u AVC jintbagħat lura lis-Server tal-Infurzar tal-Politika.
  7. Jekk il-politika misjuba taqbel mal-azzjoni mitluba, allura l-operazzjoni hija permessa. Inkella, l-operazzjoni hija pprojbita.

Ġestjoni tas-Settings SELinux

SELinux jaħdem f'wieħed minn tliet modi:

  • Infurzar - Aderenza stretta mal-politiki tas-sigurtà.
  • Permissiv - Ksur tar-restrizzjonijiet huwa permess; issir nota korrispondenti fil-ġurnal.
  • Disabled—Il-politiki tas-sigurtà mhumiex fis-seħħ.

Tista 'tara f'liema mod huwa SELinux bil-kmand li ġej.

[admin@server ~]$ getenforce
Permissive

Nibdlu l-mod qabel ma terġa 'tibda, pereżempju, issettjaha għall-infurzar, jew 1. Il-parametru permissiv jikkorrispondi għall-kodiċi numeriku 0.

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

Tista 'wkoll tibdel il-mod billi teditja l-fajl:

[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=mira

Id-differenza ma 'setenfoce hija li meta s-sistema operattiva boots, il-mod SELinux se jiġi ssettjat skond il-valur tal-parametru SELINUX fil-fajl ta' konfigurazzjoni. Barra minn hekk, il-bidliet għall-infurzar <=> disabled jidħlu fis-seħħ biss billi jeditjaw il-fajl /etc/selinux/config u wara reboot.

Ara rapport qasir dwar l-istatus:

[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

Biex tara l-attributi SELinux, xi utilitajiet standard jużaw il-parametru -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

Meta mqabbel mal-output normali ta 'ls -l, hemm diversi oqsma addizzjonali fil-format li ġej:

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

L-aħħar qasam jindika xi ħaġa bħal klassifikazzjoni tas-sigurtà u jikkonsisti f'kombinazzjoni ta' żewġ elementi:

  • s0 - sinifikat, miktub ukoll bħala intervall low-level-highlevel
  • c0, c1... c1023 - kategorija.

Nibdlu l-konfigurazzjoni tal-aċċess

Uża semodule biex tagħbija, iżżid u tneħħi l-moduli SELinux.

[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 - удалить модуль

L-ewwel tim semanage login jgħaqqad l-utent SELinux mal-utent tas-sistema operattiva, it-tieni juri lista. Fl-aħħarnett, l-aħħar kmand bis-swiċċ -r ineħħi l-immappjar tal-utenti SELinux għall-kontijiet tal-OS. Spjegazzjoni tas-sintassi għall-valuri tal-Medda MLS/MCS tinsab fit-taqsima preċedenti.

[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

Team utent semanage użati biex jimmaniġġjaw mappings bejn utenti u rwoli SELinux.

[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

Parametri tal-kmand:

  • -a żid id-dħul tal-immappjar tar-rwol tad-dwana;
  • -l lista ta' utenti u rwoli li jaqblu;
  • -d ħassar id-dħul tal-mapping tar-rwol tal-utent;
  • -R lista tar-rwoli mehmuża mal-utent;

Fajls, Portijiet u Valuri Boolean

Kull modulu SELinux jipprovdi sett ta 'regoli ta' tikkettar tal-fajls, iżda tista' wkoll iżżid ir-regoli tiegħek jekk meħtieġ. Pereżempju, irridu li s-server tal-web ikollu drittijiet ta' aċċess għall-folder /srv/www.

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

L-ewwel kmand jirreġistra regoli ġodda tal-immarkar, u t-tieni reset, jew aħjar jistabbilixxi, it-tipi ta 'fajls skond ir-regoli attwali.

Bl-istess mod, il-portijiet TCP/UDP huma mmarkati b'tali mod li s-servizzi xierqa biss jistgħu jisimgħu fuqhom. Pereżempju, sabiex is-server tal-web jisma' fuq il-port 8080, għandek bżonn tmexxi l-kmand.

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

Numru sinifikanti ta 'moduli SELinux għandhom parametri li jistgħu jieħdu valuri Boolean. Il-lista sħiħa ta 'tali parametri tista' tidher bl-użu getsebool -a. Tista 'tbiddel il-valuri boolean billi tuża 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

Workshop, jiksbu aċċess għall-interface Pgadmin-web

Ejja nħarsu lejn eżempju prattiku: installajna pgadmin7.6-web fuq RHEL 4 biex namministraw id-database PostgreSQL. Imxiet ftit tfittxija bis-settings ta 'pg_hba.conf, postgresql.conf u config_local.py, issettja l-permessi tal-folders, installat il-moduli Python neqsin minn pip. Kollox lest, inniedu u nirċievu 500 Żball Intern Server.

Sistemi tas-sigurtà Linux

Nibdew bis-suspettati tipiċi, billi niċċekkjaw /var/log/httpd/error_log. Hemm xi entrati interessanti hemmhekk.

[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.

F'dan il-punt, il-biċċa l-kbira tal-amministraturi tal-Linux se jkollhom it-tentazzjoni qawwija li jmexxu setencorce 0, u dak se jkun it-tmiem tiegħu. Franchement, hekk għamilt l-ewwel darba. Dan huwa naturalment ukoll mod kif toħroġ, iżda 'l bogħod mill-aħjar.

Minkejja d-disinji ingombranti, SELinux jista 'jkun faċli għall-utent. Sempliċement installa l-pakkett setroubleshoot u ara l-log tas-sistema.

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

Jekk jogħġbok innota li s-servizz auditd għandu jinbeda mill-ġdid b'dan il-mod, u ma jużax systemctl, minkejja l-preżenza ta 'systemd fl-OS. Fil-log tas-sistema se jkun indikat mhux biss il-fatt tal-imblukkar, iżda wkoll ir-raġuni u mod kif tingħeleb il-projbizzjoni.

Sistemi tas-sigurtà Linux

Aħna nwettqu dawn il-kmandi:

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

Aħna niċċekkjaw l-aċċess għall-paġna web pgadmin4-web, kollox jaħdem.

Sistemi tas-sigurtà Linux

Sistemi tas-sigurtà Linux

Sors: www.habr.com

Żid kumment