Is e aon de na h-adhbharan airson an t-soirbheachais mhòir Linux Tha ìre tèarainteachd gu math àrd aig an t-siostam obrachaidh air innealan leabaithe, gluasadach, agus frithealaichean airson an eithne, seirbheisean co-cheangailte, agus aplacaidean. Ach ma tha. don ailtireachd eithne Linux, chan urrainn dhut bogsa a lorg ann a tha an urra ri tèarainteachd mar sin. Càite a bheil an fho-shiostam tèarainteachd falaichte? Linux agus dè a tha ann?
ro-eachdraidheil Linux Modalan Tèarainteachd agus SELinux
Tèarainteachd Leasaichte Linux ’S e seata de riaghailtean agus dhòighean-obrach ruigsinneachd stèidhichte air modalan ruigsinneachd èigneachail agus stèidhichte air dreuchdan a th’ ann gus siostaman a dhìon Linux an aghaidh bagairtean a dh’fhaodadh a bhith ann agus rèiteachaidhean airson lochdan Smachd Ruigsinneachd Roghainneil (DAC), siostam tèarainteachd traidiseanta Unix. Thòisich am pròiseact taobh a-staigh Buidheann Tèarainteachd Nàiseanta nan SA, le leasachadh air a dhèanamh sa mhòr-chuid leis na cunnradairean Secure Computing Corporation agus MITRE, a bharrachd air grunn obair-lannan rannsachaidh.

