Faiga saogalemu Linux

O se tasi o mafuaʻaga mo le manuia tele o le Linux OS i luga o faʻapipiʻi, masini feaveaʻi ma sapalai o le maualuga maualuga o le saogalemu o le fatu, auaunaga faʻapitoa ma talosaga. Ae afai va'ai toto'a i le fausaga o le fatu Linux, ona le mafai lea ona maua i totonu se sikuea e nafa ma le saogalemu e pei o. O fea o loʻo natia ai le Linux security subsystem ma o le a le mea e aofia ai?

Tala'aga ile Linux Security Modules ma SELinux

Security Enhanced Linux o se seti o tulafono ma auala avanoa e faʻavae i luga o faʻataʻitaʻiga faʻatulafonoina ma faʻavae avanoa e puipuia ai faiga Linux mai faʻamataʻu mataʻutia ma faʻasaʻo le faaletonu o le Discretionary Access Control (DAC), le faiga masani a le Unix security system. O le poloketi na afua mai i le manava o le US National Security Agency, ma sa fa'atautaia sa'o e le au konekarate Secure Computing Corporation ma le MITER, fa'apea fo'i ma le tele o fale su'esu'e.

Faiga saogalemu Linux
Linux Security Modules

Na faia e Linus Torvalds le tele o faʻamatalaga e uiga i atinaʻe fou o le NSA ina ia mafai ona faʻaaofia i totonu o le fatu autu o Linux. Na ia faʻamatalaina se siosiomaga lautele, faʻatasi ai ma se seti o faʻalavelave e faʻatautaia ai gaioiga ma mea faitino ma se seti o ni vaega puipuia i totonu o fausaga faʻamaumauga o fatu e teu ai uiga tutusa. O lenei si'osi'omaga e mafai ona fa'aogaina e le fa'aogaina o kernel modules e fa'atino ai so'o se fa'ata'ita'iga saogalemu. LSM na ulufale atoatoa ile Linux kernel v2.6 ile 2003.

Ole auivi a le LSM e aofia ai vaega puipui i faʻamaumauga faʻamaumauga ma valaʻau i galuega faʻalavelave i vaega taua i le kernel code e faʻaogaina ai ma faʻatino le faʻaogaina o avanoa. E fa'aopoopoina fo'i galuega fa'atino mo le resitalaina o fa'aoga saogalemu. O le /sys/kernel/security/lsm interface o lo'o i ai se lisi o fa'aoga fa'agaoioi i luga ole faiga. LSM matau o lo'o teuina i lisi e vala'au i le fa'atonuga o lo'o fa'amaoti mai i CONFIG_LSM. O fa'amatalaga au'ili'ili i matau o lo'o aofia i le faila faila e aofia ai/linux/lsm_hooks.h.

O le LSM subsystem na mafai ai ona faʻamaeʻaina le tuʻufaʻatasia atoa o le SELinux faʻatasi ai ma le faʻaoga tutusa o le Linux kernel v2.6. Toeitiiti lava o le taimi lava lena, na avea ai le SELinux ma tulaga moni mo se siosiomaga saogalemu Linux ma sa aofia ai i tufatufaga sili ona lauiloa: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.

