Мне просто интересно, как лучше всего фильтровать мои журналы sshd. Проблема в том, что я контролирую свои ящики по SSH с помощью Nagios и Cacti. Они оба подключаются каждые 5 минут, и это забивает мои файлы журналов множеством записей, что затрудняет быстрый «хвост», чтобы увидеть, что происходит.
Я бы хотел, чтобы все входы в систему от моего контролирующего пользователя (с определенного IP-адреса) регистрировались в отдельном файле.
В идеале я бы избегал установки syslog-ng или подобного. Мне пришлось бы установить это на различных машинах Ubuntu, CentOS и FreeBSD (на которых работает множество версий OpenSSH), так что это упростит жизнь, если я смогу сделать это без дополнительного программного обеспечения.
Любые рекомендации о том, как этого добиться?
Спасибо!
вы можете передать свой файл системного журнала в канал, как это
mkfifo /var/log/pipes/pipe1
а потом
прочтите это с помощью скрипта, который удалит строки, которые вам не нужны:
cat /var/log/pipes/pipe1 | grep -v "login from xxx.xxx.xxx" | while read LINE
do
echo $LINE >>/var/log/ssh.log
done
Вы можете сделать что-то вроде этого:
tail -f logfile | grep -v "some\.ip\.address\.to\.ignore"
или
tail -f logfile | grep -v "some\.ip\.address\.to\.ignore.*user-name"
Можешь попробовать Ossec, он имеет очень хороший анализ журналов.
Образец - хорошая программа для отслеживания и фильтрации файлов журнала, даже с поддержкой раскрашивания строк. Для этого тоже есть пакет Debian / Ubuntu.