Назад | Перейти на главную страницу

Как получить номер порта, на котором находится пользователь?

Я переношу серверы с порта 22 в существующей многопользовательской среде. Я настроил sshd для прослушивания двух портов: 22 и нового порта.

Теперь я хотел бы определить, когда пользователь подключается или подключается к порту 22. Это, по-видимому, сложнее, чем я ожидал.

Я попытался запустить регистрацию в sshd_config, но даже DEBUG не записывает номер порта.

В настоящее время я сканирую вывод netstat на предмет TCP-соединений с портом 22, но он перечисляет чертовски много ложных срабатываний от случайных сканеров ботов. [причина переноса порта]

С помощью lsof -n -i TCP:22 -a -c sshd -a -u ^root,^sshd вы можете получить список sshd процессы и имена пользователей с их сокетами на порту 22. Он пропускает те, которые принадлежат root или sshd потому что они не соответствуют зарегистрированным пользователям.

Совершенно другой подход - добавить несколько команд в /etc/ssh/sshrc, который будет разбирать $SSH_CONNECTION и зарегистрируйте это: logger -p auth.notice -t "sshd[$$]" "$SSH_CONNECTION"

Третий подход - создать второй экземпляр sshd для порта 22 и настройте его для входа в другой объект.

Попробуйте что-то вроде этого:

sudo lsof -i -n -P | egrep sshd.*ESTABLISHED | egrep `who -a|grep pts|awk '{print $7}'|sed ':a;N;$!ba;s/\n/\\|/g'`

Чтобы уточнить, цель этой команды - сопоставить lsof совпадений (которые показывают используемый порт) с сеансами из who с участием pts (извлечение PID из вывода), чтобы отфильтровать ложные срабатывания.

Другими словами, он показывает соединения от процессов с PID, которые удерживают сеанс pts ssh.