Контролът на целостта отговаря на въпрос, на който не отговарят нито антивирусът, нито защитната стена: какво се е променило на този сървър от миналата седмица? Сигнатурният скенер търси известен зловреден код; AIDE не знае нищо за зловредността, знае, че този файл вчера е бил друг. За откриване на задна врата, дописана в съществуващ файл, това е единственият работещ подход.

AIDE се инсталира с две команди. Да се настрои така, че отчетите му да се четат, е по-трудната част — и точно на това обикновено се проваля: първият отчет идва с десет хиляди реда, втория никой не го отваря, а след месец задачата се изтрива.

Инсталиране и първата база

sudo apt install aide aide-common
sudo aideinit

Инициализацията отнема от няколко минути до половин час: изчисляват се контролните суми на всички файлове. Резултатът ляга до работната база с разширение .new и трябва да се въведе в употреба:

sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

По-нататък проверката се стартира така:

sudo aide --check

Какво да се изключи, за да може отчетът да се чете

Настройките са в /etc/aide/aide.conf и в директорията /etc/aide/aide.conf.d/. Стандартната конфигурация на Debian проверява твърде много и първото нещо е да се махне това, което и без това се променя непрекъснато:

  • /var/log — променя се всяка секунда;
  • цялото /var/lib — бази данни, състояние на пакетите, състояние на услугите;
  • /var/cache, /tmp, /proc, /sys, /run;
  • директориите за качвания и кеш на сайта — съдържанието им го променят посетителите.

А с най-строгите настройки си струва да се проверява тесен списък:

  • /bin, /sbin, /usr/bin, /usr/sbin — изпълнимите файлове на системата;
  • /lib, /usr/lib — библиотеките;
  • /etc — конфигурацията;
  • /root/.ssh и директориите .ssh на потребителите;
  • кодът на сайта, но без директориите за качвания и кеш.

Ориентир: обикновеният дневен отчет трябва да се побира на екран. Ако е по-дълъг, изключенията са малко и четенето ще спре.

Къде да се държи базата

Съществен детайл, за който често се забравя. Ако външен човек има root, подмяната на файл и незабавното обновяване на базата на AIDE не му струват нищо — а проверката след това ще покаже, че всичко е наред. База, лежаща на същата машина с право на запис, пази само от случайност.

Разумен минимум за един сървър:

  • копирайте базата след всяко обновяване на друга машина и стартирайте проверката с това копие;
  • или поне съхранявайте отделно контролната сума на базата и я сравнявайте преди проверката:
sha256sum /var/lib/aide/aide.db

Дори толкова прост похват превръща тихата подмяна в забележимо събитие.

Обновяването на базата е съзнателно действие

След оправдани промени — обновяване на системата, качване на нова версия на сайта — базата се създава наново:

sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Моментът има значение. Правилно: прегледайте отчета, уверете се, че всяка промяна може да се обясни, и едва след това обновявайте. Неправилно и много разпространено: да се стартира aide --update по график, за да са чисти отчетите. Във втория случай системата работи, отчетите идват, а промените се записват като норма точно в момента, в който настъпват — смисълът изчезва напълно.

График и натоварване

Пакетът aide-common сам създава дневна задача. Проверката натоварва диска и процесора за няколко минути, затова е добре да се стартира в спокоен час и с понижен приоритет:

0 4 * * * ionice -c3 nice -n19 /usr/bin/aide --check

Как се чете отчетът

Три раздела: добавени, изтрити и променени файлове. При всяка промяна се вижда какво точно се различава: съдържание, права, собственик, време.

На какво да се реагира първо:

  • промяна на който и да е файл в /bin, /sbin, /usr/bin извън прозорец за обновяване;
  • нови файлове в системните директории;
  • промени в authorized_keys, /etc/passwd, /etc/sudoers, /etc/crontab и /etc/cron.d;
  • появата на файла /etc/ld.so.preload — сам по себе си не възниква никога.

Сто променени файла веднага след apt upgrade е норма и времето на отчета го потвърждава. Три променени файла в /usr/bin в сряда, когато не е имало обновяване, са повод да спрете и да проверите.

AIDE и debsums

Инструментите решават сродни задачи, но моделът им е различен. AIDE сравнява със собствената си моментна снимка — вижда следователно промени в произволни файлове, включително кода на сайта. debsums сравнява с контролните суми от пакетите на дистрибуцията — вижда следователно подмяна на системни файлове напълно без подготовка, но не знае нищо за инсталираното извън пакетите. Разумно е да има и двете; на практика debsums обикновено върви пръв, защото не изисква нито конфигурация, нито база.

Обща е и слабостта им: отчетът идва по пощата, а пощата се губи. Значение има не фактът, че проверката е стартирана, а мястото, на което се вижда последният ѝ резултат. Как изглежда това, показва демонстрационната страница по-долу.