Кто трогал сервер: ищем следы в Linux
Иногда на сервере что-то сломалось, а вопрос один:
кто заходил, когда заходил и что менял?
В Linux часть ответов можно найти без отдельного мониторинга. Но важно понимать: стандартные логи показывают не всё, а историю команд легко удалить.
Кто заходил на сервер
Посмотреть последние входы пользователей:
last
Неудачные попытки входа:
lastb
Текущие активные сессии:
who
w
Для SSH обычно полезно смотреть auth-логи:
grep "sshd" /var/log/auth.log
На RHEL/CentOS/AlmaLinux путь чаще такой:
grep "sshd" /var/log/secure
Кто выполнял команды
У каждого пользователя есть история shell:
cat ~/.bash_history
Но это слабый источник: команды могут записываться не сразу, часть команд может не попасть в историю, а сам файл можно почистить. Полезнее включить timestamp для истории:
echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc
source ~/.bashrc
После этого
history будет показывать время выполнения команд:
history
Кто менял файлы
Посмотреть время изменения файла:
stat /etc/nginx/nginx.conf
Найти файлы, изменённые за последний день:
find /etc/nginx -type f -mtime -1 -ls
За последние 60 минут:
find /etc/nginx -type f -mmin -60 -ls
Но
stat и
find покажут время изменения, а не имя пользователя, который это сделал. Если нужно именно кто изменил файл, заранее включают auditd:
apt install auditd
Добавить наблюдение за файлом:
auditctl -w /etc/nginx/nginx.conf -p wa -k nginx_config
Потом искать события:
ausearch -k nginx_config
Вывод
last,
auth.log,
history,
stat и
find помогают быстро понять, что происходило на сервере. Но если нужно точно знать, кто менял важные файлы, лучше заранее включить
auditd. Без него Linux часто покажет когда файл изменили, но не всегда покажет кем.
LinuxCamp | #utils
Обсуждение 3
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram