LFCA: లైనక్స్ సిస్టమ్ భద్రతను ఎలా మెరుగుపరచాలి - పార్ట్ 20
మనందరికీ తెలిసినట్లుగా, రూట్ యూజర్ రాజు మరియు లైనక్స్ సిస్టమ్uపై అపరిమిత అధికారాలను పొందుతాడు. అయితే రూట్ కాని వినియోగదారులు ప్రాథమిక పనులకు పరిమితం. అదనంగా, సుడో వినియోగదారులకు నిర్దిష్ట ఎలివేటెడ్ పనులను నిర్వహించడానికి రూట్ యూజర్ చేత సరిపోయేదిగా భావించే కొంత స్థాయి రూట్ అధికారాలను మాత్రమే ఇస్తారు.
సాధారణ వినియోగదారులు వనరులకు అనియంత్రిత ప్రాప్యతను కలిగి ఉన్నప్పుడు లేదా అనుకోకుండా రూట్ చేయడానికి పెరిగినప్పుడు సమస్యలు తలెత్తుతాయి. ఇది తీవ్రమైన భద్రతా ప్రమాదం, ఇది ఉల్లంఘనలు, అవాంఛనీయ మార్పులు మరియు చెత్త సందర్భంలో, సిస్టమ్ క్రాష్ కావచ్చు. ఫైళ్ళకు తక్కువ సురక్షితమైన ఫైల్ అనుమతులు ఉన్నప్పుడు మరొక సంభావ్య ప్రమాదం. ఉదాహరణకు, గ్లోబల్ యూజర్uల కోసం వ్రాత అనుమతి ఉన్న బూట్ ఫైల్uలు సులభంగా సవరించబడతాయి లేదా పాడైపోతాయి, ఫలితంగా విరిగిన వ్యవస్థ వస్తుంది.
[మీరు కూడా ఇష్టపడవచ్చు: డేటా మరియు లైనక్స్uను భద్రపరచడానికి ఉపయోగకరమైన చిట్కాలు]
మేము భౌతిక, నెట్uవర్క్ మరియు డేటా భద్రతను అమలు చేయగలిగినప్పటికీ, హానికరమైన వినియోగదారు భద్రతా చర్యలను తప్పించుకోవచ్చు మరియు అలాంటి భద్రతా లొసుగులను ఉపయోగించుకోవచ్చు. ఈ కారణంగానే ఫైల్ సిస్టమ్ భద్రతను తీవ్రంగా పరిగణించాలి. ఫైళ్ళను ప్రాప్యత చేయడానికి భద్రతా చర్యలను అధిగమించడంలో భారీగా ఎత్తడం చేయనవసరం లేని హానికరమైన ఉద్యోగుల నుండి దాడులు లేదా అంతర్గత బెదిరింపుల నేపథ్యంలో ఇది అదనపు రక్షణ పొరను అందిస్తుంది.
సిస్టమ్ భద్రతలో, మేము ఈ క్రింది ముఖ్య విషయాలపై దృష్టి పెడతాము:
- ప్రాప్యత హక్కులు - వినియోగదారు మరియు సమూహ అనుమతులు.
- PAM మాడ్యూల్uతో పాస్uవర్డ్ విధానాలను అమలు చేయండి.
ప్రాప్యత హక్కులు - వినియోగదారు మరియు సమూహ విభజన
Linux లోని ప్రతిదీ ఒక ఫైల్uగా పరిగణించబడుతుందని మీరు బహుశా విన్నారు. అది కాకపోతే, ఇది ఒక ప్రక్రియ. లైనక్స్ సిస్టమ్uలోని ప్రతి ఫైల్ యూజర్ మరియు గ్రూప్ యూజర్ సొంతం. ఇది 3 వినియోగదారు వర్గాలకు ఫైల్ అనుమతులను కలిగి ఉంటుంది: వినియోగదారు (యు), గ్రూప్ (జి) మరియు ఇతరులు (ఓ). ప్రతి వినియోగదారు వర్గానికి చదవడానికి, వ్రాయడానికి మరియు అమలు చేయడానికి (rwx) అనుమతులు సూచించబడతాయి.
rwx rwx rwx User Group Others
ముందు చూసినట్లుగా, ls ఆదేశంలో చూపిన విధంగా.
$ ls -l
రీక్యాప్ చేయడానికి, అనుమతులు సాధారణంగా తొమ్మిది అక్షరాలతో సూచించబడతాయి. మొదటి మూడు అక్షరాలు ఫైల్uను కలిగి ఉన్న వాస్తవ వినియోగదారు యొక్క ప్రాప్యత హక్కులను సూచిస్తాయి. రెండవ అక్షరాల సెట్ ఫైల్ యొక్క సమూహ యజమాని యొక్క అనుమతులను సూచిస్తుంది. చివరగా, ఇతర లేదా ప్రపంచ వినియోగదారుల కోసం చివరి సెట్. ఈ అక్షరాలు నిరంతరం చదవడం, వ్రాయడం, అమలు చేయడం (rwx) క్రమంలో ఉంటాయి.
అనుమతుల తరువాత, మాకు యూజర్ మరియు గ్రూప్ యాజమాన్యాలు ఉన్నాయి, తరువాత ఫైల్ లేదా డైరెక్టరీ పరిమాణం, మార్పు చేసిన తేదీ మరియు చివరగా ఫైల్ పేరు.
ఫైల్/డైరెక్టరీ అనుమతులు మరియు యాజమాన్యాలను మార్చడం
ఫైల్స్ మరియు డైరెక్టరీల యొక్క వినియోగదారు అనుమతులను తగినట్లుగా మార్చవచ్చు. కనీస హక్కు భద్రతా సూత్రాన్ని ఉపయోగించడం నియమం. సరళంగా చెప్పాలంటే, పనిని పూర్తి చేయడానికి వినియోగదారులకు కనీస ప్రాప్యత హక్కులు లేదా అనుమతులు లభిస్తాయని నిర్ధారించుకోండి.
కనీస అధికారాల సూత్రం వినియోగదారులను కొన్ని పాత్రలకు మాత్రమే పరిమితం చేస్తుంది మరియు అలా చేయడం ద్వారా, తక్కువ-లివర్ యూజర్ ఖాతాను పెంచడం ద్వారా దాడి చేసేవారు క్లిష్టమైన డేటాను యాక్సెస్ చేసే మరియు సవరించే ప్రమాదాన్ని తగ్గిస్తుంది. ఇది దాడి చేసే ఉపరితలాన్ని కూడా తగ్గిస్తుంది మరియు దాడి చేసేవాడు మీ సిస్టమ్uను నియంత్రించే సందర్భంలో మాల్వేర్ ప్రచారాన్ని పరిమితం చేస్తుంది.
అందువల్ల, ఒక వినియోగదారు ఫైల్ లేదా డైరెక్టరీ యొక్క విషయాలను మాత్రమే చూడవలసి వస్తే, వారికి అమలు లేదా అనుమతులను వ్రాయకూడదు. చాలా ప్రాథమిక స్థాయిలో, పనులను నెరవేర్చడానికి వినియోగదారుకు అవసరమైన కనీస అనుమతులు మరియు యాజమాన్యాలను మాత్రమే ఇవ్వండి. ప్రాథమిక Linux ఆదేశాల అంశంలో chmod మరియు chown ఆదేశాలను ఉపయోగించి ఫైల్స్/డైరెక్టరీలలో వినియోగదారు అనుమతులు మరియు యాజమాన్యాలను ఎలా సవరించాలో మేము పరిష్కరించాము.
సిస్టమ్ అడ్మినిస్ట్రేటర్ అనుమతులను సులభంగా నిర్వహించడానికి, ప్రత్యేక అనుమతులు లేదా యాక్సెస్ హక్కులు మొత్తం డైరెక్టరీలకు ఇవ్వబడతాయి. ఫైల్ లేదా డైరెక్టరీ యొక్క తొలగింపు మరియు మార్పులను పరిమితం చేయడానికి వర్తించే ప్రత్యేక అనుమతులలో ఒకటి అంటుకునే బిట్.
సిస్టమ్ లేదా నెట్uవర్క్uలోని వినియోగదారులందరికీ భాగస్వామ్య డైరెక్టరీని ప్రాప్యత చేయగల దృష్టాంతంలో, కొంతమంది వినియోగదారులు డైరెక్టరీలోని ఫైల్uలను తొలగించవచ్చు లేదా సవరించవచ్చు. మీరు డైరెక్టరీ విషయాల యొక్క సమగ్రతను కొనసాగించాలనుకుంటే ఇది అవాంఛనీయమైనది. మరియు ఇక్కడే స్టికీ బిట్ వస్తుంది.
స్టిక్కీ బిట్ అనేది ఫైల్ లేదా మొత్తం డైరెక్టరీలో సెట్ చేయబడిన ప్రత్యేక ఫైల్ అనుమతి. ఇది ఆ ఫైల్/డైరెక్టరీ యొక్క యజమానికి మాత్రమే ఫైల్ లేదా డైరెక్టరీ విషయాలను తొలగించడానికి లేదా మార్పులు చేయడానికి అనుమతి ఇస్తుంది. ఇతర వినియోగదారుడు ఫైల్/డైరెక్టరీని తొలగించలేరు లేదా సవరించలేరు. ఇది t
యొక్క సింబాలిక్ విలువను మరియు 1000 సంఖ్యా విలువను కలిగి ఉంది.
డైరెక్టరీలో స్టిక్కీ బిట్uను ఆన్ చేయడానికి, chmod ఆదేశాన్ని ఈ క్రింది విధంగా ఉపయోగించండి:
$ chmod +t directory_name
దిగువ ఉదాహరణలో, మేము పరీక్ష అని పిలువబడే డైరెక్టరీకి స్టికీ బిట్uను వర్తింపజేసాము. డైరెక్టరీ విషయంలో, అన్ని విషయాలు అంటుకునే బిట్ అనుమతులను వారసత్వంగా పొందుతాయి. మీరు ls -ld ఆదేశాన్ని ఉపయోగించి స్టిక్కీ బిట్ అనుమతులను ధృవీకరించవచ్చు. ఫైల్ అనుమతుల చివర t
గుర్తును గమనించండి.
$ ls -ld test
మరొక వినియోగదారు డైరెక్టరీని తొలగించడానికి లేదా డైరెక్టరీ లోపల ఫైల్ను సవరించడానికి ప్రయత్నిస్తే, వారికి అనుమతి నిరాకరించబడిన లోపంతో స్వాగతం పలికారు.
మరియు అది స్టిక్ బిట్ ఫైల్ అనుమతి యొక్క సారాంశం.
SUID (సెట్ యూజర్ ఐడి) మరొక ప్రత్యేక ఫైల్ అనుమతి, ఇది మరొక సాధారణ వినియోగదారుని ఫైల్ యజమాని యొక్క ఫైల్ అనుమతులతో ఫైల్ను అమలు చేయడానికి అనుమతిస్తుంది. ఇది సాధారణంగా x
కు బదులుగా యూజర్ యొక్క ఫైల్ అనుమతుల వద్ద సింబాలిక్ విలువ s
ద్వారా సూచించబడుతుంది, ఇది అమలు అనుమతులను సూచిస్తుంది. SUID సంఖ్యా విలువ 4000.
SGID, (గ్రూప్ ID ని సెట్ చేయండి) ఒక సాధారణ వినియోగదారుని ఫైల్ గ్రూప్ యజమాని యొక్క సమూహ అనుమతులను వారసత్వంగా పొందటానికి అనుమతిస్తుంది. అనుమతులను అమలు చేయడానికి x
కాకుండా, ఫైల్ అనుమతుల సమూహ భాగంలో మీరు s
ను చూస్తారు. SGID సంఖ్యా విలువ 2000.
అవి ఎంత సౌకర్యవంతంగా మారినప్పటికీ, SUID మరియు SGID అనుమతులు భద్రతా ప్రమాదాలతో ముడిపడి ఉన్నాయి మరియు అన్ని ఖర్చులు లేకుండా ఉండాలి. ఎందుకంటే వారు సాధారణ వినియోగదారులకు ప్రత్యేక అధికారాలను ఇస్తారు. ఒక సాధారణ వినియోగదారుగా నటిస్తున్న చొరబాటుదారుడు రూట్ యూజర్ యాజమాన్యంలోని ఎక్జిక్యూటబుల్ ఫైల్uపై SUID బిట్ సెట్uతో వస్తే, వారు ఆ లొసుగును ఉపయోగించుకోవచ్చు మరియు సిస్టమ్uను దోపిడీ చేయవచ్చు.
లైనక్స్uలో SUID బిట్ సెట్uతో ఉన్న అన్ని ఫైల్uలను కనుగొనడానికి ఫైండ్ కమాండ్uను రూట్ యూజర్uగా రన్ చేయండి.
$ find / -perm -4000 type -f
డైరెక్టరీలు అమలు కోసం:
$ find / -perm -4000 type -d
SGID బిట్ సెట్ రన్uతో అన్ని ఫైల్uలను కనుగొనడానికి:
$ find / -perm -2000 type -f
డైరెక్టరీలు అమలు చేయడానికి:
$ find / -perm -2000 type -d
ఫైల్uలోని SUID బిట్uను తొలగించడానికి, చూపిన విధంగా chmod ఆదేశాన్ని అమలు చేయండి:
$ chmod u-s /path/to/file
ఫైల్uలోని SGID బిట్uను తొలగించడానికి ఆదేశాన్ని అమలు చేయండి:
$ chmod g-s filename /path/to/file
వినియోగదారులు బలహీనమైన పాస్uవర్డ్uలను సెట్ చేయడం అసాధారణం కాదు. లాగిన్ సమయంలో వాటిని మరచిపోకుండా ఉండటానికి మంచి సంఖ్య చిన్న, సాదా మరియు సులభంగా ess హించదగిన పాస్uవర్డ్uలను సెట్ చేస్తుంది. సౌకర్యవంతంగా ఉన్నప్పటికీ, బ్రూట్-ఫోర్స్ అటాక్ స్క్రిప్ట్uలను ఉపయోగించి బలహీనమైన పాస్uవర్డ్uలను సులభంగా ఉల్లంఘించవచ్చు.
PAM మాడ్యూల్ (ప్లగ్ చేయదగిన ప్రామాణీకరణ మాడ్యూల్) అనేది మాడ్యూల్, ఇది సిస్టమ్ నిర్వాహకులను లైనక్స్ సిస్టమ్స్uలో పాస్uవర్డ్ విధానాలను అమలు చేయడానికి అనుమతిస్తుంది. దీన్ని నెరవేర్చడానికి, మీకు libpam_pwquality లైబ్రరీ అందించిన pam_pwquality మాడ్యూల్ అవసరం. Pam_pwquality మాడ్యూల్ నిబంధనల సమితి & సిస్టమ్ నిఘంటువుకు వ్యతిరేకంగా పాస్uవర్డ్ యొక్క బలాన్ని తనిఖీ చేస్తుంది మరియు బలహీనమైన పాస్uవర్డ్ ఎంపికలను సూచిస్తుంది.
ఉబుంటు 18.04 మరియు తరువాత సంస్కరణల్లో pam_pwquality మాడ్యూల్uను ఇన్uస్టాల్ చేయడానికి, అమలు చేయండి:
$ sudo apt install libpam_pwquality
RHEL/CentOS 8 కోసం, ఆదేశాన్ని అమలు చేయండి:
$ sudo dnf install libpwquality
కాన్ఫిగరేషన్ ఫైల్ కింది ప్రదేశంలో కనుగొనబడింది:
- డెబియన్-సిస్టమ్స్uలో - /etc/pam.d/common-password
- రెడ్uహాట్ సిస్టమ్స్uలో - /etc/pam.d/system-auth
మేము PAM కాన్ఫిగరేషన్ ఫైల్uను సవరించడానికి ముందు, మొదట పాస్uవర్డ్ వృద్ధాప్య నియంత్రణల గురించి అంతర్దృష్టులను సేకరించడం గురించి పరిశీలిద్దాం.
వీటిని /etc/login.defs ఫైల్uలో చూడవచ్చు.
ఫైల్ కింది కీ పాస్వర్డ్ నియంత్రణలను కలిగి ఉంది:
- PASS_MAX_DAYS: పాస్uవర్డ్uను ఉపయోగించగల గరిష్ట రోజులు.
- PASS_MIN_DAYS: కనిష్ట సంఖ్య. పాస్వర్డ్ మార్పుల మధ్య అనుమతించబడిన రోజులు.
- PASS_WARN_AGE: పాస్uవర్డ్ గడువు ముగిసే ముందు ఇచ్చిన రోజుల హెచ్చరిక.
డిఫాల్ట్ విలువలు క్రింద సూచించబడ్డాయి.
PASS_MAX_DAYS లక్షణం వినియోగదారు వారి పాస్uవర్డ్uను ఉపయోగించగల రోజుల సంఖ్యను పరిమితం చేస్తుంది. ఈ విలువ సాధించినప్పుడు లేదా పాస్uవర్డ్ గడువు ముగిసినప్పుడు, సిస్టమ్uకు లాగిన్ అవ్వడానికి వినియోగదారు వారి పాస్uవర్డ్uను మార్చవలసి వస్తుంది. అప్రమేయంగా, ఈ విలువ 99999 కు సెట్ చేయబడింది, ఇది 273 సంవత్సరాలకు అనువదిస్తుంది. వినియోగదారుడు వారి జీవితాంతం వారి పాస్uవర్డ్uను ఉపయోగించడం కొనసాగించగలగటం వలన భద్రతకు సంబంధించినంతవరకు ఇది పెద్దగా అర్ధం కాదు.
మీరు దీన్ని అర్ధవంతమైన విలువకు సెట్ చేయవచ్చు, చూపిన విధంగా 30 రోజులు చెప్పండి.
PASS_MAX_DAYS 30
30 రోజుల గడిచిన తరువాత, వినియోగదారు వారి పాస్uవర్డ్uను వేరే వాటికి మార్చవలసి వస్తుంది.
PASS_MIN_DAYS లక్షణం వినియోగదారులు తమ పాస్uవర్డ్uను మార్చడానికి ముందు ఉపయోగించగల కనీస వ్యవధిని వివరిస్తుంది. దీని అర్థం ఏమిటి? ఉదాహరణకు, ఈ విలువ 15 రోజులకు సెట్ చేయబడితే, వినియోగదారు 15 రోజుల గడిచే ముందు వారి పాస్uవర్డ్uను మళ్లీ మార్చలేరు.
PASS_MAX_DAYS 15
PASS_WARN_AGE లక్షణం వినియోగదారుడు వారి పాస్uవర్డ్ గడువు ముందే గడువు గురించి హెచ్చరికను ఎన్ని రోజులు పొందుతుందో తెలుపుతుంది. ఉదాహరణకు, మీరు చూపిన విధంగా దీన్ని 7 రోజులకు సెట్ చేయవచ్చు.
PASS_MAX_DAYS 7
గమనిక: ఈ పాస్uవర్డ్ నియంత్రణలు ముందుగా ఉన్న ఖాతాలతో పనిచేయవు. నిబంధనలను నిర్వచించిన తర్వాత సృష్టించబడిన క్రొత్త ఖాతాలకు మాత్రమే అవి వర్తించబడతాయి.
మీరు /etc/pam.d/common-password ఫైల్uను సవరించడానికి ముందు, బ్యాకప్ కాపీని సృష్టించండి. ఈ ఉదాహరణలో, మేము కామన్-పాస్వర్డ్.బాక్ బ్యాకప్ కాపీ ఫైల్ను సృష్టించాము.
$ sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.bak
అప్పుడు ఫైల్ తెరవండి.
$ sudo vim /etc/pam.d/common-password
క్రింద చూపిన పంక్తిని గుర్తించండి.
password requisite pam_pwquality.so retry=3
లోపం పొందడానికి ముందు మీరు సరైన పాస్uవర్డ్uను నమోదు చేయాల్సిన గరిష్ట సంఖ్యను మళ్లీ ప్రయత్నిస్తుంది. అప్రమేయంగా, ఇది 3 కు సెట్ చేయబడింది. ఇది కేవలం ఒక ఎంపిక మరియు మేము అనేక ఎంపికలను చేర్చబోతున్నాము.
కింది లక్షణాలను ఈ పంక్తికి జోడించండి:
minlen=10 difok=3 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 reject_username
ఈ లక్షణాలను మాంసం చేద్దాం.
- minlen = 10: పాస్uవర్డ్ కోసం కనీస ఆమోదయోగ్యమైన పరిమాణాన్ని సెట్ చేస్తుంది. ఈ సందర్భంలో, 10 అక్షరాలు.
- difok = 3: ఇది మునుపటి పాస్uవర్డ్uలో ఉన్న గరిష్ట అక్షరాల సంఖ్య.
- lcredit = -1: పాస్uవర్డ్uలో ఉండవలసిన చిన్న అక్షరాల కనీస సంఖ్య ఇది. <
- ucredit = -1: పాస్uవర్డ్uలో ఉండాల్సిన చిన్న అక్షరాల గరిష్ట సంఖ్య.
- dcredit = -1: పాస్uవర్డ్uలో నిర్వచించాల్సిన సంఖ్యా అక్షరాల కనీస సంఖ్య.
- ocredit = -1: కనీస ప్రత్యేక అక్షరాల సంఖ్య ఉదా @, #, & పాస్uవర్డ్uలో నిర్వచించబడాలి.
- తిరస్కరించు_ వినియోగదారు పేరు: పాస్uవర్డ్ వినియోగదారు పేరు నిటారుగా లేదా రివర్స్ ఆకృతిలో ఉంటే ఈ ఐచ్చికం పాస్uవర్డ్uను తిరస్కరించడాన్ని ప్రేరేపిస్తుంది.
మీరు పాస్uవర్డ్ విధానాలకు తగ్గట్టుగా క్రొత్త వినియోగదారుని సృష్టించడానికి ప్రయత్నిస్తే, మీరు చూపిన విధంగా లోపాలకు లోనవుతారు.
ఇది సాధారణంగా సిస్టమ్ భద్రత మరియు భద్రతా ఫండమెంటల్స్uపై అంశాన్ని ముగించింది. మొత్తం అధ్యాయంలో, హ్యాకర్లు లేదా అసంతృప్త ఉద్యోగులు వంటి హానికరమైన వినియోగదారుల నుండి మీ లైనక్స్ వ్యవస్థను రక్షించడానికి మీరు అమలు చేయగల ప్రాథమిక భద్రతా చర్యలపై మేము వెలుగు చూశాము.