Жүйелік оқиғаларды тексеру
Операциялық жүйенің қауіпсіздігі мен сенімділігін қамтамасыз ету үшін оның жұмысын мұқият қадағалап отыру қажет. Бұған мониторинг, логтарды талдау және, әрине, жүйелік оқиғалардың аудиті кіреді. Аудиттің өзі ықтимал инциденттерден қорғау құралы болып табылмаса да, ол қауіпсіздік бұзушылықтарын анықтауда және оларды кейін жоюда маңызды рөл атқарады.
Бұл мақсатта жүйелік операцияларды бақылау мен талдауды қамтамасыз ететін auditd деп аталатын арнайы утилита қолданылады. Аудит жүйесі жүйелік шақыруларды (жүйе ядросындағы іргелі операцияларды) өңдейтін функцияларға триггерлер орнатады. Содан кейін бұл триггерлер әкімші белгілеген ережелерге сәйкес іске қосылады. Осы әрекеттердің барлығы туралы ақпарат журналға жазылады, оны кейін талдауға болады.
auditd көмегімен түрлі оқиғаларды бақылауға болады: жүйенің іске қосылуы мен жұмысын аяқтауы, қолданбалардың орындалуы, файлдарға қатынау және олардың қатынау құқықтарының өзгеруі, пайдаланушылар мен топтар туралы деректердің өзгеруі, желілік қосылымдардың құрылуы, сондай-ақ желі баптауларының өзгеруі және т.б.
Орнату
Көп жағдайда CentOS жүйелерінде audit пакеті әдепкі бойынша орнатылған болады.
Debian / Ubuntu үшін орнатуға келесі команданы орындауға болады:
sudo apt-get install auditd
Орнатылған пакетке бірнеше утилита кіреді:
- auditctl — аудит жүйесін басқару, ағымдағы күй туралы ақпарат алу, ережелерді қосу және жою;
- autrace — strace утилитасы сияқты процестер тудыратын оқиғалардың аудиті;
- ausearch — журналдардан оқиғаларды іздеу;
- aureport — аудит жұмысы туралы есептер жасау.
auditd демонының негізгі конфигурация параметрлері (логтар форматы, жаңарту жиілігі, ең үлкен өлшем және т.б.) /etc/audit/auditd.conf конфигурациялық файлында бапталады. Әдетте сәтті аудит үшін стандартты баптаулар жеткілікті, бірақ қажет болса, өз қалауыңызша қосымша өзгерістер енгізе аласыз. Параметрлердің толық сипаттамаларын, мысалы, мұнда, сондай-ақ man auditd.conf командасының анықтамалығынан табуға болады.
Ережелер жасау
Ережелерді баптау auditctl утилитасы мен келесі опциялар арқылы орындалады:
- -l — жасалған ережелер тізімін шығару (auditd орнатылғаннан кейін ережелер тізімі бос болады);
- -a — жаңа ереже қосу;
- -d — ережені тізімнен жою;
- -D — барлық ережелерді жою.
Жаңа ережелер құру үшін келесі команда қолданылады:
sudo auditctl -a тізім,әрекет -S жүйелік_шақыру_атауы -F сүзгі
Тізім — ереже қолданылуы тиіс оқиғалар жиынтығы. Тізімді ережені дәлірек ететін сүзгі ретінде түсінуге болады.
Тізімнің бес түрі бар:
- task — процестердің құрылуына байланысты оқиғалар;
- entry — жүйелік шақыруға кіру кезінде туындайтын оқиғалар;
- exit — жүйелік шақыру аяқталған кезде болатын оқиғалар;
- user — пайдаланушы кеңістігінің параметрлеріне (uid, pid және gid) байланысты оқиғалар;
- exclude — оқиғаларды бақылаудан шығару үшін қолданылады.
Іс жүзінде entry және exit жиі қолданылады.
Әрекет оқиға болғаннан кейін не істеу керектігін анықтайды: оны журналға жазу (always) немесе жазбау (never).
Жүйелік шақыру атауы триггер қай шақыруда іске қосылып, оқиғаны тіркеуі керектігін көрсетеді (мысалы, open, close, exit және т.б.).
Сүзгі — қосымша параметрлерді орнату үшін қолданылатын міндетті емес опция. Мысалы, /etc каталогындағы файлдарға қатынауды бақылау үшін оны осы параметрде көрсетуге болады:
sudo auditctl -a exit,always -S open -F path=/etc/
Қызықтыратын оқиғаларды, мысалы, w (write) және a (attribute change) рұқсаттары бар файлдардың өзгеруін дәлірек анықтау үшін бірнеше сүзгіні пайдалануға болады:
sudo auditctl -a exit,always -S open -F path=/etc/ -F perm=wa
Файлдарды бақылау ережелерін баптағанда жүйелік шақыру атауын (-S опциясы) көрсетпеуге болады:
sudo auditctl -a exit,always -F path=/etc/ -F perm=wa
Белгілі бір файлды бақылау үшін одан да қысқа форманы пайдалануға болады (-p опциясы perm-нің орнына қолданылады):
sudo auditctl -w /etc/passwd -p wa
audit.rules файлы
Ережелерді консоль арқылы анықтап, оларды /etc/audit/audit.rules файлында сақтауға да болады. Бұл жағдайда олар тұрақты түрде әрекет етеді.
Бұл жағдайда ережелер синтаксисі бірдей, тек auditctl командасын жазбау керек, мысалы:
-w /etc/passwd -p wa
Файлдың басында, әдетте, базалық баптауларды орнататын метаережелер анықталады:
# Барлық алдыңғы ережелерді тазалау
-D
# Хабарламаларды сақтауға арналған буферлер санын көрсету
-b 320
# Буферлер толып кеткендегі әрекет: 0 — ештеңе істемеу; 1 — dmesg-ке хабарлама жіберу, 2 — ядро дүрбелеңін (kernel panic) шақыру
-f 1
Содан кейін пайдаланушы ережелері жазылады.
Төменде түрлі оқиғаларды бақылауға арналған ережелердің мысалдары берілген:
# Аудит жүйесінің конфигурациялық файлдарын бақылау
-w /etc/audit/auditd.conf -p wa
-w /etc/audit/audit.rules -p wa
# Журнал файлдарын бақылау
-w /var/log/audit/
-w /var/log/audit/audit.log
# at баптаулары мен тапсырмаларын бақылау
-w /var/spool/at
-w /etc/at.allow
-w /etc/at.deny
# Құпиясөздер мен топтар файлдарын бақылау
-w /etc/group -p wa
-w /etc/passwd -p wa
-w /etc/shadow
# Жүйеге кірудің конфигурациялық және журнал файлдарын бақылау
-w /etc/login.defs -p wa
-w /etc/securetty
-w /var/log/faillog
-w /var/log/lastlog
# Хосттар тізімі мен атауларын бақылау
-w /etc/hosts -p wa
# Демондардың іске қосу скрипттерін бақылау
-w /etc/init.d/
-w /etc/init.d/auditd -p wa
# SSH сервері баптауларын бақылау
-w /etc/ssh/sshd_config
# Файлдарға қатынау құқықтарының өзгеруін бақылау
-a entry,always -S chmod -S fchmod -S chown -S chown32 -S fchown -S fchown32 -S lchown -S lchown32
# Файлдардың құрылуын, ашылуын және өлшемінің өзгеруін бақылау
-a entry,always -S creat -S open -S truncate -S truncate64 -S ftruncate -S ftruncate64
# Каталогтардың құрылуы мен жойылуын бақылау
-a entry,always -S mkdir -S rmdir
# Сілтемелердің жойылуы мен құрылуын бақылау
-a entry,always -S unlink -S rename -S link -S symlink
# Файлдық жүйелерді тіркеу (mount) операцияларын бақылау
-a entry,always -S mount -S umount -S umount2
Конфигурациялық файлға өзгерістер енгізгеннен кейін оларды іске қосу үшін auditd-ді қайта іске қосу керек:
sudo service auditd restart
Аудит журналдарын талдау
Аудит жүйесінің журнал файлдары /var/log/audit жолында сақталады. Бұл файлдарды талдау үшін ausearch және aureport құралдары қолданылады. Олардың мүмкіндіктері кең және берілген критерийлерге сәйкес журнал деректері негізінде ақпараттық есептер жасауға мүмкіндік береді.
Бұл құралдардың қосымша параметрлері мен опцияларын құжаттамадан (man aureport және man ausearch) немесе онлайн-ресурстардан, мысалы, мұнда табуға болады.
Файлдар туралы есеп жасау үшін aureport-ты -f опциясымен пайдалануға болады:
sudo aureport -f
Сондай-ақ есепті белгілі бір уақыт аралығымен шектей аласыз:
sudo aureport --start ай/күн/жыл сағат:минут:секунд --end ай/күн/жыл сағат:минут:секунд
# Мысалы:
sudo aureport -f --start 08/20/20 12:00 --end 08/20/20 13:00
Уақыт аралықтарын көрсету үшін келесі кілт сөздерді де пайдалануға болады:
- now (ағымдағы уақыт),
- recent (соңғы он минут),
- today (бүгін, түн ортасынан бастап),
- yesterday (кеше),
- this-week (ағымдағы аптада),
- this-month (ағымдағы айда),
- this-year (ағымдағы жылы).
Команда шығысында ақпарат өте көп болады, талдауды жеңілдету үшін әр файлға жасалған қатынаулардың қысқаша шолуын алуға мүмкіндік беретін --summary опциясын пайдалануға болады.
sudo aureport -f -i --start recent --summary
Күдікті қатынау әрекеті анықталған жағдайда осы оқиғаны бастаған процесті анықтауға болады:
sudo aureport -f -i --start today | grep /etc/passwd
Содан кейін ausearch құралының көмегімен әр оқиғаны толығырақ талдауға болады:
sudo ausearch -a оқиға_нөмірі
Ausearch сондай-ақ оқиғаларды түрлі параметрлер бойынша табуға мүмкіндік береді, мысалы:
Пайдаланушы идентификаторы (-ui опциясымен):
sudo ausearch -ui 1111 --interpret
(--interpret немесе -i опциясы деректерді оқуға ыңғайлы форматта шығаруға мүмкіндік береді.)
Орындалатын файлдың атауы (-x опциясымен):
sudo ausearch -x /файлға/апаратын/жол
Демон атауы (-tm опциясымен):
sudo ausearch -tm cron
Жүйелік шақыру (-sc опциясымен):
sudo ausearch -sc ptrace
Нәтижелерді уақыт бойынша шектеу үшін aureport-тағы синтаксисті пайдалануға болады.
ausearch-тің қолжетімді опцияларының толық тізімін құжаттамадан (man ausearch) немесе онлайн-ресурстардан, мысалы, мұнда табуға болады.