පද්ධති පරිපාලකයින් සඳහා SELinux වංචා පත්‍රය: වැදගත් ප්‍රශ්න සඳහා පිළිතුරු 42ක්

ලිපියේ පරිවර්තනය පාඨමාලාවේ සිසුන් සඳහා විශේෂයෙන් සකස් කරන ලදී "ලිනක්ස් පරිපාලක".

පද්ධති පරිපාලකයින් සඳහා SELinux වංචා පත්‍රය: වැදගත් ප්‍රශ්න සඳහා පිළිතුරු 42ක්

මෙහිදී ඔබට වැඩි දියුණු කළ ආරක්‍ෂාවක් සහිතව Linux හි ජීවිතය, විශ්වය සහ සියල්ල පිළිබඳ වැදගත් ප්‍රශ්නවලට පිළිතුරු ලැබෙනු ඇත.

"දේවල් හැමවිටම පෙනෙන දේ නොවන බව වැදගත් සත්යය පොදු දැනුමයි..."

-ඩග්ලස් ඇඩම්ස්, ද ගැලැක්සි මෙම හිචිකර්ස් මාර්ගෝපදේශනයක්

ආරක්ෂාව. විශ්වසනීයත්වය වැඩි කිරීම. ලිපි හුවමාරුව. ප්රතිපත්ති. Apocalypse sysadmin හි අශ්වයින් හතර දෙනෙක්. අපගේ දෛනික කාර්යයන්ට අමතරව - අධීක්ෂණය, උපස්ථ කිරීම, ක්‍රියාත්මක කිරීම, වින්‍යාස කිරීම, යාවත්කාලීන කිරීම යනාදිය - අපගේ පද්ධතිවල ආරක්ෂාව සඳහා ද අපි වගකිව යුතුය. තෙවන පාර්ශ්ව සපයන්නා විසින් අපි වැඩිදියුණු කළ ආරක්ෂාව අබල කරන ලෙස නිර්දේශ කරන එම පද්ධති පවා. වැඩක් වගේ දැනෙනවා ඊතන් හන්ට් "Mission: Impossible" වෙතින්

මෙම උභතෝකෝටිකයට මුහුණ දෙමින්, සමහර පද්ධති පරිපාලකයින් ගැනීමට තීරණය කරයි නිල් පෙති, ඔවුන් සිතන්නේ ජීවිතය, විශ්වය සහ ඒ සියල්ල පිළිබඳ විශාල ප්‍රශ්නයට පිළිතුර ඔවුන් කිසි විටෙකත් නොදන්නේ යැයි ඔවුන් සිතන බැවිනි. අපි කවුරුත් දන්නා පරිදි, එම පිළිතුර 42 වේ.

The Hitchhiker's Guide to the Galaxy හි ආත්මය තුළ, පාලනය සහ භාවිතය පිළිබඳ වැදගත් ප්‍රශ්නවලට පිළිතුරු 42ක් මෙහි ඇත. SELinux ඔබේ පද්ධති මත.

1. SELinux යනු බලහත්කාර ප්‍රවේශ පාලන පද්ධතියකි, එනම් සෑම ක්‍රියාවලියක්ම ලේබලයක් ඇති බවයි. සෑම ගොනුවක්ම, නාමාවලියක් සහ පද්ධති වස්තුවක් ලේබල් ද ඇත. ප්‍රතිපත්ති රීති මගින් ටැග් කළ ක්‍රියාවලි සහ වස්තු අතර ප්‍රවේශය පාලනය කරයි. කර්නලය මෙම නීති ක්රියාත්මක කරයි.

2. වඩාත්ම වැදගත් සංකල්ප දෙක නම්: ලේබල් කිරීම - සලකුණු (ගොනු, ක්රියාවලි, වරාය, ආදිය) සහ වර්ගය බලාත්මක කිරීම (වර්ග මත පදනම්ව එකිනෙකින් ක්‍රියාවලි හුදකලා කරයි).

3. නිවැරදි ලේබල් ආකෘතිය user:role:type:level (විකල්ප).

4. බහු මට්ටමේ ආරක්ෂාව සැපයීමේ අරමුණ (බහු මට්ටමේ ආරක්ෂාව - MLS) යනු ඔවුන් භාවිතා කරන දත්තවල ආරක්‍ෂිත මට්ටම මත පදනම්ව ක්‍රියාවලි (වසම්) කළමනාකරණය කිරීමයි. උදාහරණයක් ලෙස, රහස් ක්‍රියාවලියකට ඉහළ රහස්‍ය දත්ත කියවිය නොහැක.

