O se tasi o mafuaʻaga o le manuia tele Linux O le OS i luga o masini feaveaʻi ma 'auʻaunaga e iai se tulaga maualuga o le saogalemu mo le kernel, auaunaga e fesoʻotaʻi ma ai, ma polokalama. Ae afai i le fausaga o le kernel Linux, ona e le mafai lea ona e mauaina se sikuea i totonu e nafa ma le saogalemu. O fea o lafi ai le vaega o le saogalemu? Linux ma o a mea e aofia ai?
prehistory Linux Module Puipuiga ma le SELinux
Fa'aleleia le Puipuiga Linux o se seti o tulafono ma auala e maua ai avanoa e faʻavae i luga o faʻataʻitaʻiga faʻamalosia ma faʻavae i matafaioi e puipuia ai faiga Linux e faasaga i ni taufaamata'u e ono tula'i mai ma ni fa'aleleiga mo mea sese o le Discretionary Access Control (DAC), o se faiga masani a le Unix mo le saogalemu. Na afua mai le galuega faatino i totonu o le US National Security Agency, faatasi ai ma le atina'eina na faatinoina e konekarate o le Secure Computing Corporation ma le MITRE, faapea foi ma le tele o fale suesue.

Linux Puipuiga Module
Sa faia e Linus Torvalds ni nai faʻamatalaga i atinaʻe fou a le NSA ina ia mafai ona aofia ai i le kernel autu. LinuxNa ia faʻamatalaina se siosiomaga masani, faʻatasi ai ma se seti o interceptors mo le puleaina o gaioiga o mea faitino ma se seti o fanua puipuia i totonu o fausaga faʻamaumauga kernel mo le teuina o uiga talafeagai. Ona mafai lea ona faʻaaogaina lenei siosiomaga e loadable kernel modules e faʻatino ai soʻo se faʻataʻitaʻiga saogalemu e manaʻomia. Na matua tuʻufaʻatasia atoatoa le LSM i totonu o le kernel. Linux v2.6 i le 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.
Na fa'atagaina e le vaega o le LSM le tu'ufa'atasia atoatoa o le SELinux le lomiga lava lea e tasi o le kernel mautu Linux v2.6. SE vave lavaLinux ua avea ma tulaga faatonuina moni mo siosiomaga saogalemu Linux ma avea ma vaega o tufatufaga sili ona lauiloa: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.
Fa'amatalaga o le SELinux
- Fa'asinomaga — Tagata fa'aoga SELinux e lē tutusa ma le Unix masani/Linux ID o le tagata faʻaoga, e mafai ona latou nonofo faʻatasi i luga o le polokalama e tasi, ae e matua eseese lava i le uiga. O teugatupe masani taʻitasi Linux atonu e tutusa ma le tasi pe sili atu i le SELinuxFa'asinomaga SELinux o se vaega taua o le tulaga lautele o le saogalemu e fuafua ai po o fea 'upega tafaʻilagi e mafai ona ulufale i ai ma po o fea e le mafai.
- Domains — I le itu i saute sasa'eLinux O le domain o le fa'atinoga lea o se mataupu, e pei o se faiga. O le domain e fuafua sa'o ai le avanoa e maua e se faiga. O le domain o se lisi lea o mea e mafai ona fai e faiga po'o gaioiga e mafai ona faia e se faiga i ituaiga eseese. O nisi o fa'ata'ita'iga o domain o le sysadm_t mo le pulega o le faiga, ma le user_t, o se domain masani ma e le'i fa'apitoa mo le tagata fa'aoga. O le faiga init e tamo'e i le domain init_t, ma o le faiga ua faaigoaina e tamo'e i le domain named_t.
- Matafaioi — O le ā e avea ma sui i le va o 'upega tafaʻilagi ma tagata faʻaoga SELinuxO matafaioi e fuafua po o fea vaega e mafai ona auai i ai se tagata faʻaoga ma po o a ituaiga o mea e mafai ona latou ulufale i ai. O lenei faiga e pulea ai le ulufale atu e puipuia ai le taufaamataʻu o osofaʻiga faʻateleina o avanoa. O matafaioi ua tuʻufaʻatasia i totonu o le faʻataʻitaʻiga saogalemu o le Pulea o Avanoa Faʻavae i le Galuega (RBAC) e faʻaaogaina i le SE.Linux.
- 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.
- Faiga Fa'avae a le SELinux - Ina ia puipuia le faiga SELinux e fa'aaogaina le tele o faiga fa'avae. Faiga Fa'avae SELinux Fa'amatalaina le avanoa a le tagata fa'aoga i matafaioi, matafaioi i vaega, ma vaega i ituaiga. Muamua, ua fa'atagaina se tagata fa'aoga i se matafaioi, ona fa'atagaina lea o se matafaioi e ulufale i vaega. Ma le mea mulimuli, e na'o nisi ituaiga o mea faitino e mafai ona maua e se vaega.
LSM ma le fausaga SELinux
E ui i le igoa, ae o LSM e le o ni modules e mafai ona utaina. LinuxAe ui i lea, e pei lava o le SELinux, e tu'ufa'atasia sa'o lava i totonu o le kernel. So'o se suiga i le code puna o le LSM e mana'omia ai se fa'aputuga kernel fou. E tatau ona fa'agaoioia le filifiliga talafeagai i fa'atulagaga o le kernel, a leai o le a le fa'agaoioia le code LSM pe a uma ona amata. Peita'i, e tusa lava pe i lenei tulaga, e mafai ona fa'agaoioia e ala i se filifiliga OS bootloader.

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 Na faʻaaogaina le fausaga saogalemu o le Flask o le faiga faʻaoga suʻesuʻega a Fluke, aemaise lava le mataupu faavae o le faʻamanuiaga aupito itiiti. O le uiga autū o lenei manatu, e pei ona taʻu mai e le igoa, o le tuʻuina atu lea i se tagata faʻaoga poʻo se faʻagasologa naʻo aia tatau e manaʻomia e faʻatino ai le gaioiga faʻamoemoeina. O lenei mataupu faavae e faʻatinoina e ala i le faʻaaogaina o le ulufale faʻamalosia, ma faʻapea ona pulea ai aia tatau i le SE.Linux e faʻavae i luga o le faʻataʻitaʻiga o le ituaiga ole domain =>.
Fa'afetai i le fa'amalosia o le taina o le avanoa SELinux e sili atu ona taua le gafatia o le puleaina o avanoa nai lo le faʻataʻitaʻiga masani a le DAC e faʻaaogaina i le Unix OS/LinuxMo se faʻataʻitaʻiga, e mafai ona e faʻatapulaʻaina le numera o le uafu fesoʻotaʻiga o le a faʻalogo i ai le 'auʻaunaga FTP, e faʻataga ai le tusitusi ma le suia o faila i totonu o se faila faapitoa, ae aua le tapeina.
Vaega autū o le SELinux e fa'apea:
- 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 — O se pseudo-FS, e tutusa ma le /proc ma ua fa'apipi'iina i totonu o le /sys/fs/selinux. Ua fa'atumuina fa'afuase'i e le kernel. Linux i le taimi o le fa'atinoina ma o lo'o i ai faila o lo'o i ai fa'amatalaga e uiga i le tulaga o le SELinux.
- Avanoa Vector Cache - O se auala fesoasoani mo le faateleina o le gaosiga.

