பாடநெறி மாணவர்களுக்காக தயாரிக்கப்பட்ட கட்டுரையின் மொழிபெயர்ப்பு
SELinux அல்லது பாதுகாப்பு மேம்படுத்தப்பட்ட லினக்ஸ் என்பது அமெரிக்க தேசிய பாதுகாப்பு முகமை (NSA) தீங்கிழைக்கும் ஊடுருவல்களைத் தடுக்க மேம்படுத்தப்பட்ட அணுகல் கட்டுப்பாட்டு பொறிமுறையாகும். இது ஏற்கனவே உள்ள விருப்பமான (அல்லது தேர்ந்தெடுக்கப்பட்ட) மாதிரியின் (ஆங்கில விருப்பமான அணுகல் கட்டுப்பாடு, டிஏசி), அதாவது, படிக்க, எழுத, இயக்க அனுமதிகளுக்கு மேல் கட்டாய (அல்லது கட்டாய) அணுகல் கட்டுப்பாட்டு மாதிரியை (ஆங்கில கட்டாய அணுகல் கட்டுப்பாடு, MAC) செயல்படுத்துகிறது.
SELinux மூன்று முறைகளைக் கொண்டுள்ளது:
- அமலாக்குதல் - கொள்கை விதிகளின் அடிப்படையில் அணுகல் மறுப்பு.
- அனுமதி - அமலாக்கப் பயன்முறையில் தடைசெய்யப்படும் கொள்கையை மீறும் செயல்களின் பதிவை வைத்திருத்தல்.
- முடக்கப்பட்டது - SELinux ஐ முழுமையாக முடக்குகிறது.
முன்னிருப்பாக அமைப்புகள் உள்ளன /etc/selinux/config
SELinux முறைகளை மாற்றுகிறது
தற்போதைய பயன்முறையைக் கண்டறிய, இயக்கவும்
$ getenforce
பயன்முறையை அனுமதியாக மாற்ற, பின்வரும் கட்டளையை இயக்கவும்
$ setenforce 0
அல்லது, இருந்து பயன்முறையை மாற்ற அனுமதியளிக்கும் மீது நடைமுறைப்படுத்துதல், செயல்படுத்த
$ setenforce 1
நீங்கள் SELinux ஐ முழுவதுமாக முடக்க வேண்டும் என்றால், இதை உள்ளமைவு கோப்பு மூலம் மட்டுமே செய்ய முடியும்
$ vi /etc/selinux/config
முடக்க, SELINUX அளவுருவை பின்வருமாறு மாற்றவும்:
SELINUX=disabled
SELinux ஐ அமைக்கிறது
ஒவ்வொரு கோப்பும் செயல்முறையும் ஒரு SELinux சூழலுடன் குறிக்கப்பட்டுள்ளது, இதில் பயனர், பங்கு, வகை போன்ற கூடுதல் தகவல்கள் உள்ளன. நீங்கள் SELinux ஐ இயக்குவது இதுவே முதல் முறை என்றால், நீங்கள் முதலில் சூழல் மற்றும் லேபிள்களை உள்ளமைக்க வேண்டும். லேபிள்கள் மற்றும் சூழலை ஒதுக்கும் செயல்முறை குறியிடுதல் எனப்படும். குறிக்கத் தொடங்க, உள்ளமைவு கோப்பில் பயன்முறையை மாற்றுகிறோம் அனுமதியளிக்கும்.
$ vi /etc/selinux/config
SELINUX=permissive
பயன்முறையை அமைத்த பிறகு அனுமதியளிக்கும், பெயருடன் ரூட்டில் ஒரு வெற்று மறைக்கப்பட்ட கோப்பை உருவாக்கவும் autorelabel
$ touch /.autorelabel
மற்றும் கணினியை மறுதொடக்கம் செய்யுங்கள்
$ init 6
குறிப்பு: நாங்கள் பயன்முறையைப் பயன்படுத்துகிறோம் அனுமதியளிக்கும் குறிப்பதற்காக, பயன்முறையைப் பயன்படுத்துவதால் நடைமுறைப்படுத்துதல் கணினியை மறுதொடக்கம் செய்யும் போது செயலிழக்கச் செய்யலாம்.
பதிவிறக்கம் சில கோப்பில் சிக்கியிருந்தால் கவலைப்பட வேண்டாம், குறிக்க சிறிது நேரம் ஆகும். மார்க்கிங் முடிந்ததும், உங்கள் கணினி துவக்கப்பட்டதும், நீங்கள் உள்ளமைவு கோப்பிற்குச் சென்று பயன்முறையை அமைக்கலாம் நடைமுறைப்படுத்துதல்மேலும் இயக்கவும்:
$ setenforce 1
நீங்கள் இப்போது உங்கள் கணினியில் SELinux ஐ வெற்றிகரமாக இயக்கியுள்ளீர்கள்.
பதிவுகளை கண்காணித்தல்
குறிக்கும் போது அல்லது கணினி இயங்கும் போது நீங்கள் சில பிழைகளை சந்தித்திருக்கலாம். உங்கள் SELinux சரியாக இயங்குகிறதா மற்றும் எந்த போர்ட், பயன்பாடு போன்றவற்றுக்கான அணுகலைத் தடுக்கவில்லை என்றால், நீங்கள் பதிவுகளைப் பார்க்க வேண்டும். SELinux பதிவு அமைந்துள்ளது /var/log/audit/audit.log
, ஆனால் பிழைகளைக் கண்டறிய நீங்கள் முழு விஷயத்தையும் படிக்க வேண்டியதில்லை. பிழைகளைக் கண்டறிய audit2why பயன்பாட்டைப் பயன்படுத்தலாம். பின்வரும் கட்டளையை இயக்கவும்:
$ audit2why < /var/log/audit/audit.log
இதன் விளைவாக, பிழைகளின் பட்டியலைப் பெறுவீர்கள். பதிவில் பிழைகள் இல்லை என்றால், செய்திகள் எதுவும் காட்டப்படாது.
SELinux கொள்கையை கட்டமைக்கிறது
SELinux கொள்கை என்பது SELinux பாதுகாப்பு பொறிமுறையை நிர்வகிக்கும் விதிகளின் தொகுப்பாகும். ஒரு கொள்கை ஒரு குறிப்பிட்ட சூழலுக்கான விதிகளின் தொகுப்பை வரையறுக்கிறது. தடைசெய்யப்பட்ட சேவைகளுக்கான அணுகலை அனுமதிக்கும் கொள்கைகளை எவ்வாறு கட்டமைப்பது என்பதை இப்போது கற்றுக்கொள்வோம்.
1. தருக்க மதிப்புகள் (சுவிட்சுகள்)
புதிய கொள்கைகளை உருவாக்காமல், இயக்க நேரத்தில் கொள்கையின் பகுதிகளை மாற்ற ஸ்விட்சுகள் (பூலியன்கள்) உங்களை அனுமதிக்கின்றன. SELinux கொள்கைகளை மறுதொடக்கம் செய்யாமல் அல்லது மீண்டும் தொகுக்காமல் மாற்றங்களைச் செய்ய அவை உங்களை அனுமதிக்கின்றன.
உதாரணமாக
எஃப்டிபி ரீட்/ரைட் மூலம் பயனரின் ஹோம் டைரக்டரியைப் பகிர விரும்புகிறோம் என்று வைத்துக் கொள்வோம், நாங்கள் ஏற்கனவே அதைப் பகிர்ந்துள்ளோம், ஆனால் அதை அணுக முயலும் போது, நமக்கு எதுவும் தெரியவில்லை. ஏனெனில் SELinux கொள்கையானது FTP சேவையகத்தை பயனரின் முகப்பு கோப்பகத்தைப் படிப்பதிலிருந்தும் எழுதுவதிலிருந்தும் தடுக்கிறது. FTP சர்வர் ஹோம் டைரக்டரிகளை அணுகும் வகையில் கொள்கையை மாற்ற வேண்டும். செய்து இதற்கான சுவிட்சுகள் உள்ளதா என்று பார்க்கலாம்
$ semanage boolean -l
இந்த கட்டளை கிடைக்கக்கூடிய சுவிட்சுகளை அவற்றின் தற்போதைய நிலை (ஆன் அல்லது ஆஃப்) மற்றும் விளக்கத்துடன் பட்டியலிடும். ftp-மட்டும் முடிவுகளைக் கண்டறிய grep ஐச் சேர்ப்பதன் மூலம் உங்கள் தேடலைச் செம்மைப்படுத்தலாம்:
$ semanage boolean -l | grep ftp
நீங்கள் பின்வருவனவற்றைக் காண்பீர்கள்
ftp_home_dir -> off Allow ftp to read & write file in user home directory
இந்த சுவிட்ச் முடக்கப்பட்டுள்ளது, எனவே நாங்கள் அதை இயக்குவோம் setsebool $ setsebool ftp_home_dir on
இப்போது எங்கள் ftp டீமான் பயனரின் முகப்பு கோப்பகத்தை அணுக முடியும்.
குறிப்பு: நீங்கள் செய்வதன் மூலம் விளக்கம் இல்லாமல் கிடைக்கக்கூடிய சுவிட்சுகளின் பட்டியலையும் பெறலாம் getsebool -a
2. லேபிள்கள் மற்றும் சூழல்
SELinux கொள்கையை செயல்படுத்த இது மிகவும் பொதுவான வழி. ஒவ்வொரு கோப்பு, கோப்புறை, செயல்முறை மற்றும் போர்ட் ஆகியவை SELinux சூழலுடன் குறிக்கப்பட்டுள்ளன:
- கோப்புகள் மற்றும் கோப்புறைகளுக்கு, லேபிள்கள் கோப்பு முறைமையில் நீட்டிக்கப்பட்ட பண்புக்கூறுகளாக சேமிக்கப்படும் மற்றும் பின்வரும் கட்டளையுடன் பார்க்கலாம்:
$ ls -Z /etc/httpd
- செயல்முறைகள் மற்றும் போர்ட்களுக்கு, லேபிளிங் கர்னலால் நிர்வகிக்கப்படுகிறது, மேலும் இந்த லேபிள்களை நீங்கள் பின்வருமாறு பார்க்கலாம்:
செயல்முறை
$ ps –auxZ | grep httpd
துறைமுகம்
$ netstat -anpZ | grep httpd
உதாரணமாக
இப்போது லேபிள்கள் மற்றும் சூழலை நன்கு புரிந்துகொள்ள ஒரு உதாரணத்தைப் பார்ப்போம். கோப்பகத்திற்குப் பதிலாக எங்களிடம் ஒரு வலை சேவையகம் உள்ளது என்று வைத்துக்கொள்வோம் /var/www/html/ использует /home/dan/html/
. SELinux இதை கொள்கை மீறலாகக் கருதும் மற்றும் உங்களால் உங்கள் இணையப் பக்கங்களைப் பார்க்க முடியாது. HTML கோப்புகளுடன் தொடர்புடைய பாதுகாப்பு சூழலை நாங்கள் அமைக்கவில்லை என்பதே இதற்குக் காரணம். இயல்புநிலை பாதுகாப்பு சூழலைக் காண, பின்வரும் கட்டளையைப் பயன்படுத்தவும்:
$ ls –lz /var/www/html
-rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/
இதோ கிடைத்தது httpd_sys_content_t
html கோப்புகளுக்கான சூழலாக. நமது தற்போதைய கோப்பகத்திற்கு இந்த பாதுகாப்பு சூழலை அமைக்க வேண்டும், இது தற்போது பின்வரும் சூழலைக் கொண்டுள்ளது:
-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/
கோப்பு அல்லது கோப்பகத்தின் பாதுகாப்பு சூழலை சரிபார்க்க மாற்று கட்டளை:
$ semanage fcontext -l | grep '/var/www'
சரியான பாதுகாப்பு சூழலைக் கண்டறிந்ததும் சூழலை மாற்றவும் செமனேஜைப் பயன்படுத்துவோம். /home/dan/html இன் சூழலை மாற்ற, பின்வரும் கட்டளைகளை இயக்கவும்:
$ semanage fcontext -a -t httpd_sys_content_t ‘/home/dan/html(/.*)?’
$ semanage fcontext -l | grep ‘/home/dan/html’
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html
செமனேஜைப் பயன்படுத்தி சூழல் மாற்றப்பட்ட பிறகு, கோப்புகள் மற்றும் கோப்பகங்களுக்கான இயல்புநிலை சூழலை restorecon கட்டளை ஏற்றும். எங்கள் இணைய சேவையகம் இப்போது கோப்புறையிலிருந்து கோப்புகளைப் படிக்க முடியும் /home/dan/html
ஏனெனில் இந்த கோப்புறைக்கான பாதுகாப்பு சூழல் மாற்றப்பட்டுள்ளது httpd_sys_content_t
.
3. உள்ளூர் கொள்கைகளை உருவாக்கவும்
மேலே உள்ள முறைகள் உங்களுக்குப் பயன்படாத சூழ்நிலைகள் இருக்கலாம் மற்றும் audit.log இல் பிழைகள் (avc/denial) ஏற்படும். இது நிகழும்போது, நீங்கள் ஒரு உள்ளூர் கொள்கையை உருவாக்க வேண்டும். மேலே விவரிக்கப்பட்டுள்ளபடி, audit2why ஐப் பயன்படுத்தி எல்லாப் பிழைகளையும் நீங்கள் காணலாம்.
பிழைகளைத் தீர்க்க உள்ளூர் கொள்கையை உருவாக்கலாம். எடுத்துக்காட்டாக, httpd (apache) அல்லது smbd (samba) தொடர்பான பிழையைப் பெறுகிறோம், பிழைகளைக் கண்டறிந்து அவற்றுக்கான கொள்கையை உருவாக்குகிறோம்:
apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy
இது http_policy
и smb_policy
நாங்கள் உருவாக்கிய உள்ளூர் கொள்கைகளின் பெயர்கள். இப்போது இந்த உருவாக்கப்பட்ட உள்ளூர் கொள்கைகளை தற்போதைய SELinux கொள்கையில் ஏற்ற வேண்டும். இதை பின்வருமாறு செய்யலாம்:
$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp
எங்களின் உள்ளூர் கொள்கைகள் பதிவிறக்கம் செய்யப்பட்டுள்ளன, மேலும் audit.logல் எந்த avc அல்லது denailஐயும் இனி நாங்கள் பெற மாட்டோம்.
இது SELinux ஐ நீங்கள் புரிந்து கொள்ள உதவும் எனது முயற்சியாகும். இந்தக் கட்டுரையைப் படித்த பிறகு நீங்கள் SELinuxஐப் பற்றி மேலும் வசதியாக இருப்பீர்கள் என்று நம்புகிறேன்.
ஆதாரம்: www.habr.com