5. බහු-කාණ්ඩ ආරක්ෂාව සහතික කිරීම (බහු-කාණ්ඩ ආරක්ෂාව - MCS) එකිනෙකින් සමාන ක්‍රියාවලීන් ආරක්ෂා කරයි (උදාහරණයක් ලෙස, අතථ්‍ය යන්ත්‍ර, OpenShift එන්ජින්, SELinux වැලිපිල්ල, බහාලුම්, ආදිය).

6. ආරම්භයේදී SELinux මාතයන් වෙනස් කිරීම සඳහා කර්නල් විකල්ප:

  • autorelabel=1 → පද්ධතිය නැවත ලේබල් කිරීම ක්‍රියාත්මක කිරීමට හේතු වේ
  • selinux=0 → කර්නලය SELinux යටිතල පහසුකම් පූරණය නොකරයි
  • enforcing=0 → අවසර ප්‍රකාරයේදී පැටවීම

7. ඔබට සම්පූර්ණ පද්ධතිය නැවත ලේබල් කිරීමට අවශ්‍ය නම්:

# touch /.autorelabel
#reboot

පද්ධති සලකුණු කිරීමේදී දෝෂ විශාල ප්‍රමාණයක් තිබේ නම්, සටහන් කිරීම සාර්ථක වීමට අවසර ප්‍රකාරයේදී ආරම්භ කිරීමට ඔබට අවශ්‍ය විය හැක.

8. SELinux සබල කර ඇත්දැයි පරීක්ෂා කිරීමට: # getenforce

9. SELinux තාවකාලිකව සබල/අබල කිරීමට: # setenforce [1|0]

10. SELinux තත්ත්වය පරීක්ෂා කරමින්: # sestatus

11. වින්‍යාස ගොනුව: /etc/selinux/config

12. SELinux ක්‍රියා කරන්නේ කෙසේද? Apache වෙබ් සේවාදායකය සඳහා උදාහරණයක් සලකුණු කිරීම මෙන්න:

  • ද්විමය නිරූපණය: /usr/sbin/httpd→httpd_exec_t
  • වින්‍යාස නාමාවලිය: /etc/httpd→httpd_config_t
  • ලොග් ගොනු නාමාවලිය: /var/log/httpd → httpd_log_t
  • අන්තර්ගත නාමාවලිය: /var/www/html → httpd_sys_content_t
  • තිර රචනය දියත් කරන්න: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • ක්රියාවලිය: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • වරාය: 80/tcp, 443/tcp → httpd_t, http_port_t

සන්දර්භය තුළ ක්රියාත්මක වන ක්රියාවලිය httpd_t, ලේබල් කළ වස්තුවක් සමඟ අන්තර් ක්‍රියා කළ හැක httpd_something_t.

13. බොහෝ විධාන තර්කයක් පිළිගනී -Z සන්දර්භය බැලීමට, නිර්මාණය කිරීමට සහ වෙනස් කිරීමට:

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

ගොනු ඔවුන්ගේ මව් නාමාවලියෙහි සන්දර්භය මත පදනම්ව (සමහර ව්‍යතිරේක සහිතව) නිර්මාණය කරන විට සන්දර්භ ස්ථාපිත කෙරේ. RPM වලට ස්ථාපනය කිරීමේදී මෙන් සන්දර්භයන් පිහිටුවිය හැක.

14. SELinux දෝෂ සඳහා ප්‍රධාන හේතු හතරක් ඇත, ඒවා පහත කරුණු 15-21 හි වඩාත් විස්තරාත්මකව විස්තර කෙරේ:

  • ලේබල් කිරීමේ ගැටළු
  • SELinux දැනගත යුතු දෙයක් නිසා
  • SELinux ප්‍රතිපත්තිය/යෙදුමෙහි දෝෂයකි
  • ඔබේ තොරතුරු අවදානමට ලක් විය හැක

15. ලේබල් කිරීමේ ගැටලුව: ඔබේ ගොනු තිබේ නම් /srv/myweb වැරදි ලෙස සලකුණු කර ඇත, ප්රවේශය ප්රතික්ෂේප කළ හැකිය. මෙය නිවැරදි කිරීමට ක්‍රම කිහිපයක් මෙන්න:

  • ඔබ ලේබලය දන්නේ නම්:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • සමාන සලකුණු සහිත ගොනුවක් ඔබ දන්නේ නම්:
    # semanage fcontext -a -e /srv/myweb /var/www
  • සන්දර්භය ප්‍රතිසාධනය කිරීම (අවස්ථා දෙක සඳහා):
    # restorecon -vR /srv/myweb

