
కోర్సు విద్యార్థుల కోసం తయారు చేసిన వ్యాసం యొక్క అనువాదం
SELinux లేదా భద్రత మెరుగుపరచబడింది Linux MAC అనేది హానికరమైన చొరబాట్లను నిరోధించడానికి యు.ఎస్. జాతీయ భద్రతా సంస్థ (NSA) అభివృద్ధి చేసిన ఒక మెరుగైన యాక్సెస్ నియంత్రణ యంత్రాంగం. ఇది ఇప్పటికే ఉన్న విచక్షణ యాక్సెస్ నియంత్రణ (DAC) నమూనాపై తప్పనిసరి యాక్సెస్ నియంత్రణ (MAC) నమూనాను అమలు చేస్తుంది, ఇందులో చదవడానికి, వ్రాయడానికి మరియు అమలు చేయడానికి అనుమతులు ఉంటాయి.
SE వద్దLinux మూడు విధానాలు ఉన్నాయి:
- అమలుపరిచి - పాలసీ నియమాల ఆధారంగా యాక్సెస్ తిరస్కరణ.
- అనుమతించదగినది - అమలు మోడ్లో నిషేధించబడే విధానాన్ని ఉల్లంఘించే చర్యల లాగ్ను ఉంచడం.
- వికలాంగుల SE యొక్క పూర్తి మూసివేతLinux.
డిఫాల్ట్గా సెట్టింగ్లు ఉన్నాయి /etc/selinux/config
SE మోడ్లను మార్చడంLinux
ప్రస్తుత మోడ్ను తెలుసుకోవడానికి, అమలు చేయండి
$ getenforceమోడ్ను అనుమతికి మార్చడానికి కింది ఆదేశాన్ని అమలు చేయండి
$ setenforce 0లేదా, నుండి మోడ్ మార్చడానికి అనుమతులిచ్చే న అమలు, అమలు చేయండి
$ setenforce 1మీరు SEని పూర్తిగా నిలిపివేయవలసి వస్తేLinuxఅయితే, దీన్ని కాన్ఫిగరేషన్ ఫైల్ ద్వారా మాత్రమే చేయవచ్చు.
$ vi /etc/selinux/configనిలిపివేయడానికి, SELINUX పరామితిని ఈ క్రింది విధంగా మార్చండి:
SELINUX=disabledSEని ఏర్పాటు చేయడంLinux
ప్రతి ఫైల్ మరియు ప్రాసెస్ ఒక SE కాంటెక్స్ట్తో గుర్తించబడుతుందిLinux, ఇందులో వినియోగదారు, పాత్ర, రకం మొదలైన అదనపు సమాచారం ఉంటుంది. మీరు SE ని మొదటిసారి ఎనేబుల్ చేస్తుంటేLinuxఅప్పుడు, మీరు మొదట కాంటెక్స్ట్ మరియు లేబుల్లను కాన్ఫిగర్ చేయాలి. లేబుల్లు మరియు కాంటెక్స్ట్ను కేటాయించే ప్రక్రియను లేబులింగ్ అంటారు. లేబులింగ్ ప్రారంభించడానికి, కాన్ఫిగరేషన్ ఫైల్లోని మోడ్ను దీనికి మార్చండి అనుమతులిచ్చే.
$ vi /etc/selinux/config
SELINUX=permissiveమోడ్ సెట్ చేసిన తర్వాత అనుమతులిచ్చే, పేరుతో ఒక ఖాళీ దాచిన ఫైల్ను రూట్లో సృష్టించండి autorelabel
$ touch /.autorelabelమరియు కంప్యూటర్ పునఃప్రారంభించండి
$ init 6గమనిక: మేము మోడ్ను ఉపయోగిస్తాము అనుమతులిచ్చే మార్కింగ్ కోసం, మోడ్ యొక్క ఉపయోగం నుండి అమలు రీబూట్ సమయంలో సిస్టమ్ క్రాష్ కావడానికి కారణం కావచ్చు.
డౌన్లోడ్ ఏదైనా ఫైల్లో చిక్కుకుపోయినట్లయితే చింతించకండి, మార్కింగ్ చేయడానికి కొంత సమయం పడుతుంది. మార్కింగ్ పూర్తయిన తర్వాత మరియు మీ సిస్టమ్ బూట్ అయిన తర్వాత, మీరు కాన్ఫిగరేషన్ ఫైల్కి వెళ్లి మోడ్ను సెట్ చేయవచ్చు అమలుమరియు కూడా అమలు చేయండి:
$ setenforce 1ఇప్పుడు మీరు SEని విజయవంతంగా ప్రారంభించారుLinux మీ కంప్యూటర్లో.
లాగ్లను పర్యవేక్షిస్తోంది
లేబులింగ్ సమయంలో లేదా సిస్టమ్ నడుస్తున్నప్పుడు మీరు కొన్ని లోపాలను ఎదుర్కొని ఉండవచ్చు. మీ SE పని చేస్తుందో లేదో తనిఖీ చేయడానికిLinux అది సరిగ్గా ఉందో లేదో మరియు అది ఏవైనా పోర్ట్లు, అప్లికేషన్లు మొదలైన వాటికి యాక్సెస్ను నిరోధిస్తుందో లేదో చూడటానికి మీరు లాగ్లను తనిఖీ చేయాలి. SE లాగ్Linux లో ఉంది /var/log/audit/audit.log, కానీ లోపాలను కనుగొనడానికి మీరు మొత్తం చదవాల్సిన అవసరం లేదు. మీరు లోపాలను కనుగొనడానికి audit2why యుటిలిటీని ఉపయోగించవచ్చు. కింది ఆదేశాన్ని అమలు చేయండి:
$ audit2why < /var/log/audit/audit.logఫలితంగా, మీరు లోపాల జాబితాను అందుకుంటారు. లాగ్లో లోపాలు లేకుంటే, సందేశాలు ఏవీ ప్రదర్శించబడవు.
SE పాలసీని ఏర్పాటు చేయడంLinux
SE విధానంLinux — SE భద్రతా యంత్రాంగానికి మార్గనిర్దేశం చేసే నియమాల సమితిLinuxపాలసీ అనేది ఒక నిర్దిష్ట వాతావరణం కోసం నియమాల సమితిని నిర్వచిస్తుంది. ఇప్పుడు మనం పరిమితం చేయబడిన సేవలకు యాక్సెస్ను అనుమతించడానికి పాలసీలను ఎలా కాన్ఫిగర్ చేయాలో నేర్చుకుందాం.
1. తార్కిక విలువలు (స్విచ్లు)
కొత్త పాలసీలను సృష్టించాల్సిన అవసరం లేకుండా, రన్టైమ్లో పాలసీలోని భాగాలను మార్చడానికి బూలియన్లు మిమ్మల్ని అనుమతిస్తాయి. SE పాలసీలను రీబూట్ చేయకుండా లేదా రీకంపైల్ చేయకుండానే మార్పులు చేయడానికి అవి మిమ్మల్ని అనుమతిస్తాయి.Linux.
ఉదాహరణకు
మనం ఒక యూజర్ యొక్క హోమ్ డైరెక్టరీని FTP ద్వారా రీడ్ మరియు రైట్ యాక్సెస్ కోసం షేర్ చేయాలనుకుంటున్నాము అనుకుందాం, మరియు మనం దానిని ఇప్పటికే షేర్ చేసాము, కానీ మనం దానిని యాక్సెస్ చేయడానికి ప్రయత్నించినప్పుడు, మనకు ఏమీ కనిపించదు. దీనికి కారణం SE పాలసీ.Linux ఇది 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. లేబుల్లు మరియు సందర్భం
SE పాలసీని అమలు చేయడానికి ఇది అత్యంత సాధారణ మార్గం.Linuxప్రతి ఫైల్, ఫోల్డర్, ప్రాసెస్ మరియు పోర్ట్ ఒక SE కాంటెక్స్ట్తో గుర్తించబడుతుంది.Linux:
- ఫైల్లు మరియు ఫోల్డర్ల కోసం, ఫైల్ సిస్టమ్లో లేబుల్లు పొడిగించబడిన లక్షణాల వలె నిల్వ చేయబడతాయి మరియు కింది ఆదేశంతో వీక్షించబడతాయి:
$ 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సెమనేజ్ ఉపయోగించి సందర్భాన్ని మార్చిన తర్వాత, ఫైల్లు మరియు డైరెక్టరీల కోసం రిస్టోకాన్ కమాండ్ డిఫాల్ట్ సందర్భాన్ని లోడ్ చేస్తుంది. మా వెబ్ సర్వర్ ఇప్పుడు ఫోల్డర్ నుండి ఫైల్లను చదవగలదు /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 — ఇవి మనం సృష్టించిన లోకల్ పాలసీల పేర్లు. ఇప్పుడు మనం ఈ సృష్టించిన లోకల్ పాలసీలను ప్రస్తుత SE పాలసీలోకి లోడ్ చేయాలి.Linux. ఇది క్రింది విధంగా చేయవచ్చు:
$ semodule –I http_policy.pp
$ semodule –I smb_policy.ppమా స్థానిక విధానాలు డౌన్లోడ్ చేయబడ్డాయి మరియు మేము ఇకపై audit.logలో ఏ avc లేదా denailని స్వీకరించకూడదు.
SEని అర్థం చేసుకోవడంలో మీకు సహాయపడటానికి ఇది నా ప్రయత్నం.Linuxఈ వ్యాసం చదివిన తర్వాత మీరు SE తో సుఖంగా ఉంటారని నేను ఆశిస్తున్నాను.Linux మరింత సౌకర్యవంతంగా.
మూలం: www.habr.com
