Логирование и аудит потенциально опасных событий на сервере Linux

Задача: при изменении критически важных файлов, запуск из под sudo, создание тоннелей SSH и переброс портов — отсылать уведомление об этом на почту.

Решение: воспользуемся штатным демоном auditd и сторонней утилитой wazuh

Установка auditd:

apt install auditd

Просмотр текущих действующих правил:

auditctl -l -a never,task

Стереть все действующие правила:

auditctl -D

1) Настроить уведомление об изменении файлов /etc/paswd и /etc/shadow

auditctl -w /etc/passwd -p wa -k passwd_watch
auditctl -w /etc/shadow -p wa -k shadow_watch

, где -p — обозначает при каком условии будет сделана запись в журнал:

  • r — операция чтения данных из файла
  • w — операция записи данных в файл
  • x — операция исполнения файла
  • a — операция изменения атрибутов файла или директории

Что бы правила работали на постоянной основе, их нужно добавить в файл /etc/audit/rules.d/audit.rules после чего перезапустить демон

systemctl restart auditd.service

2) Настройка уведомления о выполнении команд от sudo/root:

auditctl -a exit,always -F arch=b64 -F euid=0 -S execve -k rootcmd
auditctl -a exit,always -F arch=b32 -F euid=0 -S execve -k rootcmd

3) Для того чтобы уведомления из журнала /etc/audit/audit.log отправлялись на почту, нужно установить wazuh-manager:

add-apt-repository ppa:openjdk-r/ppa
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add -
echo "deb https://packages.wazuh.com/4.x/apt/ stable main" | tee -a /etc/apt/sources.list.d/wazuh.list
apt-get update
apt-get install wazuh-manager
systemctl daemon-reload
systemctl enable wazuh-manager
systemctl start wazuh-manager

И соответственно добавить в конфигурационный файл /var/ossec/etc/ossec.conf, отслеживание изменений:

<localfile>
    <location>/var/log/audit/audit.log</location>
    <log_format>audit</log_format>
  </localfile>

В этом же файле нужно настроить секцию касающуюся отправки уведомлений по email — отправитель, получатель.

Далее добавляем ключевые слова в /var/ossec/etc/lists/audit-keys, для фильтрации событий:

passwd_watch:read
shadow_watch:read
sudo:read

И добавить правило срабатывания в /var/ossec/etc/rules/local_rules.xml:

<group name="audit">
  < <rule id="100002" level="12">
      <if_sid>80700</if_sid>
      <match>sudo</match>
      <options>alert_by_email</options>
      <description>Выполнена команда от SUDO сервер sdcsdcezs.sadcasd.ru</description>
  </rule>
  <rule id="100003" level="12">
      <if_sid>80701</if_sid>
      <match>passwd_watch</match>
      <options>alert_by_email</options>
      <description>Изменился файл /etc/passwd</description>
  </rule>
</group>

Linux: при использовании rm ошибка Argument list too long

Ошибка возникает при очень большом количестве файлов в каталоге. Фактически оно обычно ограничено 2097152 штуками (getconf ARG_MAX).

Решение:

find . -type f -delete

Или просто удалите целиком веь каталог и создайте вновь

Memcached: MemcachePool::get(): Server localhost (tcp 11211, udp 0) failed with: Network timeout

После очередной перезагрузки сервера, при работе с memcached из PHP стали валиться ошибки вида:


MemcachePool::get(): Server localhost (tcp 11211, udp 0) failed with: Network timeout

Решение: перевел memcached в режим debug и увидиел, что не может создать папку /var/run/memcached.socket (premission denied). Для того чтобы мог сам создавать, в /etc/memcached.conf добавил возможность запуска сервиса из под root:

-u root

PostgreeSQL: контроль уникальности вставки

Хороший вариант: возложить контроль уникальности вставляемых данных, на уровень БД. Если это по каким-то причинам не возможно, то можно попробовать такой вариант:

insert into users_groups_filling (user_id,user_group) 
select  :user_id,:user_group 
where 
 NOT EXISTS (
	 SELECT id from users_groups_filling where user_id=:user_id and user_group=:user_group
 )

RouterOs: как на Mikrotick добавить еще одну WiFi сеть (без изоляции)

Задача: добавить еще одну wifi сеть с доступом в интернет, с устройствами не изолированными друг от друга

Решение:

1) Добавим виртуальный интерфейс:

Добавим SSID и профиль безопасности:

Добавим адрес для интерфейса (IP->Adresses), и добавим в интерфейс wlan2 в мост (Brige):

1 10 11 12 13 14 60