SELinux Glossary

  • Fa'asinomaga — O le SELinux user e le tutusa ma le masani Unix/Linux user ID; e mafai ona latou ola faatasi i luga o le faiga lava e tasi, ae e matua ese lava i le mea moni. O faʻamaumauga Linux taʻitasi e mafai ona fetaui ma le tasi pe sili atu ile SELinux. O le fa'asinomaga SELinux o se vaega o le tulaga lautele o le saogalemu, lea e iloa ai po'o fea vaega e te mafaia ma e le mafai ona e auai.
  • Domains - I totonu o le SELinux, o le domain o le faʻatinoga o le faʻatinoga o se mataupu, o lona uiga o se faʻagasologa. E fa'atonu sa'o e le vaega le avanoa o lo'o iai i se faiga. Ole vaega ole lisi o mea e mafai ona fai po'o mea e mafai ona fai e se faiga i ituaiga eseese. O nisi fa'ata'ita'iga o fa'asinomaga o le sysadm_t mo le fa'afoega o faiga, ma le user_t o se fa'aoga masani e le fa'apitoa. O le init system e alu i le init_t domain, ma o le igoa fa'agasologa o lo'o tamomoe i le igoa_t domain.
  • Matafaioi - O le a le mea e fai ma faufautua i le va o domains ma tagata faʻaoga SELinux. O matafaioi e iloa ai po'o fea vaega e mafai ona iai le tagata fa'aoga ma o a ituaiga meafaitino e mafai ona latou maua. O lenei faiga fa'atonutonu avanoa e taofia ai le fa'amata'u o osofa'iga fa'ateleina avanoa. O matafaioi o lo'o tusia ile Role Based Access Control (RBAC) fa'ata'ita'iga saogalemu o lo'o fa'aogaina ile SELinux.
  • Ituaiga - O se ituaiga Fa'amalosia lisi uiga o lo'o tu'uina atu i se mea ma fuafua po'o ai e mafai ona maua. E tutusa ma le fa'auigaina o le domain, se'i vagana o lena vaega e fa'atatau i se fa'agasologa, ma le ituaiga e fa'atatau i mea faitino e pei o directories, faila, sockets, etc.
  • Mataupu ma mea faitino - O fa'agasologa o mata'upu ma fa'agasolo i se tulaga fa'apitoa, po'o le puipuiga malu. Punaoa faʻaogaina: faila, directories, sockets, etc., o mea ia e tuʻuina atu i se ituaiga, i se isi faaupuga, se tulaga faalilolilo.
  • SELinux Faiga Fa'avae - SELinux faʻaaogaina faiga faʻavae eseese e puipuia ai le faiga. O le SELinux policy e fa'amatala ai le avanoa o tagata fa'aoga i matafaioi, matafaioi i vaega, ma vaega i ituaiga. Muamua, ua fa'atagaina le tagata fa'aoga e maua se matafaioi, ona fa'atagaina lea o le matafaioi e fa'aoga ai vaega. Ma le mea mulimuli, e mafai ona maua e se vaega le avanoa i ni ituaiga o mea faitino.

LSM ma SELinux fausaga

E ui lava i le igoa, o LSM e le masani ona faʻaaogaina Linux modules. Ae ui i lea, pei o SELinux, e tuʻu saʻo i totonu o le fatu. So'o se suiga ile LSM source code e mana'omia ai se fa'aputuga fatu fou. O le filifiliga talafeagai e tatau ona faʻaogaina i totonu o le kernel, a leai o le LSM code o le a le faʻagaoioia pe a uma le taʻavale. Ae e oʻo lava i lenei tulaga, e mafai ona mafai e le OS bootloader filifiliga.

Faiga saogalemu Linux
LSM siaki faaputuga

O lo'o fa'apipi'iina le LSM i fa'amau i galuega autu o fatu e mafai ona talafeagai mo siaki. O se tasi o vaega autu o LSM o loʻo faʻaputuina. O le mea lea, o loʻo faʻaauau pea siaki masani, ma o vaega taʻitasi o le LSM e naʻo le faʻaopoopoina o faʻatonuga ma faʻatonuga. O lona uiga e le mafai ona toe soloia le tapu. O loʻo faʻaalia i le ata; afai o le taunuuga o siaki masani a le DAC e le manuia, o le a le oʻo lava le mataupu i matau LSM.

SELinux fa'aaogaina le fa'ailoga saogalemu o Flask o le Fluke su'esu'ega faiga fa'aoga, aemaise lava le fa'avae o le fa'atauva'a itiiti. O le ute o lenei manatu, e pei ona taʻu mai e lona igoa, o le tuʻuina atu lea i le tagata faʻaoga poʻo le faʻagasologa naʻo na aia tatau e manaʻomia e faʻatino ai gaioiga faʻamoemoeina. O lenei mataupu faavae o loʻo faʻatinoina i le faʻaaogaina o le faʻaogaina o le faʻaoga, o lea o le faʻaogaina o le pulea i SELinux e faʻavae i luga o le domain => type model.

Faʻafetai i le faʻamalosia o le faʻaogaina o le taina, o le SELinux e sili atu le mafai ona faʻaogaina avanoa nai lo le faʻataʻitaʻiga DAC masani o loʻo faʻaogaina i faiga faʻaoga Unix/Linux. Mo se faʻataʻitaʻiga, e mafai ona e faʻatapulaʻaina le numera o fesoʻotaʻiga telefoni e fesoʻotaʻi i ai le ftp server, faʻatagaina le tusitusi ma le suia o faila i totonu o se pusa faapitoa, ae le o le tapeina.