Linux Modalan Tèarainteachd
Rinn Linus Torvalds grunn bheachdan air leasachaidhean ùra NSA gus an gabhadh an toirt a-steach don phrìomh chridhe. LinuxMhìnich e àrainneachd choitcheann, le seata de luchd-glacaidh airson obrachaidhean nithean a riaghladh agus seata de raointean dìon ann an structaran dàta an eithne airson na feartan co-fhreagarrach a stòradh. Dh’ fhaodadh an àrainneachd seo a bhith air a cleachdadh le modalan eithne a ghabhas luchdachadh gus modail tèarainteachd sam bith a bha a dhìth a chur an gnìomh. Chaidh LSM a thoirt a-steach gu h-iomlan don eithne. Linux v2.6 ann an 2003.
Tha frèam LSM a’ toirt a-steach raointean dìon ann an structaran dàta agus gairmean gnìomh eadar-ghluasaid aig puingean èiginneach anns a’ chòd kernel gus an riaghladh agus smachd ruigsinneachd a choileanadh. Bidh e cuideachd a’ cur ri comas-gnìomh airson modalan tèarainteachd a chlàradh. Anns an eadar-aghaidh / sys/kernel/security/lsm tha liosta de mhodalan gnìomhach san t-siostam. Tha dubhan LSM air an stòradh ann an liostaichean ris an canar san òrdugh a tha air a shònrachadh ann an CONFIG_LSM. Tha sgrìobhainnean dubhan mionaideach air an toirt a-steach don fhaidhle header include/linux/lsm_hooks.h.
Leig fo-shiostam LSM le làn-aonachadh SELinux an aon dreach den eithne sheasmhach Linux v2.6. Gu litireil sa bhad SELinux air a thighinn gu bhith na inbhe de facto airson àrainneachdan tèarainte Linux agus thàinig e gu bhith na phàirt de na sgaoilidhean as mòr-chòrdte: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.
Briathrachas SELinux
- Dearbh-aithne — neach-cleachdaidh SELinux chan eil e an aon rud ris an Unix àbhaisteach/Linux ID cleachdaiche, faodaidh iad a bhith ann còmhla air an aon shiostam, ach tha iad gu tur eadar-dhealaichte ann an nàdar. Gach cunntas àbhaisteach Linux dh’fhaodadh e a bhith co-ionnan ri aon no barrachd ann an SELinuxDearbh-aithne SELinux 'S e pàirt riatanach den cho-theacsa tèarainteachd iomlan a tha a' dearbhadh dè na raointean as urrainn a dhol a-steach agus dè nach urrainn.
- Fearann — Anns an ear-dheasLinux ’S e co-theacsa cur an gnìomh cuspair a th’ ann an àrainn, i.e., pròiseas. Bidh àrainn a’ dearbhadh gu dìreach dè an ruigsinneachd a th’ aig pròiseas. Gu bunaiteach, ’s e liosta a th’ ann an àrainn de na as urrainn do phròiseasan a dhèanamh no dè na gnìomhan as urrainn do phròiseas a dhèanamh le diofar sheòrsaichean. Seo eisimpleirean de dh’àrainnean: sysadm_t airson rianachd siostaim, agus user_t, a tha na àrainn cleachdaiche cunbhalach, gun sochair. Bidh an siostam init a’ ruith san àrainn init_t, agus bidh am pròiseas ainmichte a’ ruith san àrainn named_t.
- Dreuchdan — Dè a tha na eadar-mheadhanair eadar àrainnean agus luchd-cleachdaidh SELinuxBidh dreuchdan a’ dearbhadh dè na raointean ris am faod neach-cleachdaidh a bhith agus dè na seòrsaichean nithean as urrainn dhaibh faighinn thuca. Tha an dòigh-obrach smachd ruigsinneachd seo a’ cur casg air bagairt ionnsaighean àrdachadh sochairean. Tha dreuchdan air an amalachadh a-steach do mhodail tèarainteachd Smachd Ruigsinneachd Stèidhichte air Dreuchdan (RBAC) a thathas a’ cleachdadh ann an SE.Linux.
- Seòrsaichean - Seòrsa feart liosta èigneachaidh a thèid a shònrachadh do nì agus a cho-dhùineas cò aig a gheibh cothrom air. Coltach ri bhith a’ mìneachadh àrainn, ach a-mhàin gu bheil an àrainn a’ buntainn ris a’ phròiseas, fhad ‘s a tha an seòrsa a’ buntainn ri nithean leithid clàran, faidhlichean, socaidean is mar sin air adhart.
- Cuspairean agus nithean - Tha pròiseasan nan cuspairean agus gan ruith ann an co-theacsa sònraichte, no raon tèarainteachd. Tha goireasan siostam obrachaidh: faidhlichean, clàran, socaidean, msaa, nan nithean a tha air an sònrachadh de sheòrsa sònraichte, ann am faclan eile, ìre de dhìomhaireachd.
- Poileasaidhean SELinux - Gus an siostam SE a dhìonLinux a’ cleachdadh measgachadh de phoileasaidhean. Poileasaidh SELinux A’ mìneachadh ruigsinneachd luchd-cleachdaidh gu dreuchdan, dreuchdan gu àrainnean, agus àrainnean gu seòrsachan. An toiseach, tha ùghdarras aig neach-cleachdaidh gu dreuchd, agus an uairsin tha ùghdarras aig dreuchd faighinn gu àrainnean. Mu dheireadh, is dòcha nach eil ruigsinneachd aig àrainn ach gu seòrsachan sònraichte de nithean.
Ailtireachd LSM agus SELinux
A dh’aindeoin an ainm, chan e modalan a ghabhas luchdachadh a th’ ann an LSMan. LinuxAch, dìreach mar SELinux, tha e air a thoirt a-steach gu dìreach don eithne. Feumaidh atharrachadh sam bith air còd tùsail an LSM cruinneachadh eithne ùr. Feumar an roghainn co-fhreagarrach a chomasachadh anns na roghainnean eithne, air neo cha tèid còd an LSM a ghnìomhachadh às dèidh bròg. Ach, eadhon anns a’ chùis seo, faodar a chomasachadh tro roghainn luchdair-bròg an t-siostaim obrachaidh.

