리눅스 머신에서 SSH를 어떻게 추적 할 수 있습니까?


23

우분투 10.04를 실행 중입니다. 박스에 로그온 한 사람에 대한 일일 보고서를받을 수있는 방법이 있습니까, 몇시에, 심지어-너무 많이 요구할 수도 있습니다-그들이 사용한 명령에 대한 보고서가 있습니까? 이것은 사용량이 적은 상자이므로 어떤 활동이 일어나는지 알 수있는 좋은 방법이라고 생각합니다.

이 같은 줄을 따라 rsync와 같은 비 대화식 쉘을 통해 상자에서 작업이 완료되거나 ssh를 통해 원격으로 단일 명령을 실행하는 시점을 추적 할 수 없다고 들었습니다. 이것이 사실입니까, 아니면 이것을 기록하고 추적하는 방법이 있습니까?

답변:


21

언제 로그인했는지에 대한 정보 /var/log/auth.log(또는 다른 배포판의 다른 로그 파일) 관련성있게 구성한 정보를 추출 할 수있는 여러 로그 모니터링 프로그램이 있습니다. 모든 정상적인 시스템에서 모든 사용자 인증이 기록됩니다.

인수가 아닌 모든 명령 호출을 기록하려면 Ubuntu 의 패키지 에서 제공 하는 프로세스 계정을 사용 하십시오 . 계정 서브 시스템이 시작되어 실행중인 경우 완료된 프로세스에 대한 정보 를 표시합니다.acct acct 설치lastcomm


3
/var/log/secure.log는 또 다른 일반적인 로그 파일입니다.
Adrian Cornish

9

who또는 wSSH 사용자를 포함하여 현재 시스템에 로그인 한 사람을 사용 하거나 볼 수 있습니다 .


10
lastOP가 찾고 있던 것에 대한 더 나은 옵션이 될 수 있습니다 ...
jasonwryan

1
과연. "마지막"은 원하는 명령입니다.
Sirex

1
선택한 답변보다 훨씬 나은 답변입니다.
PaulBGD

0

일반적으로 사용자 시스템에 로그인하면 / var / log / messages에 다음과 같이 인쇄됩니다.

sshd[18468]: Accepted keyboard-interactive/pam for root from 134.64.66.666 port 49867 ssh2

따라서 메시지를 다음과 같이 grep하십시오.

grep -E "Accepted keyboard-interactive/pam for" /var/log/messages

0

rsylog를 수행하도록 bash 쉘을 수정할 수도 있습니다.

효과적으로 특정 연결을 허용하도록 원격 호스트에서 rsyslog를 설정합니다. 그런 다음, 다음을 활성화 한 버전으로 컴파일하여 모니터하려는 호스트 쉘을 수정하십시오.

vi config-top.h
#define SYSLOG_HISTORY
#if defined (SYSLOG_HISTORY)
#  define SYSLOG_FACILITY LOG_USER
#  define SYSLOG_LEVEL LOG_INFO
#endif

이 기능을 사용하여 컴파일 한 후에는 bash를이 버전으로 바꾸거나 로그인을 리디렉션하여 사용자가이 버전에 로그인하도록 할 수 있습니다.

더 많은 정보를 위해서:

https://www.pacificsimplicity.ca/blog/remote-logging-using-syslog-and-logging-shell-commands-remotely


벌금. 업데이트하겠습니다.
mcdoomington
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.