கணினி நிர்வாகிகளுக்கான SELinux ஏமாற்று தாள்: முக்கியமான கேள்விகளுக்கு 42 பதில்கள்

கட்டுரையின் மொழிபெயர்ப்பு பாடநெறி மாணவர்களுக்காக குறிப்பாக தயாரிக்கப்பட்டது "லினக்ஸ் நிர்வாகி".

கணினி நிர்வாகிகளுக்கான SELinux ஏமாற்று தாள்: முக்கியமான கேள்விகளுக்கு 42 பதில்கள்

வாழ்க்கை, பிரபஞ்சம் மற்றும் லினக்ஸில் உள்ள அனைத்தையும் பற்றிய முக்கியமான கேள்விகளுக்கான பதில்களை மேம்படுத்தப்பட்ட பாதுகாப்புடன் இங்கே பெறுவீர்கள்.

"விஷயங்கள் எப்பொழுதும் தோன்றுவது போல் இருப்பதில்லை என்பது பொது அறிவு..."

-டக்ளஸ் ஆடம்ஸ், தி ஹிட்ச்ஹைக்கர்ஸ் கைடு டு தி கேலக்ஸி

பாதுகாப்பு. அதிகரித்த நம்பகத்தன்மை. கடித தொடர்பு. கொள்கை. அபோகாலிப்ஸ் சிசாட்மின் நான்கு குதிரை வீரர்கள். எங்களின் அன்றாடப் பணிகளுக்கு கூடுதலாக - கண்காணிப்பு, காப்புப்பிரதி, செயல்படுத்தல், உள்ளமைவு, புதுப்பித்தல் போன்றவை - எங்கள் அமைப்புகளின் பாதுகாப்பிற்கும் நாங்கள் பொறுப்பு. மேம்படுத்தப்பட்ட பாதுகாப்பை முடக்குமாறு மூன்றாம் தரப்பு வழங்குநர் பரிந்துரைக்கும் அமைப்புகள் கூட. வேலை செய்வது போல் உணர்கிறேன் ஈதன் ஹன்ட் "மிஷன்: இம்பாசிபிள்" என்பதிலிருந்து.

இந்த இக்கட்டான சூழ்நிலையில், சில சிஸ்டம் நிர்வாகிகள் எடுக்க முடிவு செய்கிறார்கள் நீல மாத்திரை, ஏனென்றால் வாழ்க்கை, பிரபஞ்சம் மற்றும் அனைத்திற்கும் பெரிய கேள்விக்கான பதிலை அவர்கள் ஒருபோதும் அறிய மாட்டார்கள் என்று அவர்கள் நினைக்கிறார்கள். நாம் அனைவரும் அறிந்தபடி, அந்த பதில் 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 எப்படி வேலை செய்கிறது? அப்பாச்சி வலை சேவையகத்திற்கான ஒரு எடுத்துக்காட்டு இங்கே:

  • பைனரி பிரதிநிதித்துவம்: /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. என்றால் நீங்கள் தெரிந்து கொள்ள வேண்டிய SELinuxபோர்ட் 8585 இல் HTTPD கேட்கிறது என்று, SELinux க்கு சொல்லுங்கள்:

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

18. நீங்கள் தெரிந்து கொள்ள வேண்டிய SELinux SELinux கொள்கை மேலெழுதப்படுவதை அறியாமல், SELinux கொள்கையின் பகுதிகளை இயக்க நேரத்தில் மாற்ற அனுமதிக்கும் பூலியன் மதிப்புகள். எடுத்துக்காட்டாக, 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/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

கருத்தைச் சேர்