Fuafuaga Fa'agaioiga a le SELinux
E galue uma e pei o lenei.
- O se mataupu patino, i faaupuga SELinux, faatino le gaioiga faatagaina i le mea faitino pe a uma ona faamaonia le DAC, e pei ona faaalia i le ata o loo i luga. O lenei talosaga e faatino ai le faagaoioiga e tuuina atu i le LSM event interceptor.
- Mai iina, o le talosaga, faatasi ai ma le anotusi saogalemu o le mataupu ma le mea faitino, e tuuina atu i le SE module.Linux Abtraction ma Hook Logic, e nafa ma fegalegaleaiga ma le LSM.
- O le pulega e faia faaiuga e uiga i le avanoa o se mataupu i se mea faitino o le Policy Enforcement Server, ma e mauaina faamatalaga mai le SE.Linux AnHL.
- 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.
- 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.
- O le su'esu'ega mai le fa'amaumauga ma le AVC ua toe fa'afo'i atu i le Polokalama Fa'amalosia Faiga.
- 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 o fa'atulagaga SELinux
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.
Va'ai po'o le a le faiga o lo'o iai le SELinux E mafai ona e faia i le poloaiga lenei.
[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 le setenfoce o le taimi e amata ai le operating system, o le SE mode e amata ai.Linux o le a setiina e tusa ai ma le taua o le parakalafa o le faila fa'atulagaina o le SELINUX. E le gata i lea, o suiga i le fa'amalosia o le fa'atulagaga <=> disabled e fa'ato'ā aoga pe a uma ona fa'asa'oina le faila /etc/selinux/config ma pe a uma ona toe amata.
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 matamata i uiga SELinux O nisi o mea faigaluega masani e faʻaaogaina le parakalafa -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
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'aaoga le semodule e uta ai vaega SELinux, fa'aopoopo ma aveese.
[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 feso'ota'i le tagata fa'aoga SELinux faatasi ai ma le tagata faʻaoga o le operating system, o le lona lua e faʻaalia ai le lisi. Mulimuli ane, o le poloaiga mulimuli ma le -r switch e aveese ai le SE user mapping.Linux i tala o le OS. O le fa'atulagaga o tau o le MLS/MCS Range o lo'o fa'amatalaina i le vaega ua mavae.
[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'aaogaina e pulea ai fa'afanua i le va o tagata fa'aoga ma matafaioi 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
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
Vaega SE taitasiLinux E tu'uina atu ai se seti o tulafono o le fa'ailogaina o faila, ae e mafai fo'i ona e fa'aopoopoina au lava tulafono pe a mana'omia. Mo se fa'ata'ita'iga, matou te manana'o e tu'uina atu i le 'au'aunaga uepi aia tatau e ulufale ai i le faila /srv/www.
[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
O se numera tele o vaega SELinux o lo'o i ai ni parakalafa e mafai ona fa'aogaina ai tau Boolean. O le lisi atoa o ia parakalafa e mafai ona va'aia e fa'aaoga ai le getsebool -a. E mafai ona suia tau Boolean e fa'aaoga ai le 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 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.

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.
O iinei e tele ai pulega Linux O le a iai se faaosoosoga malosi e fa'agaoioi le setencorce 0, ma o le i'uga lea. E moni lava, o le mea lena na ou faia i le taimi muamua. E mautinoa lava o se fofo, ae e le o le fofo sili lea.
E ui lava i le telē o mamanu SELinux E faigofie ona fa'aoga. Na'o le fa'apipi'iina o le afifi setroubleshoot ma matamata i le system log.
[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.

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.
puna: www.habr.com