O vaega autu ole SELinux o:

  • Polokalama Fa'amalosia Faiga - Le auala autu mo le faʻatulagaina o le faʻatonutonuina o avanoa.
  • Fa'amaumauga o faiga fa'avae mo le saogalemu.
  • Feso'ota'iga ma le fa'alavelave fa'alavelave a le LSM.
  • Selinuxfs - Pseudo-FS, tutusa ma /proc ma faʻapipiʻi i /sys/fs/selinux. Fa'atosina fa'anofoina e le fatu Linux i le taimi fa'agasolo ma iai faila o lo'o iai fa'amatalaga tulaga SELinux.
  • Avanoa Vector Cache - O se auala fesoasoani mo le faateleina o le gaosiga.

Faiga saogalemu Linux
Auala e galue ai SELinux

E galue uma e pei o lenei.

  1. O se mataupu patino, i upu SELinux, faia se gaioiga faʻatagaina i luga o se mea pe a maeʻa se siaki DAC, e pei ona faʻaalia i le ata pito i luga. O lenei talosaga e fai se ta'otoga e alu i le LSM fa'alavelave fa'alavelave.
  2. Mai iina, o le talosaga, faʻatasi ai ma le mataupu ma le mea e puipuia ai mea, e tuʻuina atu i le SELinux Abstraction ma Hook Logic module, lea e nafa ma le fegalegaleai ma le LSM.
  3. O le pule o le faia o faaiuga i luga o le avanoa o se mataupu i se mea o le Faiga Faʻatonu Faʻatonu ma e mauaina faʻamatalaga mai le SELinux AnHL.
  4. Ina ia faia fa'ai'uga e uiga i le avanoa po'o le fa'afitia, e liliu atu le Ofisa o le Fa'amalosia o Faiga Fa'avae i le Access Vector Cache (AVC) so'oga fa'aoga mo tulafono sili ona fa'aoga.
  5. Afai e le maua se fofo mo le tulafono tutusa i totonu o le cache, ona tuʻuina atu lea o le talosaga ile faʻamaumauga o faiga faʻavae puipuiga.
  6. O le su'esu'ega mai le fa'amaumauga ma le AVC ua toe fa'afo'i atu i le Polokalama Fa'amalosia Faiga.
  7. Afai o le faiga faavae ua maua e fetaui ma le faʻatonuga o loʻo talosagaina, ona faʻatagaina lea o le taotoga. A leai, e fa'asa le taotoga.

Puleaina SELinux Seti

SELinux e galue i se tasi o auala e tolu:

  • Fa'amalosia - Fa'atumauina faiga fa'avae tau puipuiga.
  • Fa'ataga - Fa'atagaina le soliga o tapula'a; o se fa'amatalaga tutusa e faia i totonu o le api talaaga.
  • Fa'aletonu—E le'o aoga faiga fa'avae.

E mafai ona e vaʻai poʻo le a le tulaga SELinux o loʻo i ai ma le faʻatonuga lea.

[admin@server ~]$ getenforce
Permissive

Suia le faiga a'o le'i toe fa'afou, mo se fa'ata'ita'iga, fa'atulaga i le fa'amalosia, po'o le 1. O le fa'ataga fa'atagaina e fetaui ma le numera numera 0.

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

E mafai foi ona e suia le faiga e ala i le teuteuina o le faila:

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

O le eseesega ma setenfoce o le taimi e faʻaogaina ai le faʻaogaina o seevae, o le SELinux mode o le a faʻatulagaina e tusa ai ma le tau o le SELINUX parameter i le faila faila. E le gata i lea, o suiga i le faʻamalosia <=> disabled naʻo le faʻaaogaina e ala i le faʻasaʻoina o le /etc/selinux/config faila ma pe a uma le toe faʻafouina.

Va'ai i se lipoti puupuu tulaga:

