다른 사용자가 실행 한 Linux 셸 명령의 라이브 뷰?


27

Linux의 루트 사용자가 터미널 또는 SSH를 통해 로그인 한 다른 사용자가 실행중인 셸 명령에 대한 실시간 (또는 거의 실시간)보기를 가질 수 있습니까? 분명히 그것들은 .bash_history에 저장되지만 사용자가 로그 오프 할 때만 저장되며 비활성화 할 수도 있습니다.

편집 : 이상적으로 쉽게 켜고 끌 수있는 것.


ttyrpld좋아 보여. 이 질문에 권장됩니다. serverfault.com/questions/40011/…
hayalci

답변:


16

루트로서, 쉘을 실제 쉘로 전달하기 전에 명령을 기록한 간단한 랩퍼 스크립트로 쉘을 대체 할 수 있습니다. 이것은 로그인하기 전에 만 작동합니다.


20
이전 고용주에서 해킹 된 계정을 모니터링하기 위해이 작업을 수행했습니다. script-command를 감싸는 "/ bin / bash"(공백을 알 수 있음)를 작성했습니다. 매력처럼 일했다 :)
사령관 Keen

매우 영리한! +1
EMP

9

사용자 세션에 침입하거나 협력이 필요한 경우 sniffy를 사용하십시오 screen -x.

그러나 사용자를 감시하는 행위는 현지 법률에 따라 규제를 받거나 심지어 불법으로 간주 될 수 있습니다.


7

쉘을 변경하는 것은 회피하기가 매우 쉽지 않으므로 쉘 자체를 패치하는 것이 좋습니다. 그러나 모든 쉘을 패치해야합니다. 우리가 가장 좋아하는 크래커는 이것을 bash_history 비활성화로 귀찮게하지 않는 보너스로 사용합니다.

ssh host /bin/sh -i  

스누피 는 exec 함수를 감싸는 래퍼 이며 실행되는 모든 외부 바이너리 를 기록합니다 (쉘 내장이 아님).

@ 데이비드 슈미트의 제안 구린 사용하는 더 나은 방법은, 그것은 의사 터 도청.

ttysnoop 은 동일한 방법을 사용하지만 유지 관리되지 않습니다. (아마도 ssh 연결을 기록하는 데 문제가 있었으며 기억할 수 없습니다)

ssh 패치를 시도해 볼 수 있습니다 를 하여 세션을 기록 있지만 해당 패치는 오래되었습니다 .

pseudopodrootsh 를 사용하여 합법적 인 sudos를 로깅 할 수 있습니다. 그리고 shwatcr은 모니터 로그인 또 다른 일이다.


정확히 무엇 ssh host /bin/sh -i을해야합니까?
Mike Pennington

스누피의 경우 +1, 완벽하지는 않지만 필요한 작업을 수행했습니다.
skinp

4

협력하고 있다면 GNU 화면을 사용할 수 있습니다 두 사용자간에 한 명은 화면 세션을 설정하고 다른 한 명은을 사용하여 참여할 수 screen -x있습니다.

다른 사용자가 모르게 루트를 "스파이"하려면 가장 효율적이고 효과적인 솔루션은 키로거 소프트웨어 / 하드웨어 일 수 있습니다.


4

Sysdig 는 시스템 레벨 탐색을위한 강력한 도구입니다.

예:

sysdig -i spy_users

카테고리 : 보안

spy_users 대화식 사용자 활동 표시

사용자가 대화식으로 시작하는 모든 명령 (예 : bash) 및 모든 디렉토리 사용자가 방문하는 모든 명령을 나열합니다.


2

bash-BOFH 패치를 사용해 볼 수 있습니다. 패치를 검색하십시오.


1

패치 또는 특수 실행 도구를 사용하지 않고 모든 'bash'명령 / 내장 파일을 텍스트 파일 또는 'syslog'서버에 기록하는 방법을 작성했습니다.

'bash'를 초기화 할 때 한 번 호출해야하는 간단한 셸 스크립트이므로 배포하기가 매우 쉽습니다.

여기 방법을 참조하십시오 : http://blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger


서버 결함에 오신 것을 환영합니다! 우리는 답변이 내용에 대한 포인터가 아닌 내용을 갖는 것을 선호합니다. 이렇게하면 링크가 끊어 지더라도 응답을 계속 사용할 수 있습니다. 이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
user9517은 GoFundMonica

서버 결함에 오신 것을 환영합니다! FAQ 를 읽어보십시오. 여기에 제휴 한 제품이나 웹 사이트를 홍보 할 수 있습니까? .
user9517은 GoFundMonica

1
function spy() { 
   ptsnum=`ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'` ; 
   /usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \
        | grep -Poi 'write\(...\"[[:print:]]{1,2}\"[.][.][.][,]..\)' ; 
}

[436] klikevil@epiphany ~ $ w<br>
 09:36:43 up 12:06,  6 users,  load average: 0.46, 0.29, 0.20<br>
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT<br>
klikevil pts/0    75.125.126.8     23:05    2:19m 10:33   0.18s cmd                                      <br>
klikevil pts/1    75.125.126.8     00:18    6:50m  0.06s  0.04s sshd: klikevil [priv]<br>
klikevil tty7     :0               09:02   17:07m  2:02   0.32s x-session-manager<br>
klikevil pts/2    :0.0             09:03    3:30   0.08s  0.08s bash<br>
klikevil pts/3    :0.0             09:03    0.00s  0.76s  0.00s w<br>
klikevil pts/4    :0.0             09:06    3:13   0.46s  0.00s /bin/sh /usr/bin/thunder<br>
[437] klikevil@epiphany ~ $ spy 2<br>
write(2, "e"..., 1)<br>
write(2, "c"..., 1)<br>
write(2, "h"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "s"..., 1)<br>
write(2, "u"..., 1)<br>
write(2, "p"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "d"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, "g"..., 1)<br>
write(2, "\n"..., 1)<br>
^C<br>

줄 바꿈을 정렬하는 것을 신경 쓰지 않으면 꽤 잘 작동하는 것 같습니다.


1

스누피 는 간단한 명령 로깅을위한 것입니다.

시스템에서 실행되는 명령의 실시간보기를 원할 수 있습니다. 경고 : 스누피는 적절한 감사 솔루션이 아니며 쉽게 우회 할 수 있습니다.

그러나 터미널에 입력 된 모든 문자를 보려면 다른 도구를 사용해야합니다.

공개 : 저는 현재 스누피 관리자입니다.


-3

이 내보내기를 시도하십시오. HISTTIMEFORMAT = "% T"다음에 몇 가지 명령을 실행하고 "기록"을 실행하십시오.

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