Nga punaha haumaru Linux

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 titiro ake ki te hoahoanga o te kakano Linux, katahi ka kore e taea te kimi i roto i te tapawha te kawenga mo te haumaru pera. Kei hea te punaha haumarutanga Linux e huna ana me te aha?

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.

Nga punaha haumaru Linux
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.

Nga punaha haumaru Linux
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.

Nga punaha haumaru Linux
Me pehea te mahi a SELinux

He penei te mahi katoa.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Ko te hua rapu mai i te paataka raraunga me te AVC ka whakahokia ki te Tūmau Whakamana Kaupapahere.
  7. 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 rapunga me nga tautuhinga o pg_hba.conf, postgresql.conf me config_local.py, tautuhia nga whakaaetanga kōpaki, whakauruhia nga waahanga Python kua ngaro mai i te pip. Kua rite nga mea katoa, ka whakarewahia e matou ka whiwhi 500 Hapa Tūmau Roto.

Nga punaha haumaru Linux

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.

Nga punaha haumaru Linux

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.

Nga punaha haumaru Linux

Nga punaha haumaru Linux

Source: will.com

Tāpiri i te kōrero