Stac de sgrùdaidhean LSM
Tha LSM uidheamaichte le dubhan ann am prìomh ghnìomhan kernel a dh’ fhaodadh a bhith buntainneach airson sgrùdaidhean. Is e aon de na prìomh fheartan aig LSM gu bheil iad stèidhichte air stac. Mar sin, tha na sgrùdaidhean àbhaisteach fhathast gan coileanadh, agus cha bhith gach còmhdach LSM a’ cur ach smachdan agus smachdan a bharrachd. Tha seo a’ ciallachadh nach urrainnear an casg a chuir air ais. Tha seo air a shealltainn anns an fhigear, ma tha toradh sgrùdaidhean àbhaisteach DAC a 'fàilligeadh, cha ruig e eadhon na dubhan LSM.
SELinux ghabh iad ri ailtireachd tèarainteachd Flask de shiostam obrachaidh rannsachaidh Fluke, gu sònraichte prionnsabal na sochair as lugha. Is e brìgh a’ bhun-bheachd seo, mar a tha an t-ainm ag ràdh, dìreach na còraichean a tha riatanach a thoirt do neach-cleachdaidh no pròiseas gus an gnìomh a tha san amharc a dhèanamh. Tha am prionnsabal seo air a chur an gnìomh tro thaipeadh ruigsinneachd èigneachail, agus mar sin a’ cumail smachd air còraichean ruigsinneachd ann an SE.Linux stèidhichte air a’ mhodail àrainn => seòrsa.
Taing don taipeadh èignichte de access SELinux tha comasan smachd ruigsinneachd mòran nas cudromaiche aige na am modail DAC traidiseanta a thathas a’ cleachdadh ann an siostam-obrachaidh Unix/LinuxMar eisimpleir, faodaidh tu àireamh a’ phuirt lìonra a chuingealachadh ris am bi am frithealaiche FTP ag èisteachd, a’ leigeil le sgrìobhadh is atharrachadh fhaidhlichean ann am pasgan sònraichte, ach gun an sguabadh às.
Prìomh phàirtean SELinux tha iad mar a leanas:
- Frithealaiche Co-èigneachaidh Poileasaidh - Am prìomh dhòigh airson smachd ruigsinneachd a chuir air dòigh.
- Stòr-dàta de phoileasaidhean tèarainteachd siostam.
- Eadar-obrachadh leis an neach-èisteachd tachartas LSM.
- Selinuxfs — FS meallta, an aon rud ri /proc agus air a chuir suas ann an /sys/fs/selinux. Air a lìonadh gu daineamaigeach leis an eithne. Linux rè cur an gnìomh agus tha faidhlichean ann anns a bheil fiosrachadh mu inbhe an SELinux.
- Vector tasgadan ruigsinneachd - Uidheam cuideachaidh gus coileanadh a leasachadh.

