Поскольку никто не ответил, я понял это. Вот то, как сделать это. Скажем, мы должны насчитать его в течение "2 минут (120 секунд)". Сначала запишите это в файл, названный stat.txt. Обновите каждый второй fro 120 раз.
dstat -n 1 120 >> stat.txt
Добавьте столбцы stat.txt
awk -F" " '{t1=t1+$1;t2=t2+$2}END{t1=t1/120;t2=t2/120;print t1"\t"t2}' stat.txt
Удалите stat.txt
rm stat.txt
Мы можем сделать сценарий также из этих команд.
На серверах Ubuntu вы можете найти информацию о том, кто входил в систему когда (и откуда), в файле /var/log/auth.log
. Там вы найдете записи типа:
May 1 16:17:02 owl CRON[9019]: pam_unix(cron:session): session closed for user root
May 1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May 1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)
На дистрибутивах, работающих на базе Red Hat, таких как Fedora/CentOS/RHEL, вы можете проверить пользователей, вошедших в файл /var/log/secure
.
Если вам нужна дополнительная информация, прочтите этот вопрос-ответ SuperUser под заголовком: Как я могу регистрировать попытки доступа к SSH и отслеживать, что пользователи SSH в конечном итоге делают на моем сервере?.
. В Ubuntu вы можете войти в систему через SSH и использовать хвостовую команду Linux для отображения последних x строк вашего /var/log/auth.log
файл. Когда вы вошли в систему через SSH, используйте следующую команду для просмотра 100 последних строк вашего журнала SSH:
tail /var/log/auth.log -n 100
или даже более чистый
tail -100 /var/log/auth.log | grep 'sshd'
Обратите внимание, что по умолчанию в Ubuntu НЕ регистрируются входы ssh в файл / var / log / auth
. Это уровень ведения журнала INFO
.
Если вы хотите, чтобы он включал попытки входа в систему в файл журнала, вам необходимо отредактировать файл / etc / ssh / sshd_config
(как root или с помощью sudo) и изменить LogLevel
с INFO
на VERBOSE
.
После этого перезапустите демон sshd с помощью
sudo service rsyslog restart
. После этого попытки входа в систему ssh будут регистрироваться в файле /var/log/auth.log
.
Я знаю, что это устарело, но я написал кое-что для отслеживания успешных и неудачных подключений / попыток ssh. А также запрещенные IP-адреса, если вы используете sshguard. Программа написана на Python. Он отправит вам электронное письмо, когда кто-то успешно подключится через ssh, когда кто-то получит неправильный пароль ssh или когда кто-то будет заблокирован из-за множества неудачных попыток. Надеюсь, это поможет кому-то в будущем, кто будет искать эту проблему и найдет мой код!
https://github.com/amboxer21/SSHMonitor
Для сценария python я написал сценарий bash для отслеживания процесса. Он проверяет, работает ли он каждую минуту с помощью задачи root cron. Если он не запущен, запускает другой процесс. Это вызывается корневой задачей cron каждую минуту.
Я рекомендую использовать auditd . Это ведение журнала с использованием подсистемы аудита ядра Linux , и, на мой взгляд, это правильный способ сделать это, если вы серьезно настроены. И, учитывая характер вопроса {связанный с безопасностью}, вам также следует использовать PAM . На уровне по умолчанию, когда установлены только auditd и PAM , вы должны автоматически регистрировать все успешные и неудачные попытки SSH в файле audit.log. Таким образом, вам действительно не нужно ничего настраивать, просто установите auditd и PAM . Я знаю это по SLES не понаслышке. И готов поспорить, что RHEL и любая другая корпоративная версия Linux будут работать аналогичным образом.
http://manpages.ubuntu.com/manpages/precise/man8/auditd.8.html
в необработанном журнале аудита, созданном auditd , вы можете использовать либо что-то вроде ] aureport
, чтобы отфильтровать его, что описано на страницах руководства auditd , напишите свой собственный текстовый синтаксический анализатор или просто используйте VI и выполните поиск по ключевым словам.
это исключение из моего файла /var/log/audit/audit.log
, в котором я загружаюсь по ssh на мой Linux-сервер.
node=shark type=CRED_DISP msg=audit(1480622612.317:2211277): user pid=117768 uid=0 auid=23456 ses=2201 msg='op=PAM:setcred acct="ron" exe="/usr/sbin/sshd" (hostname=abc415.mycompany.us, addr=172.16.152.5, terminal=ssh res=success)'
date --date @ 1480622612.317
, что приведет к Thu Dec 1 15:03:32 EST 2016
, и это когда я подключился к своему серверу по ssh. Когда res = failed
- это когда вы хотите исследовать эти IP-адреса и имена хостов, чтобы узнать, какие системы пытались подключиться, под каким именем пользователя. И, очевидно, успешный ssh пытается понять, что происходит в вашей системе - например, ваш коллега Боб, который сидит за одним столом каждый день с hostname = bobscomputer и ip address = 192.168.5.5; если вы видите успешную попытку ssh вчера в 2 часа ночи под его именем пользователя с IP-адреса 10.10.5.6, например, тогда в ваших интересах поговорить с Бобом для расследования.Возможна попытка взлома кем-то другим? И вскоре после этого были ли попытки su выполнить root-доступ в журнале аудита из учетной записи Боба?
, когда вы видите повторяющиеся res = failed
и auid = 0
и acct = root
, то это кто-то пытается ввести ssh в ваш ящик в корневую учетную запись, и это когда вы изменяете /etc/hosts.deny
с этим IP-адресом для SSHD.
Лучшее, что я когда-либо встречал для протоколирования SSH-команд, это rootsh этот инструмент позволяет администратору получать каждую команду из каждого сеанса с обширным уровнем ведения журнала.
Я написал скрипт для установки и настройки ROOTSH в Ubuntu и CentOS/RHEL
скачать с гитхаба вот ссылка
https://gist.githubusercontent.com/mansurali901/e1e3acc7dca13aeca25b68a69571c60f/raw/b1b16f73ec9a974486e4c0c0d65a7d41f2eca718/setup_rootssh.sh
chmod +x setup_rootssh.sh ; sudo./setup_rootssh.sh