Ko tetahi o nga take mo te angitu nui o te Linux OS i runga i te whakauru, nga taputapu pūkoro me nga kaitoro ko te tino taumata o te haumarutanga o te kernel, nga ratonga e pa ana me nga tono. Engari mehemea
He papamuri mo nga waahanga Haumaru Linux me SELinux
Ko te Linux Whakarei Haumarutanga he huinga ture me nga tikanga uru i runga i nga tauira whai mana me te whai waahi ki te whakamarumaru i nga punaha Linux mai i nga riri ka taea te whakatika me te whakatika i nga ngoikoretanga o te Mana Whakaaetanga Whakaaetanga (DAC), te punaha haumaru Unix tuku iho. I ahu mai te kaupapa i roto i nga whekau o te US National Security Agency, a na nga kaikirimana Secure Computing Corporation me MITRE te nuinga i whakawhanake, me etahi taiwhanga rangahau.
Ngā Kōwae Haumaru Linux
He maha nga korero a Linus Torvalds mo nga whanaketanga NSA hou kia taea ai te whakauru atu ki roto i te riipene Linux matua. I whakaahuahia e ia tetahi taiao whanui, me te huinga o nga kaiwawao hei whakahaere i nga mahi me nga taonga me te huinga o etahi waahi whakamarumaru i roto i nga hanganga raraunga kernel hei rokiroki i nga huanga e rite ana. Ka taea te whakamahi i tenei taiao e nga waahanga kernel ka taea te utaina hei whakatinana i tetahi tauira haumarutanga e hiahiatia ana. I uru katoa a LSM ki te Linux kernel v2.6 i te tau 2003.
Kei roto i te angamahi LSM nga waahi tiaki i roto i nga hanganga raraunga me nga waea ki nga mahi haukoti i nga waahi tino nui i roto i te waehere kernel ki te raweke me te whakahaere urunga. Ka taapirihia nga mahi mo te rehitatanga o nga waahanga haumarutanga. Kei roto i te atanga /sys/kernel/security/lsm he rarangi o nga waahanga hohe i runga i te punaha. Kei te rongoa nga matau LSM ki nga rarangi ka karangahia i roto i te raupapa kua tohua ki CONFIG_LSM. Ko nga tuhinga taipitopito mo nga matau kei roto i te konae pane ko/linux/lsm_hooks.h.
Na te punaha iti LSM i taea te whakaoti i te whakaurunga katoa o SELinux me te ahua ano o te Linux kernel v2.6. I tata tonu, ka noho a SELinux hei paerewa pono mo te taiao Linux haumaru me te whakauru ki nga tohatoha rongonui: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.
SELinux Papakupu
- Te tuakiri — Ko te kaiwhakamahi SELinux ehara i te rite ki te id kaiwhakamahi Unix/Linux o mua; ka taea e ratou te noho tahi i runga i te punaha kotahi, engari he rereke te tikanga. Ka taea e ia kaute Linux paerewa te hono ki tetahi, neke atu ranei i SELinux. Ko te tuakiri SELinux tetahi waahanga o te horopaki haumarutanga katoa, e whakatau ana ko wai nga rohe ka taea e koe te uru atu.
- Nga Rohe - I roto i te SELinux, ko te rohe te horopaki mahi o tetahi kaupapa, ara he tukanga. Ka whakatau tika te rohe i te urunga kei roto i tetahi tukanga. Ko te rohe he rarangi o nga mahi ka taea te mahi, he aha ranei ka taea e te tukanga ki nga momo rereke. Ko etahi tauira o nga rohe ko te sysadm_t mo te whakahaere punaha, me te user_t he rohe kaiwhakamahi kore-whaimana. Ka rere te punaha init ki te rohe init_t, ka haere te tukanga whakaingoatia ki te rohe ingoa_t.
- Ngā Rohe — He aha te mahi takawaenga i waenga i nga rohe me nga kaiwhakamahi SELinux. Ko nga mahi ka whakatau ko wai nga rohe ka uru te kaiwhakamahi me nga momo taonga ka uru atu. Ko tenei tikanga whakahaere uru ka aukati i te riri o nga whakaeke pikinga mana. Kua tuhia nga mahi ki roto i te tauira haumarutanga Role Based Access Control (RBAC) i whakamahia i SELinux.
- Ngā momo — He huanga rarangi Whakamana Momo kua tautapa ki tetahi ahanoa me te whakatau ko wai ka uru atu. He rite ki te whakamaramatanga rohe, engari ko tera rohe ka pa ki tetahi tukanga, ka pa te momo ki nga mea penei i nga raarangi, nga konae, nga turanga, me era atu.
- Kaupapa me nga taonga - Ko nga tukanga he kaupapa me te whakahaere i roto i tetahi horopaki motuhake, rohe haumaru ranei. Ko nga rauemi o te punaha whakahaere: ko nga konae, nga raarangi, nga turanga, me etahi atu, he mea kua tohua ki tetahi momo, ara, he taumata tūmataiti.
- Kaupapa here SELinux — Ka whakamahia e SELinux nga momo kaupapa here hei tiaki i te punaha. Ko te kaupapa here SELinux e whakaatu ana i te urunga o nga kaiwhakamahi ki nga waahi, nga mahi ki nga rohe, me nga waahi ki nga momo. Tuatahi, ka whakamanahia te kaiwhakamahi ki te whai waahi, katahi ka whakamanahia te mahi ki te uru ki nga rohe. Ka mutu, ka uru noa te rohe ki etahi momo taonga.
LSM me SELinux hoahoanga
Ahakoa te ingoa, ehara nga LSM i nga waahanga Linux e taea ana te utaina. Heoi ano, penei i a SELinux, kua whakauruhia ki roto i te kernel. Ko nga huringa ki te waehere puna LSM me whakahiato kaarai hou. Ko te kōwhiringa e tika ana me whakahohe i roto i nga tautuhinga kernel, ki te kore e kore te waehere LSM e whakahohe i muri i te pupuhi. Engari ahakoa i tenei keehi, ka taea e te OS bootloader kōwhiringa.
LSM taki tāpae
Kei te LSM he matau i roto i nga mahi kernel matua e tika ana mo nga arowhai. Ko tetahi o nga ahuatanga matua o nga LSM ko te mea kua taapuhia. No reira, kei te mahia tonutia nga arowhai paerewa, a ko ia paparanga o te LSM anake ka taapiri atu i nga mana me nga mana whakahaere. Ko te tikanga e kore e taea te whakamuri te aukati. Ka whakaatuhia tenei ki te ahua; mena he rahua te hua o nga arowhai DAC, karekau te take e tae ki nga matau LSM.
Ka mau a SELinux i te hoahoanga haumarutanga Flask o te punaha whakahaere rangahau a Fluke, ina koa ko te maataapono iti rawa. Ko te ngako o tenei ariā, e kii ana tona ingoa, ko te tuku ki te kaiwhakamahi, ki te whakahaere ranei i nga tika e tika ana hei whakatutuki i nga mahi kua whakaritea. Ka whakatinanahia tenei maataapono ma te whakamahi i te tuhi uru uru, na reira ko te mana uru ki SELinux kei runga i te rohe => momo tauira.
He mihi ki te patopato uru, he nui ake te mana uru a SELinux i te tauira DAC tuku iho i whakamahia i roto i nga punaha whakahaere Unix/Linux. Hei tauira, ka taea e koe te whakawhāiti i te tau tauranga whatunga ka honoa e te tūmau ftp, ka taea te tuhi me te huri i nga konae ki tetahi kōpaki, engari kaua e muku.
Ko nga waahanga matua o SELinux ko:
- Tūmau Whakamana Kaupapahere — Ko te tikanga matua mo te whakahaere mana uru.
- Pūnaha haumaru kaupapa here pātengi raraunga.
- Te taunekeneke me te kaiwawao kaupapa LSM.
- Selinuxfs - Pseudo-FS, he rite tonu ki te /proc ka whakauruhia ki /sys/fs/selinux. Ka noho hihiko e te pata Linux i te wa whakahaere me nga konae kei roto nga korero mana SELinux.
- Uru Keteroki Vector — He tikanga awhina hei whakanui ake i te hua.
Me pehea te mahi a SELinux
He penei te mahi katoa.
- Ko tetahi kaupapa, i roto i nga kupu SELinux, ka mahi i tetahi mahi e whakaaetia ana ki runga i tetahi mea i muri i te tirotiro DAC, penei i te pikitia o runga. Ko tenei tono kia mahia he mahi ka haere ki te kaiwawao takahanga LSM.
- Mai i reira, ko te tono, me te kaupapa me te horopaki haumarutanga ahanoa, ka tukuna ki te waahanga SELinux Abstraction and Hook Logic, kei a ia te kawenga mo te taunekeneke me te LSM.
- Ko te mana whakatau mo te urunga o tetahi kaupapa ki tetahi mea ko te Tūmau Whakaaetanga Kaupapahere me te whiwhi raraunga mai i te SELinux AnHL.
- Hei whakatau mo te uru me te whakakore ranei, ka huri te Tūmau Whakamana Kaupapahere ki te Punaharoto Keteroki Vector Access (AVC) mo nga ture e tino whakamahia ana.
- Ki te kore e kitea he otinga mo te ture e rite ana i roto i te keteroki, ka tukuna te tono ki te paataka kaupapa here haumarutanga.
- Ko te hua rapu mai i te paataka raraunga me te AVC ka whakahokia ki te Tūmau Whakamana Kaupapahere.
- Ki te taurite te kaupapa here i kitea ki te mahi i tonoa, ka whakaaetia te mahi. Ki te kore, ka rahuitia te mahi.
Te whakahaere i nga Tautuhinga SELinux
Ka mahi a SELinux i tetahi o nga momo e toru:
- Whakahau - Kia mau ki nga kaupapa here haumaru.
- Whakaae - Ka whakaaetia te takahi i nga here; ka tuhia he tuhipoka rite ki te hautaka.
- Kua monoa—Kaore nga kaupapa here haumaru i te mana.
Ka kite koe he aha te aratau SELinux kei roto me te whakahau e whai ake nei.
[admin@server ~]$ getenforce
Permissive
Te huri i te aratau i mua i te whakaara ano, hei tauira, te whakarite ki te uruhi, ki te 1 ranei. Ko te tawhā whakaae e rite ana ki te waehere tau 0.
[admin@server ~]$ setenfoce enforcing
[admin@server ~]$ setenfoce 1 #то же самое
Ka taea hoki te huri i te aratau ma te whakatika i te konae:
[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=whāngai
Ko te rereketanga me te setenfoce ko te wa e pupuhi ana te punaha whakahaere, ka whakatauhia te aratau SELinux kia rite ki te uara o te tawhā SELINUX i roto i te konae whirihoranga. I tua atu, ko nga huringa ki te uruhi <=> monoa ka whai mana anake ma te whakatika i te /etc/selinux/config file me muri i te whakaara ano.
Tirohia tetahi purongo mana poto:
[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
Hei tiro i nga huanga SELinux, ka whakamahia e etahi taputapu paerewa te tohu -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
Ka whakatauritea ki te putanga noa o ls -l, he maha atu nga mara kei te whakatakotoranga e whai ake nei:
<user>:<role>:<type>:<level>
Ko te mara whakamutunga e tohu ana i tetahi mea penei i te whakarōpūtanga haumarutanga me te huinga o nga huānga e rua:
- s0 - hiranga, i tuhia ano hei waahi taumata iti-tiketike
- c0, c1… c1023 - kāwai.
Te huri i te whirihoranga uru
Whakamahia te semodule ki te uta, ki te taapiri, ki te tango i nga waahanga 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 - удалить модуль
Kapa tuatahi takiuru wikige ka hono i te kaiwhakamahi SELinux ki te kaiwhakamahi punaha whakahaere, ka whakaatu te tuarua i tetahi rarangi. Ka mutu, ko te whakahau whakamutunga me te -r whakawhiti ka tango i te mapi o nga kaiwhakamahi SELinux ki nga kaute OS. He whakamaramatanga mo te wetereo mo nga uara Awhe MLS/MCS kei te waahanga o mua.
[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
rōpū kaiwhakamahi wikige whakamahia ki te whakahaere mahere i waenga i nga kaiwhakamahi SELinux me nga mahi.
[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
Tawhā whakahau:
- -he taapiri i te urunga maapiri ritenga;
- -l rarangi o nga kaiwhakamahi e rite ana me nga mahi;
- -d mukua te urunga mahere mahi a te kaiwhakamahi;
- -R rarangi o nga mahi e piri ana ki te kaiwhakamahi;
Kōnae, Tauranga me nga Uara Boolean
Kei ia kōwae SELinux he huinga ture tohu kōnae, engari ka taea ano e koe te taapiri i o ake ture mena e tika ana. Hei tauira, e hiahia ana matou kia whai mana te tūmau tukutuku ki te kōpaki /srv/www.
[admin@server ~]$ semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?
[admin@server ~]$ restorecon -R /srv/www/
Ko te whakahau tuatahi ka rehita i nga ture tohu hou, a ko te tuarua ka tautuhi, ka whakatau ranei i nga momo konae kia rite ki nga ture o naianei.
Waihoki, ka tohua nga tauranga TCP/UDP kia taea ai e nga ratonga tika anake te whakarongo ki a raatau. Hei tauira, kia whakarongo ai te tūmau tukutuku ki te tauranga 8080, me whakahaere e koe te whakahau.
[admin@server ~]$ semanage port -m -t http_port_t -p tcp 8080
He maha nga waahanga SELinux he tawhā ka taea te tango i nga uara Boolean. Ka kitea te rarangi katoa o aua tawhā ma te whakamahi i te getsebool -a. Ka taea e koe te huri i nga uara boolean ma te whakamahi i te 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
Awheawhe, uru atu ki te atanga paetukutuku-Pgadmin
Me titiro tatou ki tetahi tauira whaihua: i whakauruhia e matou te pgadmin7.6-tukutuku i runga i te RHEL 4 hei whakahaere i te papanga raraunga PostgreSQL. I hikoi iti matou
Ka tiimata me nga whakapae noa, te tirotiro /var/log/httpd/error_log. Kei reira etahi whakaurunga whakamere.
[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 tenei wa, ko te nuinga o nga kaiwhakahaere Linux ka kaha te whakamatautau ki te whakahaere i te setencorce 0, ka mutu tera. Ma te pono, i penei taku mahi i te wa tuatahi. Ko te tikanga he huarahi ano tenei, engari kei tawhiti atu i te pai.
Ahakoa nga hoahoa uaua, ka taea e SELinux te pai ki te kaiwhakamahi. Me whakauru noa i te kete whakatika raru ka tirohia te raarangi punaha.
[admin@server ~]$ yum install setroubleshoot
[admin@server ~]$ journalctl -b -0
[admin@server ~]$ service restart auditd
Kia mahara ko te ratonga arotake me timata ano i tenei huarahi, kaua e whakamahi i te systemctl, ahakoa te noho o te systemd i roto i te OS. I roto i te raarangi punaha ka tohuhia ehara i te mea ko te aukati anake, engari ko te take me te ara ki te hinga i te aukati.
Ka mahia e matou enei whakahau:
[admin@server ~]$ setsebool -P httpd_can_network_connect 1
[admin@server ~]$ setsebool -P httpd_can_network_connect_db 1
Ka tirohia e matou te uru ki te wharangi paetukutuku pgadmin4-web, ka mahi nga mea katoa.
Source: will.com