[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

Ina ia vaʻai i uiga SELinux, o nisi faʻaoga masani e faʻaaoga le -Z parakalafa.

[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

Pe a faatusatusa i le galuega masani o le ls -l, e tele isi fanua faaopoopo i le faatulagaga lenei:

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

O le fanua mulimuli o loʻo faʻaalia ai se mea e pei o se faʻavasegaga saogalemu ma e aofia ai se tuufaatasiga o elemene e lua:

  • s0 - taua, fa'apena fo'i ua tusia ose va'aiga maualalo-maualuga
  • c0, c1… c1023 - vaega.

Suia le faatulagaga o avanoa

Fa'aoga semodule e uta, fa'aopoopo, ma aveese SELinux modules.

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

Au muamua vaiasoge login faʻafesoʻotaʻi le SELinux tagata faʻaoga i le tagata faʻaoga faʻaoga, o le lona lua e faʻaalia se lisi. Ma le mea mulimuli, o le faʻatonuga mulimuli ma le -r switch e aveese ai le faʻafanua o tagata SELinux i faʻamatalaga OS. O se faʻamatalaga o le syntax mo MLS / MCS Range tau o loʻo i le vaega muamua.

[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

au semanage tagata fa'aoga fa'aoga e pulea fa'afanua i le va o tagata fa'aoga SELinux ma matafaioi.

[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

Fa'atonuga tapula'a:

  • -se fa'aopoopo fa'asologa o fa'afanua fa'atulagaina;
  • -l lisi o tagata fa'aoga tutusa ma matafaioi;
  • -d tape le fa'ailoga o le fa'afanua o tagata fa'aoga;
  • -R lisi o matafaioi faʻapipiʻi i le tagata faʻaoga;

Faila, Taulaga ma Fa'atauga Boolean

O SELinux module taʻitasi e tuʻuina atu ai se seti o tulafono faʻailoga faila, ae e mafai foi ona e faʻaopoopoina au lava tulafono pe a manaʻomia. Mo se faʻataʻitaʻiga, matou te mananaʻo ia maua e le 'upega tafaʻilagi aia tatau i le /srv/www folder.

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

O le poloaiga muamua e resitalaina tulafono fou o le makaina, ma le lona lua toe setiina, pe setiina, ituaiga faila e tusa ai ma tulafono o loʻo iai nei.

E fa'apea fo'i, ua fa'ailoga ports TCP/UDP i se auala e na'o au'aunaga talafeagai e mafai ona fa'alogo iai. Mo se faʻataʻitaʻiga, ina ia mafai e le 'upega tafaʻilagi ona faʻalogo i luga o le taulaga 8080, e tatau ona e faʻatautaia le poloaiga.

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

Ole numera tele ole SELinux modules e iai fa'amaufa'ailoga e mafai ona ave fa'atatau Boolean. O le lisi atoa o ia taʻiala e mafai ona vaʻaia i le faʻaaogaina o getsebool -a. E mafai ona e suia le tau o le boolean e faʻaaoga ai 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

A'oa'oga, maua avanoa ile Pgadmin-web interface

Sei o tatou vaʻai i se faʻataʻitaʻiga aoga: matou faʻapipiʻi le pgadmin7.6-web i luga o le RHEL 4 e faʻatautaia le PostgreSQL database. Sa matou savavali teisi sailiga faʻatasi ai ma faʻatulagaga o pg_hba.conf, postgresql.conf ma config_local.py, seti faʻatagaga faila, faʻapipiʻi le Python modules o loʻo misi mai le pip. Ua saunia mea uma, matou te tatalaina ma maua 500 Fa'aumau Tutotonu sese.

Faiga saogalemu Linux

Matou te amata i masalosaloga masani, siaki /var/log/httpd/error_log. O lo'o iai ni fa'amatalaga mananaia iina.

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

I le taimi nei, o le tele o faʻatonu Linux o le a faʻaosoosoina malosi e faʻatautaia setencorce 0, ma o le a faʻaiʻuga. O le mea moni, na ou faia lena mea i le taimi muamua. O le mea moni foi o se auala e alu ese ai, ae mamao mai le mea sili.

E ui lava i faʻataʻitaʻiga faigata, SELinux e mafai ona faʻaoga-tagata. Na'o le fa'apipi'i o le seti setroubleshoot ma va'ai le log system.

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

Faamolemole ia matau e tatau ona toe amata le auaunaga su'etusi i lenei auala, ae le o le faaaogaina o le systemctl, e ui i le i ai o le systemd i le OS. I le log system o le a faailoa atu e le gata o le mea moni o le poloka, ae faapea foi le mafuaaga ma auala e foia ai le tapu.

Faiga saogalemu Linux

Matou te faia nei poloaiga:

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

Matou te siakiina le avanoa i le pgadmin4-web page, e aoga mea uma.

Faiga saogalemu Linux

Faiga saogalemu Linux

puna: www.habr.com

Faaopoopo i ai se faamatalaga