Вы могли бы попробовать wireshark. Я честно не уверен, сделает ли это конкретно, что Вы хотите, но это может, конечно, определить то, что пользователи делают в сети. Spiceworks является другой бесплатной опцией
netstat
, ps
и некоторое умное вырезание и хватание. Netstat может дать Вам, идентификатор Программы и PS может дать Вам пользователя.
user@myhome:~$ ssh user@some.server -R 12345:other.server:22
между тем в другой стороне консоли
root@some.server# netstat -plnt | grep 12345
tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN 12998/15
tcp6 0 0 ::1:12345 :::* LISTEN 12998/15
^ PID!
Конечно, Вы не будете знать порт, указанный в grep, grep это - здесь к ограничению мой вывод
и
ps -aux | grep 12998 # the PID
user 12998 0.0 0.1 6624 1920 ? S 07:57 0:00 sshd: user@pts/15
и вуаля! Вы знаете, что пользователь "пользователь" перенаправляет порт 12 345 использований sshd
сценарий и крон что-то с помощью этого
Я использовал патч на этой веб-странице (немного измененный) http://blog.rootshell.be/2009/03/01/keep-an-eye-on-ssh-forwarding/ для входа ssh порта вперед.
Я задаю вопрос здесь Как процесс хоста SSH может определить, какие порты были перенаправлены client (-R not -L) , чтобы найти более элегантный способ сделать то же самое.
Однако, поскольку не похоже, что есть лучший способ, я делаю это с помощью lsof
:
sudo lsof-aPni@127.0.0.1 -Fn -p99999 | grep "^ n" | grep -v '\ ->' | awk -F: '{print $ NF}' | сортировать | uniq
99999 - это PID sshd
, обрабатывающего интересующее вас соединение.
Есть несколько способов использовать этот фрагмент. Либо у вас есть длительный процесс, который отслеживает новые экземпляры sshd
, а затем анализирует их с помощью указанной выше команды, либо вы префикс всех записей .ssh / authorized_keys
с помощью специальной команды, которая выполняет это, где-то записывается, затем exec
исходная предполагаемая команда ( SSH_ORIGINAL_COMMAND
или оболочка входа в большинстве случаев).