పొందుపరిచిన, మొబైల్ పరికరాలు మరియు సర్వర్లలో Linux OS యొక్క అద్భుతమైన విజయానికి గల కారణాలలో ఒకటి కెర్నల్, సంబంధిత సేవలు మరియు అప్లికేషన్ల యొక్క అధిక స్థాయి భద్రత. కాని ఒకవేళ
Linux సెక్యూరిటీ మాడ్యూల్స్ మరియు SELinux పై నేపథ్యం
సెక్యూరిటీ ఎన్హాన్స్డ్ లైనక్స్ అనేది లైనక్స్ సిస్టమ్లను సంభావ్య బెదిరింపుల నుండి రక్షించడానికి మరియు సాంప్రదాయ యునిక్స్ భద్రతా వ్యవస్థ అయిన విచక్షణా ప్రాప్యత నియంత్రణ (డిఎసి) లోపాలను సరిచేయడానికి తప్పనిసరి మరియు పాత్ర-ఆధారిత యాక్సెస్ మోడల్ల ఆధారంగా నియమాలు మరియు యాక్సెస్ మెకానిజమ్ల సమితి. ప్రాజెక్ట్ US నేషనల్ సెక్యూరిటీ ఏజెన్సీ యొక్క ప్రేగులలో ఉద్భవించింది మరియు ప్రధానంగా కాంట్రాక్టర్లు సెక్యూర్ కంప్యూటింగ్ కార్పొరేషన్ మరియు MITER, అలాగే అనేక పరిశోధనా ప్రయోగశాలల ద్వారా నేరుగా అభివృద్ధి చేయబడింది.
Linux సెక్యూరిటీ మాడ్యూల్స్
లైనస్ టోర్వాల్డ్స్ కొత్త NSA డెవలప్మెంట్ల గురించి అనేక వ్యాఖ్యలు చేసాడు, తద్వారా వాటిని మెయిన్లైన్ లైనక్స్ కెర్నల్లో చేర్చవచ్చు. వస్తువులతో కార్యకలాపాలను నియంత్రించడానికి ఇంటర్సెప్టర్ల సమితి మరియు సంబంధిత లక్షణాలను నిల్వ చేయడానికి కెర్నల్ డేటా స్ట్రక్చర్లలోని నిర్దిష్ట రక్షణ క్షేత్రాల సెట్తో అతను సాధారణ వాతావరణాన్ని వివరించాడు. ఈ పర్యావరణాన్ని లోడ్ చేయగల కెర్నల్ మాడ్యూల్స్ ద్వారా ఏదైనా కావలసిన భద్రతా నమూనాను అమలు చేయడానికి ఉపయోగించవచ్చు. LSM పూర్తిగా Linux కెర్నల్ v2.6లోకి 2003లో ప్రవేశించింది.
LSM ఫ్రేమ్వర్క్లో డేటా స్ట్రక్చర్లలో గార్డు ఫీల్డ్లు ఉంటాయి మరియు కెర్నల్ కోడ్లోని కీలకమైన పాయింట్ల వద్ద ఇంటర్సెప్షన్ ఫంక్షన్లకు కాల్లు వాటిని మానిప్యులేట్ చేయడానికి మరియు యాక్సెస్ కంట్రోల్ చేయడానికి. ఇది భద్రతా మాడ్యూళ్లను నమోదు చేయడానికి కార్యాచరణను కూడా జోడిస్తుంది. /sys/kernel/security/lsm ఇంటర్ఫేస్ సిస్టమ్లోని క్రియాశీల మాడ్యూళ్ల జాబితాను కలిగి ఉంది. LSM హుక్స్ CONFIG_LSMలో పేర్కొన్న క్రమంలో పిలువబడే జాబితాలలో నిల్వ చేయబడతాయి. హుక్స్పై వివరణాత్మక డాక్యుమెంటేషన్ హెడర్ ఫైల్లో చేర్చబడింది/linux/lsm_hooks.h.
LSM సబ్సిస్టమ్ స్థిరమైన Linux కెర్నల్ v2.6 యొక్క అదే వెర్షన్తో SELinux యొక్క పూర్తి ఏకీకరణను పూర్తి చేయడం సాధ్యం చేసింది. దాదాపు వెంటనే, SELinux సురక్షితమైన Linux పర్యావరణానికి వాస్తవ ప్రమాణంగా మారింది మరియు అత్యంత ప్రజాదరణ పొందిన పంపిణీలలో చేర్చబడింది: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.
SELinux పదకోశం
- గుర్తింపు — SELinux వినియోగదారు సాధారణ Unix/Linux వినియోగదారు ఐడి వలె కాదు; వారు ఒకే సిస్టమ్లో సహజీవనం చేయగలరు, కానీ సారాంశంలో పూర్తిగా భిన్నంగా ఉంటారు. ప్రతి ప్రామాణిక Linux ఖాతా SELinuxలో ఒకటి లేదా అంతకంటే ఎక్కువ వాటికి అనుగుణంగా ఉంటుంది. SELinux గుర్తింపు అనేది మొత్తం భద్రతా సందర్భంలో భాగం, ఇది మీరు ఏ డొమైన్లలో చేరవచ్చు మరియు చేరకూడదని నిర్ణయిస్తుంది.
- డొమైన్లు - SELinuxలో, డొమైన్ అనేది ఒక సబ్జెక్ట్ యొక్క అమలు సందర్భం, అనగా ఒక ప్రక్రియ. డొమైన్ నేరుగా ప్రాసెస్ కలిగి ఉన్న యాక్సెస్ని నిర్ణయిస్తుంది. డొమైన్ అనేది ప్రాథమికంగా ఏ ప్రక్రియలు చేయగలదో లేదా ఒక ప్రక్రియ వివిధ రకాలతో ఏమి చేయగలదో జాబితా. డొమైన్ల యొక్క కొన్ని ఉదాహరణలు సిస్టమ్ అడ్మినిస్ట్రేషన్ కోసం sysadm_t, మరియు యూజర్_t ఇది సాధారణ ప్రత్యేక హక్కు లేని వినియోగదారు డొమైన్. init సిస్టమ్ init_t డొమైన్లో నడుస్తుంది మరియు పేరు పెట్టబడిన ప్రక్రియ name_t డొమైన్లో నడుస్తుంది.
- పాత్ర — డొమైన్లు మరియు SELinux వినియోగదారుల మధ్య మధ్యవర్తిగా ఏది పనిచేస్తుంది. వినియోగదారు ఏ డొమైన్లకు చెందినవారో మరియు వారు ఏ రకమైన వస్తువులను యాక్సెస్ చేయగలరో పాత్రలు నిర్ణయిస్తాయి. ఈ యాక్సెస్ కంట్రోల్ మెకానిజం ప్రివిలేజ్ ఎస్కలేషన్ దాడుల ముప్పును నివారిస్తుంది. SELinuxలో ఉపయోగించే రోల్ బేస్డ్ యాక్సెస్ కంట్రోల్ (RBAC) సెక్యూరిటీ మోడల్లో పాత్రలు వ్రాయబడ్డాయి.
- రకాల — ఒక ఆబ్జెక్ట్కు కేటాయించబడిన మరియు దానిని ఎవరు యాక్సెస్ చేయగలరో నిర్ణయించే టైప్ ఎన్ఫోర్స్మెంట్ జాబితా లక్షణం. డొమైన్ డెఫినిషన్ లాగానే, డొమైన్ ప్రాసెస్కి వర్తిస్తుంది మరియు డైరెక్టరీలు, ఫైల్లు, సాకెట్లు మొదలైన ఆబ్జెక్ట్లకు టైప్ వర్తిస్తుంది.
- విషయాలు మరియు వస్తువులు - ప్రక్రియలు సబ్జెక్ట్లు మరియు నిర్దిష్ట సందర్భంలో లేదా సెక్యూరిటీ డొమైన్లో అమలు చేయబడతాయి. ఆపరేటింగ్ సిస్టమ్ వనరులు: ఫైల్లు, డైరెక్టరీలు, సాకెట్లు మొదలైనవి, ఒక నిర్దిష్ట రకాన్ని కేటాయించిన వస్తువులు, ఇతర మాటలలో, గోప్యతా స్థాయి.
- SELinux విధానాలు — సిస్టమ్ను రక్షించడానికి SELinux వివిధ విధానాలను ఉపయోగిస్తుంది. SELinux విధానం వినియోగదారులు పాత్రలకు, పాత్రలకు డొమైన్లకు మరియు డొమైన్ల రకాలకు యాక్సెస్ని నిర్వచిస్తుంది. ముందుగా, ఒక పాత్రను పొందేందుకు వినియోగదారుకు అధికారం ఉంది, తర్వాత డొమైన్లను యాక్సెస్ చేయడానికి పాత్రకు అధికారం ఉంటుంది. చివరగా, డొమైన్ నిర్దిష్ట రకాల వస్తువులకు మాత్రమే యాక్సెస్ను కలిగి ఉంటుంది.
LSM మరియు SELinux ఆర్కిటెక్చర్
పేరు ఉన్నప్పటికీ, LSMలు సాధారణంగా లోడ్ చేయదగిన Linux మాడ్యూల్లు కావు. అయినప్పటికీ, SELinux వలె, ఇది నేరుగా కెర్నల్లో విలీనం చేయబడింది. LSM సోర్స్ కోడ్లో ఏదైనా మార్పుకు కొత్త కెర్నల్ కంపైలేషన్ అవసరం. సంబంధిత ఎంపిక తప్పనిసరిగా కెర్నల్ సెట్టింగులలో ప్రారంభించబడాలి, లేకపోతే బూట్ తర్వాత LSM కోడ్ సక్రియం చేయబడదు. కానీ ఈ సందర్భంలో కూడా, ఇది OS బూట్లోడర్ ఎంపిక ద్వారా ప్రారంభించబడుతుంది.
LSM చెక్ స్టాక్
LSM కోర్ కెర్నల్ ఫంక్షన్లలో హుక్స్తో అమర్చబడి ఉంటుంది, ఇది తనిఖీలకు సంబంధించినది. LSMల యొక్క ప్రధాన లక్షణాలలో ఒకటి అవి పేర్చబడి ఉంటాయి. అందువలన, ప్రామాణిక తనిఖీలు ఇప్పటికీ నిర్వహించబడతాయి మరియు LSM యొక్క ప్రతి పొర అదనపు నియంత్రణలు మరియు నియంత్రణలను మాత్రమే జోడిస్తుంది. అంటే నిషేధాన్ని వెనక్కి తీసుకోలేమని. ఇది చిత్రంలో చూపబడింది; సాధారణ DAC తనిఖీల ఫలితం విఫలమైతే, విషయం LSM హుక్స్కు కూడా చేరదు.
SELinux ఫ్లూక్ రీసెర్చ్ ఆపరేటింగ్ సిస్టమ్ యొక్క ఫ్లాస్క్ సెక్యూరిటీ ఆర్కిటెక్చర్ను స్వీకరించింది, ప్రత్యేకించి కనీస హక్కు సూత్రం. ఈ భావన యొక్క సారాంశం, దాని పేరు సూచించినట్లుగా, వినియోగదారుకు మంజూరు చేయడం లేదా ఉద్దేశించిన చర్యలను నిర్వహించడానికి అవసరమైన హక్కులను మాత్రమే ప్రాసెస్ చేయడం. ఈ సూత్రం బలవంతంగా యాక్సెస్ టైపింగ్ ఉపయోగించి అమలు చేయబడుతుంది, కాబట్టి SELinuxలో యాక్సెస్ నియంత్రణ డొమైన్ => టైప్ మోడల్పై ఆధారపడి ఉంటుంది.
బలవంతంగా యాక్సెస్ టైపింగ్కు ధన్యవాదాలు, Unix/Linux ఆపరేటింగ్ సిస్టమ్లలో ఉపయోగించే సాంప్రదాయ DAC మోడల్ కంటే SELinux చాలా ఎక్కువ యాక్సెస్ నియంత్రణ సామర్థ్యాలను కలిగి ఉంది. ఉదాహరణకు, మీరు ftp సర్వర్ కనెక్ట్ చేసే నెట్వర్క్ పోర్ట్ నంబర్ను పరిమితం చేయవచ్చు, నిర్దిష్ట ఫోల్డర్లో ఫైల్లను వ్రాయడం మరియు మార్చడం అనుమతించవచ్చు, కానీ వాటిని తొలగించడం లేదు.
SELinux యొక్క ప్రధాన భాగాలు:
- పాలసీ ఎన్ఫోర్స్మెంట్ సర్వర్ - యాక్సెస్ నియంత్రణను నిర్వహించడానికి ప్రధాన యంత్రాంగం.
- సిస్టమ్ సెక్యూరిటీ పాలసీ డేటాబేస్.
- LSM ఈవెంట్ ఇంటర్సెప్టర్తో పరస్పర చర్య.
- Selinuxfs - Pseudo-FS, అదే /proc మరియు /sys/fs/selinuxలో మౌంట్ చేయబడింది. రన్టైమ్లో Linux కెర్నల్ ద్వారా డైనమిక్గా పాపులేషన్ చేయబడింది మరియు SELinux స్థితి సమాచారాన్ని కలిగి ఉన్న ఫైల్లను కలిగి ఉంటుంది.
- వెక్టర్ కాష్ని యాక్సెస్ చేయండి - ఉత్పాదకతను పెంచడానికి సహాయక యంత్రాంగం.
SELinux ఎలా పని చేస్తుంది
ఇదంతా ఇలా పనిచేస్తుంది.
- ఒక నిర్దిష్ట విషయం, SELinux నిబంధనలలో, ఎగువ చిత్రంలో చూపిన విధంగా, DAC తనిఖీ తర్వాత ఆబ్జెక్ట్పై అనుమతించబడిన చర్యను చేస్తుంది. ఒక ఆపరేషన్ చేయడానికి ఈ అభ్యర్థన LSM ఈవెంట్ ఇంటర్సెప్టర్కు వెళుతుంది.
- అక్కడ నుండి, అభ్యర్థన, సబ్జెక్ట్ మరియు ఆబ్జెక్ట్ సెక్యూరిటీ కాంటెక్స్ట్తో పాటు, LSMతో పరస్పర చర్య చేయడానికి బాధ్యత వహించే SELinux అబ్స్ట్రాక్షన్ మరియు హుక్ లాజిక్ మాడ్యూల్కు పంపబడుతుంది.
- ఆబ్జెక్ట్కు సబ్జెక్ట్ యాక్సెస్పై నిర్ణయం తీసుకునే అధికారం పాలసీ ఎన్ఫోర్స్మెంట్ సర్వర్ మరియు ఇది SELinux AnHL నుండి డేటాను స్వీకరిస్తుంది.
- యాక్సెస్ లేదా తిరస్కరణ గురించి నిర్ణయాలు తీసుకోవడానికి, పాలసీ ఎన్ఫోర్స్మెంట్ సర్వర్ ఎక్కువగా ఉపయోగించే నియమాల కోసం యాక్సెస్ వెక్టర్ కాష్ (AVC) కాషింగ్ సబ్సిస్టమ్కి మారుతుంది.
- కాష్లో సంబంధిత నియమానికి పరిష్కారం కనుగొనబడకపోతే, అభ్యర్థన భద్రతా విధాన డేటాబేస్కు పంపబడుతుంది.
- డేటాబేస్ మరియు AVC నుండి శోధన ఫలితం పాలసీ ఎన్ఫోర్స్మెంట్ సర్వర్కు తిరిగి ఇవ్వబడుతుంది.
- కనుగొనబడిన విధానం అభ్యర్థించిన చర్యతో సరిపోలితే, ఆపరేషన్ అనుమతించబడుతుంది. లేకపోతే, ఆపరేషన్ నిషేధించబడింది.
SELinux సెట్టింగ్లను నిర్వహించడం
SELinux మూడు మోడ్లలో ఒకదానిలో పనిచేస్తుంది:
- అమలు చేయడం - భద్రతా విధానాలకు ఖచ్చితంగా కట్టుబడి ఉండటం.
- అనుమతి - పరిమితుల ఉల్లంఘన అనుమతించబడుతుంది; సంబంధిత గమనిక జర్నల్లో చేయబడుతుంది.
- డిసేబుల్డ్-సెక్యూరిటీ పాలసీలు అమలులో లేవు.
కింది ఆదేశంతో SELinux ఏ మోడ్లో ఉందో మీరు చూడవచ్చు.
[admin@server ~]$ getenforce
Permissive
రీబూట్ చేయడానికి ముందు మోడ్ను మార్చడం, ఉదాహరణకు, దాన్ని అమలు చేయడానికి సెట్ చేయడం లేదా 1. అనుమతి పరామితి సంఖ్యా కోడ్ 0కి అనుగుణంగా ఉంటుంది.
[admin@server ~]$ setenfoce enforcing
[admin@server ~]$ setenfoce 1 #то же самое
మీరు ఫైల్ను సవరించడం ద్వారా మోడ్ను కూడా మార్చవచ్చు:
[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=లక్ష్యం
setenfoceతో తేడా ఏమిటంటే, ఆపరేటింగ్ సిస్టమ్ బూట్ అయినప్పుడు, SELinux మోడ్ కాన్ఫిగరేషన్ ఫైల్లోని SELINUX పరామితి విలువకు అనుగుణంగా సెట్ చేయబడుతుంది. అదనంగా, <=> డిసేబుల్ని అమలు చేయడంలో మార్పులు /etc/selinux/config ఫైల్ను సవరించడం ద్వారా మరియు రీబూట్ చేసిన తర్వాత మాత్రమే ప్రభావం చూపుతాయి.
సంక్షిప్త స్థితి నివేదికను వీక్షించండి:
[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
SELinux లక్షణాలను వీక్షించడానికి, కొన్ని ప్రామాణిక యుటిలిటీలు -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
ls -l యొక్క సాధారణ అవుట్పుట్తో పోలిస్తే, కింది ఫార్మాట్లో అనేక అదనపు ఫీల్డ్లు ఉన్నాయి:
<user>:<role>:<type>:<level>
చివరి ఫీల్డ్ భద్రతా వర్గీకరణ వంటి వాటిని సూచిస్తుంది మరియు రెండు అంశాల కలయికను కలిగి ఉంటుంది:
- s0 - ప్రాముఖ్యత, తక్కువ స్థాయి-అధిక స్థాయి విరామంగా కూడా వ్రాయబడింది
- c0, c1... c1023 - వర్గం.
యాక్సెస్ కాన్ఫిగరేషన్ని మారుస్తోంది
SELinux మాడ్యూల్లను లోడ్ చేయడానికి, జోడించడానికి మరియు తీసివేయడానికి సెమోడ్యూల్ని ఉపయోగించండి.
[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 - удалить модуль
మొదటి జట్టు semanage లాగిన్ SELinux వినియోగదారుని ఆపరేటింగ్ సిస్టమ్ వినియోగదారుకు కనెక్ట్ చేస్తుంది, రెండవది జాబితాను ప్రదర్శిస్తుంది. చివరగా, -r స్విచ్తో ఉన్న చివరి ఆదేశం SELinux వినియోగదారుల మ్యాపింగ్ను OS ఖాతాలకు తొలగిస్తుంది. MLS/MCS రేంజ్ విలువల కోసం వాక్యనిర్మాణం యొక్క వివరణ మునుపటి విభాగంలో ఉంది.
[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
జట్టు సెమనేజ్ వినియోగదారు 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
కమాండ్ పారామితులు:
- -ఒక యాడ్ కస్టమ్ రోల్ మ్యాపింగ్ ఎంట్రీ;
- సరిపోలే వినియోగదారులు మరియు పాత్రల జాబితా;
- -d యూజర్ రోల్ మ్యాపింగ్ ఎంట్రీని తొలగించండి;
- -R వినియోగదారుకు జోడించబడిన పాత్రల జాబితా;
ఫైల్లు, పోర్ట్లు మరియు బూలియన్ విలువలు
ప్రతి SELinux మాడ్యూల్ ఫైల్ ట్యాగింగ్ నియమాల సమితిని అందిస్తుంది, అయితే అవసరమైతే మీరు మీ స్వంత నియమాలను కూడా జోడించవచ్చు. ఉదాహరణకు, /srv/www ఫోల్డర్కి వెబ్ సర్వర్ యాక్సెస్ హక్కులను కలిగి ఉండాలని మేము కోరుకుంటున్నాము.
[admin@server ~]$ semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?
[admin@server ~]$ restorecon -R /srv/www/
మొదటి కమాండ్ కొత్త మార్కింగ్ నియమాలను నమోదు చేస్తుంది మరియు రెండవ రీసెట్లు లేదా ప్రస్తుత నిబంధనలకు అనుగుణంగా ఫైల్ రకాలను సెట్ చేస్తుంది.
అదేవిధంగా, TCP/UDP పోర్ట్లు తగిన సేవలు మాత్రమే వినగలిగే విధంగా గుర్తించబడతాయి. ఉదాహరణకు, వెబ్ సర్వర్ పోర్ట్ 8080లో వినడానికి, మీరు ఆదేశాన్ని అమలు చేయాలి.
[admin@server ~]$ semanage port -m -t http_port_t -p tcp 8080
గణనీయమైన సంఖ్యలో SELinux మాడ్యూల్స్ బూలియన్ విలువలను తీసుకోగల పారామితులను కలిగి ఉన్నాయి. అటువంటి పారామితుల యొక్క మొత్తం జాబితా getsebool -aని ఉపయోగించి చూడవచ్చు. సెట్బూల్ని ఉపయోగించి మీరు బూలియన్ విలువలను మార్చవచ్చు.
[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
వర్క్షాప్, Pgadmin-వెబ్ ఇంటర్ఫేస్కు యాక్సెస్ పొందండి
ఒక ఆచరణాత్మక ఉదాహరణను చూద్దాం: PostgreSQL డేటాబేస్ని నిర్వహించడానికి మేము RHEL 7.6లో pgadmin4-webని ఇన్స్టాల్ చేసాము. మేము కొంచెం నడిచాము
మేము సాధారణ అనుమానితులతో ప్రారంభిస్తాము, /var/log/httpd/error_logని తనిఖీ చేస్తాము. అక్కడ కొన్ని ఆసక్తికరమైన ఎంట్రీలు ఉన్నాయి.
[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.
ఈ సమయంలో, చాలా మంది Linux నిర్వాహకులు setencorce 0ని అమలు చేయడానికి గట్టిగా శోదించబడతారు మరియు అది అంతం అవుతుంది. స్పష్టముగా, నేను మొదటిసారి చేసాను. ఇది వాస్తవానికి కూడా ఒక మార్గం, కానీ ఉత్తమమైనది కాదు.
గజిబిజిగా డిజైన్లు ఉన్నప్పటికీ, SELinux వినియోగదారు-స్నేహపూర్వకంగా ఉంటుంది. సెట్ట్రబుల్షూట్ ప్యాకేజీని ఇన్స్టాల్ చేసి, సిస్టమ్ లాగ్ను వీక్షించండి.
[admin@server ~]$ yum install setroubleshoot
[admin@server ~]$ journalctl -b -0
[admin@server ~]$ service restart auditd
OSలో systemd ఉన్నప్పటికీ, ఆడిట్ సేవ తప్పనిసరిగా ఈ విధంగా పునఃప్రారంభించబడాలని మరియు systemctlని ఉపయోగించకూడదని దయచేసి గమనించండి. సిస్టమ్ లాగ్లో సూచించబడుతుంది నిరోధించే వాస్తవం మాత్రమే కాదు, కారణం కూడా నిషేధాన్ని అధిగమించడానికి మార్గం.
మేము ఈ ఆదేశాలను అమలు చేస్తాము:
[admin@server ~]$ setsebool -P httpd_can_network_connect 1
[admin@server ~]$ setsebool -P httpd_can_network_connect_db 1
మేము pgadmin4-వెబ్ వెబ్ పేజీకి ప్రాప్యతను తనిఖీ చేస్తాము, ప్రతిదీ పని చేస్తుంది.
మూలం: www.habr.com