Sgeama Obrachaidh SELinux
Tha seo uile ag obair mar a leanas.
- Cuspair sònraichte, ann an teirmean SELinux, a’ dèanamh an gnìomh ceadaichte air an nì an dèidh dearbhadh DAC, mar a chithear san ìomhaigh gu h-àrd. Thèid an t-iarrtas seo airson an obrachadh a dhèanamh a chur chun eadar-ghabhadair tachartais LSM.
- Às dèidh sin, thèid an t-iarrtas, còmhla ri co-theacsa tèarainteachd a’ chuspair agus an nì, a chur chun mhodal SE.Linux Tarraing-às agus Lògic Hook, a tha an urra ri eadar-obrachadh le LSM.
- ’S e am Frithealaiche Buileachaidh Poileasaidh an t-ùghdarras co-dhùnaidh a thaobh ruigsinneachd cuspair gu nì, agus gheibh e dàta bhon SE.Linux AnHL.
- Gus co-dhùnadh a dhèanamh air ruigsinneachd, no casg, tha an t-Seirbheis Co-èigneachaidh Poileasaidh a’ toirt iomradh air an fho-shiostam tasgadan de na riaghailtean Access Vector Cache (AVC) as motha a chleachdar.
- Mura lorgar am fuasgladh airson an riaghailt fhreagarrach san tasgadan, thèid an t-iarrtas a chuir chun stòr-dàta poileasaidh tèarainteachd.
- Thèid toradh an sgrùdaidh bhon stòr-dàta agus AVC a thilleadh chun Fhrithealaiche Co-èigneachaidh Poileasaidh.
- Ma tha am poileasaidh a chaidh a lorg co-chòrdail ris a’ ghnìomh a chaidh iarraidh, tha an obrachadh ceadaichte. Mur eil, tha an obrachadh air a thoirmeasg.
A’ riaghladh roghainnean SELinux
SELinux ag obair ann an aon de thrì modhan:
- Cur an gnìomh - Cur an gnìomh teann air poileasaidhean tèarainteachd.
- Ceadaichte - Tha briseadh air cuingealachaidhean ceadaichte, tha an comharra co-fhreagarrach air a dhèanamh sa log.
- Ciorramach - Chan eil poileasaidhean tèarainteachd ann an gnìomh.
Faic dè am modh a th’ ann an SELinux Faodaidh tu a dhèanamh leis an àithne a leanas.
[admin@server ~]$ getenforce
Permissive
Ag atharrachadh a 'mhodh mus ath-thòisich, mar eisimpleir, suidhich e gu bhith a' cur an gnìomh, no 1. Tha am paramadair ceadaichte a 'freagairt ris a' chòd àireamhach 0.
[admin@server ~]$ setenfoce enforcing
[admin@server ~]$ setenfoce 1 #то же самое
Faodaidh tu cuideachd am modh atharrachadh le bhith a’ deasachadh an fhaidhle:
[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=targaid
Is e an diofar le setenfoce gu bheil modh SE ann nuair a bhios an siostam obrachaidh a’ tòiseachadhLinux thèid a shuidheachadh a rèir luach paramadair faidhle rèiteachaidh SELINUX. A bharrachd air sin, chan eil atharrachaidhean air a bhith a’ cur <=> à comas a’ tighinn gu buil ach an dèidh deasachadh am faidhle /etc/selinux/config agus an dèidh ath-thòiseachadh.
Thoir sùil air geàrr-chunntas air staid:
[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
Gus feartan SE fhaicinnLinux Bidh cuid de ghoireasan àbhaisteach a’ cleachdadh am paramadair -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
An coimeas ris an toradh àbhaisteach ls -l, tha grunn raointean a bharrachd anns a’ chruth a leanas:
<user>:<role>:<type>:<level>
Tha an raon mu dheireadh a’ comharrachadh rudeigin mar stampa tèarainteachd agus tha measgachadh de dhà eileamaid ann:
- s0 - cudromachd, cuideachd air a chlàradh anns an eadar-ama ìre ìosal-àrd-ìre
- 'S e c0, c1 … c1023 an roinn-seòrsa.
Ag atharrachadh an rèiteachaidh ruigsinneachd
Cleachd semodule gus modalan SE a luchdachadhLinux, cuir ris agus thoir air falbh iad.
[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 - удалить модуль
A 'chiad sgioba logadh a-steach semanage a’ ceangal an neach-cleachdaidh SELinux leis an neach-cleachdaidh siostam obrachaidh, bidh an dàrna fear a’ taisbeanadh an liosta. Mu dheireadh, bidh an àithne mu dheireadh leis an suidse -r a’ toirt air falbh mapadh an neach-cleachdaidh SELinux gu cunntasan OS. Tha co-chàradh luachan Raon MLS/MCS air a mhìneachadh san earrann roimhe.
[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
sgioba cleachdaiche semanage air a chleachdadh gus mapaichean a riaghladh eadar luchd-cleachdaidh agus dreuchdan 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
Roghainnean àithne:
- -a cuir a-steach inntrigeadh mapaidh dreuchd àbhaisteach;
- -l liosta de luchd-cleachdaidh agus dreuchdan co-fhreagarrach;
- -d thoir air falbh inntrigeadh mapaidh dreuchd àbhaisteach;
- -R liosta de dhleastanasan ceangailte ris an neach-cleachdaidh;
Faidhlichean, puirt agus booleans
Gach modúl SELinux A’ toirt seachad seata de riaghailtean comharrachaidh faidhle, ach faodaidh tu na riaghailtean agad fhèin a chur ris ma tha feum orra. Mar eisimpleir, tha sinn airson còraichean ruigsinneachd a thoirt don fhrithealaiche lìn don phasgan /srv/www.
[admin@server ~]$ semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?
[admin@server ~]$ restorecon -R /srv/www/
Bidh a’ chiad àithne a’ clàradh riaghailtean comharrachaidh ùra, agus bidh an dàrna àithne ag ath-shuidheachadh, no an àite sin a’ nochdadh, seòrsaichean faidhle a rèir nan riaghailtean gnàthach.
Mar an ceudna, tha puirt TCP/UDP air an comharrachadh ann an dòigh is nach urrainn ach na seirbheisean iomchaidh èisteachd riutha. Mar eisimpleir, gus am bi frithealaiche lìn ag èisteachd air port 8080, feumaidh tu àithne a ruith.
[admin@server ~]$ semanage port -m -t http_port_t -p tcp 8080
Àireamh mhòr de mhodalan SELinux aig a bheil paramadairean as urrainn luachan Boolean a ghabhail. Chithear an liosta slàn de na paramadairean sin le bhith a’ cleachdadh getsebool -a. Faodar luachan Boolean atharrachadh le bhith a’ cleachdadh 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
Practicum, faigh cothrom air an eadar-aghaidh Pgadmin-web
Beachdaich air eisimpleir bho chleachdadh, chuir sinn a-steach pgadmin7.6-web air RHEL 4 gus stòr-dàta PostgreSQL a rianachd. Chaidh sinn seachad air pìos beag le stèidheachadh pg_hba.conf, postgresql.conf agus config_local.py, cuir na còraichean air na pasganan, chuir iad a-steach na modalan Python a tha a dhìth bho phìob. Tha a h-uile dad deiseil, ruith agus faigh Mearachd 500 taobh a-staigh an fhrithealaiche.

Bidh sinn a’ tòiseachadh le daoine a tha fo amharas àbhaisteach, thoir sùil air /var/log/httpd/error_log. Tha beagan inntrigidhean inntinneach an sin.
[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.
Seo far a bheil a’ mhòr-chuid de luchd-rianachd Linux Bidh buaireadh làidir ann setencorce 0 a ruith, agus sin deireadh a’ chùis. Gu fìrinneach, ’s e sin a rinn mi a’ chiad uair. ’S e fuasgladh a th’ ann gu cinnteach, ach chan e an rud as fheàrr idir.
A dh’aindeoin meud nan dealbhaidhean SELinux Faodaidh e a bhith furasta a chleachdadh. Dìreach stàlaich am pasgan setroubleshoot agus faic loga an t-siostaim.
[admin@server ~]$ yum install setroubleshoot
[admin@server ~]$ journalctl -b -0
[admin@server ~]$ service restart auditd
Thoir an aire gum feumar an t-seirbheis sgrùdaichte ath-thòiseachadh mar seo, agus chan ann le systemctl, a dh’ aindeoin làthaireachd systemd san OS. Ann an log an t-siostam thèid a chomharrachadh chan e a-mhàin fìrinn bacadh, ach cuideachd an adhbhar agus dòigh air faighinn seachad air a’ chasg.

Bidh sinn a’ coileanadh nan òrduighean seo:
[admin@server ~]$ setsebool -P httpd_can_network_connect 1
[admin@server ~]$ setsebool -P httpd_can_network_connect_db 1
Nì sinn sgrùdadh air ruigsinneachd air duilleag-lìn pgadmin4-lìn, bidh a h-uile dad ag obair.
Source: www.habr.com