16. ලේබල් කිරීමේ ගැටලුව: ඔබ එය පිටපත් කිරීම වෙනුවට ගොනුව ගෙන ගියහොත්, ගොනුව එහි මුල් සන්දර්භය රඳවා ගනු ඇත. මෙම ගැටළුව විසඳීම සඳහා:

  • ලේබලය සමඟ සන්දර්භය විධානය වෙනස් කරන්න:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • සබැඳි ලේබලය සමඟ සන්දර්භය විධානය වෙනස් කරන්න:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • සන්දර්භය ප්‍රතිසාධනය කරන්න (අවස්ථා දෙක සඳහා): # restorecon -vR /var/www/html/

17. නම් ඔබ දැනගත යුතු SELinuxHTTPD වරාය 8585 මත සවන් දෙන බව, SELinux ට කියන්න:

# semanage port -a -t http_port_t -p tcp 8585

18. ඔබ දැනගත යුතු SELinux SELinux ප්‍රතිපත්තිය උඩින් ලියැවෙන බව නොදැන SELinux ප්‍රතිපත්තියේ කොටස් ධාවන වේලාවේදී වෙනස් කිරීමට ඉඩ සලසන Boolean අගයන්. උදාහරණයක් ලෙස, ඔබට httpd විද්‍යුත් තැපෑල යැවීමට අවශ්‍ය නම්, ඇතුළත් කරන්න: # setsebool -P httpd_can_sendmail 1

19. ඔබ දැනගත යුතු SELinux SELinux සැකසුම් සක්‍රීය/අබල කිරීම සඳහා තාර්කික අගයන්:

  • සියලුම බූලියන් අගයන් බැලීමට: # getsebool -a
  • එක් එක් විස්තරය බැලීමට: # semanage boolean -l
  • බූලියන් අගයක් සැකසීමට: # setsebool [_boolean_] [1|0]
  • ස්ථිර ස්ථාපනය සඳහා, එකතු කරන්න -P. උදාහරණයක් ලෙස: # setsebool httpd_enable_ftp_server 1 -P

20. SELinux ප්‍රතිපත්ති/යෙදුම් වල දෝෂ අඩංගු විය හැක, ඇතුළුව:

  • අසාමාන්ය කේත මාර්ග
  • සැකසුම්
  • stdout යළි-යොමු කරමින්
  • ගොනු විස්තරය කාන්දු වීම
  • ක්රියාත්මක කළ හැකි මතකය
  • දුර්වල ලෙස ඉදිකරන ලද පුස්තකාල

ප්‍රවේශපත්‍ර විවෘත කරන්න (Bugzilla වෙත වාර්තාවක් ඉදිරිපත් නොකරන්න; Bugzilla සතුව SLA නොමැත).

21. ඔබේ තොරතුරු අවදානමට ලක් විය හැකඔබට සීමා කළ වසම් තිබේ නම්:

  • කර්නල් මොඩියුල පූරණය කරන්න
  • බලාත්මක SELinux මාදිලිය අබල කරන්න
  • වෙත ලියන්න etc_t/shadow_t
  • iptables නීති වෙනස් කරන්න

22. ප්‍රතිපත්ති මොඩියුල සංවර්ධනය සඳහා SELinux මෙවලම්:

# yum -y install setroubleshoot setroubleshoot-server

නැවත ආරම්භ කරන්න හෝ නැවත ආරම්භ කරන්න auditd ස්ථාපනය කිරීමෙන් පසුව.

23. භාවිත

journalctl

හා සම්බන්ධ සියලුම ලඝු-සටහන් ලැයිස්තුවක් පෙන්වීමට setroubleshoot:

# journalctl -t setroubleshoot --since=14:20

24. භාවිත journalctl විශේෂිත SELinux ටැගයක් හා සම්බන්ධ සියලුම ලොග ලැයිස්තුගත කිරීමට. උදාහරණ වශයෙන්:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. SELinux දෝෂයක් ඇති වුවහොත්, ලොගය භාවිතා කරන්න setroubleshoot හැකි විසඳුම් කිහිපයක් ඉදිරිපත් කරයි.
උදාහරණයක් ලෙස, සිට journalctl:

Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e

# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.

***** Plugin restorecon (99.5 confidence) suggests ************************

If you want to fix the label,
/var/www/html/index.html default label should be httpd_syscontent_t.
Then you can restorecon.
Do
# /sbin/restorecon -v /var/www/html/index.html

26. ලොග් වීම: SELinux බොහෝ ස්ථානවල තොරතුරු වාර්තා කරයි:

  • / var / log / messages
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. ලොග් වීම: විගණන ලොගයේ SELinux දෝෂ සෙවීම:

# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

28. නිශ්චිත සේවාවක් සඳහා SELinux Access Vector Cache (AVC) පණිවිඩ සොයා ගැනීමට:

# ausearch -m avc -c httpd

29. උපයෝගීතාව audit2allow තහනම් මෙහෙයුම් වල ලොග වලින් තොරතුරු රැස්කර SELinux අවසර ප්‍රතිපත්ති රීති උත්පාදනය කරයි. උදාහරණ වශයෙන්:

  • ප්‍රවේශය ප්‍රතික්ෂේප කරන්නේ මන්දැයි මිනිසුන්ට කියවිය හැකි විස්තරයක් නිර්මාණය කිරීමට: # audit2allow -w -a
  • ප්‍රතික්ෂේප කළ ප්‍රවේශයට ඉඩ දෙන ආකාරයේ බලාත්මක කිරීමේ රීතියක් බැලීමට: # audit2allow -a
  • අභිරුචි මොඩියුලයක් සෑදීමට: # audit2allow -a -M mypolicy
  • විකල්පය -M නියම කරන ලද නම සහිත ආකාරයේ බලාත්මක කිරීමේ ගොනුවක් (.te) සාදන අතර රීතිය ප්‍රතිපත්ති පැකේජයකට (.pp) සම්පාදනය කරයි: mypolicy.pp mypolicy.te
  • අභිරුචි මොඩියුලයක් ස්ථාපනය කිරීමට: # semodule -i mypolicy.pp

30. අවසර ප්‍රකාරයේදී වැඩ කිරීමට වෙනම ක්‍රියාවලියක් (වසම්) වින්‍යාස කිරීමට: # semanage permissive -a httpd_t

31. ඔබට තවදුරටත් වසම අවසර දීමට අවශ්‍ය නැතිනම්: # semanage permissive -d httpd_t

32. සියලුම අවසර ලත් වසම් අක්‍රිය කිරීමට: # semodule -d permissivedomains

33. MLS SELinux ප්‍රතිපත්තිය සබල කරමින්: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

SELinux අවසර ප්‍රකාරයේදී ක්‍රියාත්මක වන බවට වග බලා ගන්න: # setenforce 0
පිටපතක් භාවිතා කරන්න fixfilesඊළඟ නැවත පණගැන්වීමේදී ගොනු නැවත ලේබල් කර ඇති බව සහතික කිරීමට:

# fixfiles -F onboot # reboot

34. නිශ්චිත MLS පරාසයක් සහිත පරිශීලකයෙකු සාදන්න: # useradd -Z staff_u john

විධානය භාවිතා කිරීම useradd, නව පරිශීලකයා දැනට පවතින SELinux පරිශීලකයෙකුට සිතියම්ගත කරන්න (මෙම අවස්ථාවේදී, staff_u).

35. SELinux සහ Linux භාවිතා කරන්නන් අතර සිතියම්ගත කිරීම බැලීමට: # semanage login -l

36. පරිශීලකයා සඳහා නිශ්චිත පරාසයක් නිර්වචනය කරන්න: # semanage login --modify --range s2:c100 john

37. පරිශීලකයාගේ නිවාස නාමාවලි ලේබලය නිවැරදි කිරීමට (අවශ්‍ය නම්): # chcon -R -l s2:c100 /home/john

38. වත්මන් කාණ්ඩ බැලීම සඳහා: # chcat -L

39. ප්‍රවර්ග වෙනස් කිරීමට හෝ ඔබේම නිර්මාණයක් ආරම්භ කිරීමට, ගොනුව පහත පරිදි සංස්කරණය කරන්න:

/etc/selinux/_<selinuxtype>_/setrans.conf

40. නිශ්චිත ගොනුවක්, භූමිකාවක් සහ පරිශීලක සන්දර්භයක විධානයක් හෝ ස්ක්‍රිප්ට් එකක් ක්‍රියාත්මක කිරීමට:

# runcon -t initrc_t -r system_r -u user_u yourcommandhere

  • -t ගොනු සන්දර්භය
  • -r භූමිකාව සන්දර්භය
  • -u පරිශීලක සන්දර්භය

41. SELinux අබල කර ඇති බහාලුම්:

  • පොඩ්මන්: # podman run --security-opt label=disable …
  • ඩොකර්: # docker run --security-opt label=disable …

42. ඔබට කන්ටේනරය පද්ධතියට සම්පූර්ණ ප්‍රවේශය ලබා දීමට අවශ්‍ය නම්:

  • පොඩ්මන්: # podman run --privileged …
  • ඩොකර්: # docker run --privileged …

දැන් ඔබ දැනටමත් පිළිතුර දන්නවා. එබැවින් කරුණාකර: කලබල නොවී SELinux සක්‍රීය කරන්න.

ආශ්රිත:

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න