pts 로그인에서 '마지막'출력에 IP 정보가 누락 된 이유는 무엇입니까?


18

나는 5 개의 CentOS 6 리눅스 시스템을 사용하고 있는데, 내가 가지고있는 모든 리눅스 시스템에서 내 사용자 아이디 로만 발생하는 것처럼 보이는 다소 이상한 문제가 발생했다 . 이것은 last명령 에서 제외 된 엔트리의 문제의 예이다 . .

mpenning pts/19                        Fri Nov 16 10:32 - 10:35  (00:03)
mpenning pts/17                        Fri Nov 16 10:21 - 10:42  (00:21)
bill     pts/15       sol-bill.local   Fri Nov 16 10:19 - 10:36  (00:16)
mpenning pts/1        192.0.2.91       Fri Nov 16 10:17 - 10:49 (12+00:31)
kkim14   pts/14       192.0.2.225      Thu Nov 15 18:02 - 15:17 (4+21:15)
gduarte  pts/10       192.0.2.135      Thu Nov 15 12:33 - 08:10 (11+19:36)
gduarte  pts/9        192.0.2.135      Thu Nov 15 12:31 - 08:10 (11+19:38)
kkim14   pts/0        :0.0             Thu Nov 15 12:27 - 15:17 (5+02:49)
gduarte  pts/6        192.0.2.135      Thu Nov 15 11:44 - 08:10 (11+20:25)
kkim14   pts/13       192.0.2.225      Thu Nov 15 09:56 - 15:17 (5+05:20)
kkim14   pts/12       192.0.2.225      Thu Nov 15 08:28 - 15:17 (5+06:49)
kkim14   pts/11       192.0.2.225      Thu Nov 15 08:26 - 15:17 (5+06:50)
dspencer pts/8        192.0.2.130      Wed Nov 14 18:24   still logged in
mpenning pts/18       alpha-console-1. Mon Nov 12 14:41 - 14:46  (00:04)

위의 pts 로그인 항목 중 두 개와 연관된 소스 IP 주소가없는 것을 볼 수 있습니다. 내 CentOS 시스템에는 시스템을 공유하는 최대 6 명의 다른 사용자가 있습니다. 내 로그인의 약 10 %에서이 문제가 발생하지만 다른 사용자 이름으로는이 동작이 나타나지 않습니다 . /var/log/secure소스 IP 주소 가없는 항목에는 항목이 없습니다 .

질문

이러한 시스템에 많은 종류의 네트워크 인프라를 제어하는 ​​일종의 스크립트를 감안할 때, 나는 이것에 약간 짜증이 나서 로그인이 때때로 소스 주소를 그리워하는 원인을 이해하고 싶습니다.

  • pts 행 항목에last -i 표시 0.0.0.0되는 이유 ( 이 답변 참조 )
  • 행동을 합리적으로 설명 할 수있는 (악의적 인 활동 이외의) 것이 있습니까?
  • 배쉬 히스토리 타임 스탬프 외에, 이슈를 추적하기 위해 할 수있는 다른 것들이 있습니까?

정보 제공

이 시작 일어나는 때문에, 나는 활성화 bash역사의 타임 스탬프 (예 HISTTIMEFORMAT="%y-%m-%d %T "에서 .bash_profile) 또한 추가 된 몇 가지 다른 bash는 역사 해킹 ; 그러나 이전 사건에서 일어난 일에 대한 단서를 제공하지는 않습니다.

모든 시스템은 CentOS 6.3을 실행합니다 ...

[mpenning@typo ~]$ uname -a
Linux typo.local 2.6.32-279.9.1.el6.x86_64 #1 SMP Tue Sep 25 21:43:11 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
[mpenning@typo ~]$

편집하다

를 사용하면 다음 last -i mpenning과 같은 항목이 표시됩니다.

mpenning pts/19       0.0.0.0          Fri Nov 16 10:32 - 10:35  (00:03)
mpenning pts/17       0.0.0.0          Fri Nov 16 10:21 - 10:42  (00:21)

답변하려는 사람들을위한 참고 사항 : 나는 screen명령이나 GUI로 로그인하지 않았습니다 . 모든 로그인은 SSH에서 온 것입니다. 현상금 상을 수상하기 위해, 당신은 인용한다 권위 Explain 스에 대한 참조 last -i 0.0.0.0만 SSH를 통해 공급 항목을.

편집 2 (ewwhite의 질문)

/etc/resolv.conf( 회사 정보를 숨기기 위해 위의 출력 .local에서 addrs를 사용했습니다 last)

[mpenning@sasmars network]$ cat /etc/resolv.conf
nameserver 192.0.2.40
nameserver 192.0.2.60
domain mycompany.com
search mycompany.com
[mpenning@sasmars network]$

/etc/hosts info (이 사용자 지정 호스트 파일은 이러한 문제가있는 시스템 중 하나에 만 존재 함)

[mpenning@sasmars network]$ cat /etc/hosts
127.0.0.1       localhost.localdomain localhost
192.0.2.44      sasmars.mycompany.com sasmars
::1             localhost6.localdomain6 localhost6

## Temporary kludge until I add reverse hostname mappings...
## Firewalls
192.0.2.254     a2-inet-fw1
192.0.2.253     a2-inet-fw2
192.0.2.254     a2-wan-fw1
192.0.2.253     a2-wan-fw2
192.0.2.201     a2-fab-fw1
192.0.2.202     a2-fab-fw2
192.0.2.203     t1-eds-fw1
192.0.2.42      sasvpn
192.0.2.246     sasasa1
192.0.2.10      sasoutfw1
## Wireless
192.0.2.6       saswcs1
192.0.2.2       l2wlc3
192.0.2.4       l2wlc4
192.0.2.12      f2wlc5
192.0.2.16      f2wlc6
192.0.2.14      f2wlc1
192.0.2.8       f2wlc2
[mpenning@sasmars network]$

sftp/var/log/secure* 에서 출력

Dec 26 10:36:37 sasmars sshd[26016]: pam_sm_authenticate: called (pam_tacplus v1.3.7)
Dec 26 10:36:37 sasmars sshd[26016]: pam_sm_authenticate: user [mpenning] obtained
Dec 26 10:36:37 sasmars sshd[26016]: tacacs_get_password: called
Dec 26 10:36:37 sasmars sshd[26016]: tacacs_get_password: obtained password
Dec 26 10:36:37 sasmars sshd[26016]: pam_sm_authenticate: password obtained
Dec 26 10:36:37 sasmars sshd[26016]: pam_sm_authenticate: tty [ssh] obtained
Dec 26 10:36:37 sasmars sshd[26016]: pam_sm_authenticate: rhost [192.0.2.91] obtained
Dec 26 10:36:37 sasmars sshd[26016]: pam_sm_authenticate: trying srv 0
Dec 26 10:36:38 sasmars sshd[26016]: Accepted password for mpenning from 192.0.2.91 port 55118 ssh2
Dec 26 10:36:38 sasmars sshd[26016]: pam_sm_setcred: called (pam_tacplus v1.3.7)
Dec 26 10:36:38 sasmars sshd[26016]: pam_unix(sshd:session): session opened for user mpenning by (uid=0)
Dec 26 10:36:38 sasmars sshd[26018]: pam_sm_setcred: called (pam_tacplus v1.3.7)
Dec 26 10:36:38 sasmars sshd[26018]: subsystem request for sftp
Dec 26 10:37:20 sasmars sshd[26016]: pam_unix(sshd:session): session closed for user mpenning
Dec 26 10:37:20 sasmars sshd[26016]: pam_sm_setcred: called (pam_tacplus v1.3.7)

최종 해상도

아래 내 답변을 참조하십시오


그들은 모두 ssh를 통해 연결됩니까? 다수의 대규모 다중 사용자 CentOS 6.x 시스템이 있습니다. 나는 거기에 같은 것을 볼 수 있는지 볼 수 있습니다.
ewwhite

@ ewwhite, 감사합니다 ... 모든 로그인은 ssh이어야합니다 (때로는 GUI 콘솔을 사용하지만 상자를 켤 때 GUI에서만 로그인합니다). 다른 원격 로그인 프로토콜이 활성화되어 있지 않습니다.
Mike Pennington

출력 결과에 last -i mpenning공백 이 표시됩니까?
JeffG

아 맞다. EL6.3 서버에서 이것을 복제 할 필요가있다.
ewwhite

/ var / log / secure 및 / var / log / messages의 로그인 출력을 제공 할 수 있습니까? IP 값은 PAM을 통해 전달되는 매개 변수라고 생각합니다. PAM이 IP를 올바르게 표시합니까?
Matthew Ife

답변:


4

script RedHat과 데비안의 동작 차이

연결된 라이브러리

CentOS 6.3-스크립트 (util-linux-ng 2.17.2)

#ldd /usr/bin/script

linux-vdso.so.1 =>  (0x00007fff077ff000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f309f5d1000)
libutempter.so.0 => /usr/lib64/libutempter.so.0 (0x00007f309f3cf000)
libc.so.6 => /lib64/libc.so.6 (0x00007f309f03b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f309f7e1000)

우분투 12.04-스크립트 (util-linux 2.20.1)

#ldd /usr/bin/script

linux-vdso.so.1 =>  (0x00007fff375ff000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fc0d7ab0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc0d76f1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc0d7cdc000)

PTY

에 자료 업스트림 소스 코드 , script두 버전에서 오픈 새로운 PTY을한다. 다음은 테스트입니다.

우분투 12.04

john@U64D211:~/tmp$ ls /dev/pts
0  1  5  8  ptmx
john@U64D211:~/tmp$ script
Script started, file is typescript
john@U64D211:~/tmp$ ls /dev/pts
0  1  2  5  8  ptmx
john@U64D211:~/tmp$ last -i
john     pts/0        0.0.0.0          Sat Jan  5 09:09   still logged in   
reboot   system boot  0.0.0.0          Sat Jan  5 09:08 - 09:52  (00:44)    
john     pts/0        0.0.0.0          Thu Jan  3 00:50 - 01:42  (00:52)    
reboot   system boot  0.0.0.0          Thu Jan  3 00:48 - 01:43  (00:54)    

wtmp begins Tue Jan  1 20:48:28 2013
john@U64D211:~/tmp$ exit
exit
Script done, file is typescript
john@U64D211:~/tmp$ ls /dev/pts
0  1  5  8  ptmx
john@U64D211:~/tmp$ 

우분투 12.04 script는 새로운 pts (2)를 열었습니다. 방금 업데이트되지 않았습니다 /var/log/wtmp.

CentOS 6

우리는 이미 scriptpty를 열고 wtmp에 등록 한다는 것을 알고 테스트를 건너 뜁니다 .

신병

  • 프로젝트 : http://freecode.com/projects/libutempter
  • 설명 : libutempter는 screen 및 xterm과 같은 터미널 에뮬레이터를위한 라이브러리 인터페이스를 제공하여 사용자 세션을 utmp 및 wtmp 파일에 기록합니다.

따라서 주요 차이점은 libutempter.so.0CentOS script와 연결된 추가 라이브러리 ( ) 입니다.

우분투 12.04로 테스트

scriptlibutempter로 컴파일

john@U64D211:~/tmp/util-linux-2.20.1$ sudo apt-get install libutempter-dev
john@U64D211:~/tmp/util-linux-2.20.1$ ./configure --with-utempter
john@U64D211:~/tmp/util-linux-2.20.1$ make
john@U64D211:~/tmp/util-linux-2.20.1$ cd term-utils/
john@U64D211:~/tmp/util-linux-2.20.1/term-utils$ ldd ./script
linux-vdso.so.1 =>  (0x00007fff54dff000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f289e635000)
libutempter.so.0 => /usr/lib/libutempter.so.0 (0x00007f289e432000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f289e072000)
/lib64/ld-linux-x86-64.so.2 (0x00007f289e861000)

테스팅

실행하기 전에 script

john@U64D211:~/tmp/util-linux-2.20.1/term-utils$ ls /dev/pts
0  1  5  8  ptmx
john@U64D211:~/tmp/util-linux-2.20.1/term-utils$ last -i
john     pts/0        0.0.0.0          Sat Jan  5 09:09   still logged in   
reboot   system boot  0.0.0.0          Sat Jan  5 09:08 - 10:37  (01:28)    
john     pts/0        0.0.0.0          Thu Jan  3 00:50 - 01:42  (00:52)    
reboot   system boot  0.0.0.0          Thu Jan  3 00:48 - 01:43  (00:54)    

wtmp begins Tue Jan  1 20:48:28 2013

이내에 script

john@U64D211:~/tmp/util-linux-2.20.1/term-utils$ ./script
Script started, file is typescript
john@U64D211:~/tmp/util-linux-2.20.1/term-utils$ ls /dev/pts
0  1  2  5  8  ptmx
john@U64D211:~/tmp/util-linux-2.20.1/term-utils$ last -i
john     pts/2        0.0.0.0          Sat Jan  5 10:37   still logged in   
john     pts/0        0.0.0.0          Sat Jan  5 09:09   still logged in   
reboot   system boot  0.0.0.0          Sat Jan  5 09:08 - 10:37  (01:29)    
john     pts/0        0.0.0.0          Thu Jan  3 00:50 - 01:42  (00:52)    
reboot   system boot  0.0.0.0          Thu Jan  3 00:48 - 01:43  (00:54)    

wtmp begins Tue Jan  1 20:48:28 2013
john@U64D211:~/tmp/util-linux-2.20.1/term-utils$ exit
exit
Script done, file is typescript

script

john@U64D211:~/tmp/util-linux-2.20.1/term-utils$ ls /dev/pts
0  1  5  8  ptmx
john@U64D211:~/tmp/util-linux-2.20.1/term-utils$ last -i
john     pts/2        0.0.0.0          Sat Jan  5 10:37 - 10:37  (00:00)    
john     pts/0        0.0.0.0          Sat Jan  5 09:09   still logged in   
reboot   system boot  0.0.0.0          Sat Jan  5 09:08 - 10:37  (01:29)    
john     pts/0        0.0.0.0          Thu Jan  3 00:50 - 01:42  (00:52)    
reboot   system boot  0.0.0.0          Thu Jan  3 00:48 - 01:43  (00:54)    

wtmp begins Tue Jan  1 20:48:28 2013
john@U64D211:~/tmp/util-linux-2.20.1/term-utils$ last
john     pts/2                         Sat Jan  5 10:37 - 10:37  (00:00)    
john     pts/0        :0               Sat Jan  5 09:09   still logged in   
reboot   system boot  3.2.0-35-generic Sat Jan  5 09:08 - 10:38  (01:30)    
john     pts/0        :0               Thu Jan  3 00:50 - 01:42  (00:52)    
reboot   system boot  3.2.0-35-generic Thu Jan  3 00:48 - 01:43  (00:54)    

wtmp begins Tue Jan  1 20:48:28 2013

Emtpy 호스트 이름의 근본 원인

예, 빈 호스트 이름으로 항목을 script.c작성하십시오 wtmp. util-linux-2.20.1/term-utils/script.c줄 에서 다음 코드 블록을보십시오 : 245-247

#ifdef HAVE_LIBUTEMPTER
    utempter_add_record(master, NULL);
#endif

에 기초 libutempter-1.1.5/utempter.h

extern int utempter_add_record (int master_fd, const char *hostname);

그래서 script.c사실에 빈 호스트 이름을 통과한다 utempter_add_record.

레드햇 백 포트

흥미로운 점은 업스트림이 util-linux-ng-2.17.2실제로 지원하지 않는다는 것입니다 libutempter. Redhat은이 지원을 다시 추가하기로 결정했습니다.

john@U64D211:~/tmp/util-linux-ng-2.17.2$ ./configure --help|grep utemp

위 명령은 빈 결과를 반환합니다.

결론

따라서 두 배포판의 동작 차이는 버그가 아니라 선택입니다. RedHat은이 기능을 지원하기로 결정했지만 데비안은이 기능을 건너 뛰었습니다.


CentOS 5는 어떻습니까?
ewwhite

@ewwhite coreutilsCentOS 5에서 사용 중인 rpm 버전 을 알려주시겠습니까 ? 소스 코드를 확인해야합니다.
John Siu

필요 없음. libutempterEL4 (경유에 연결되지 않습니다 ldd)하지만이 되어 EL5 및 EL6에 연결 script명령. coreutilsEL4 에서 2007 RHEL 5 가 버전 5.2.1로 도입 된 이후로 Red Hat과 유사한 시스템 에이 기능이 변경되었을 수 있습니다 . EL5에서는 버전 5.97입니다.
ewwhite

내가 참조. BTW script는 util-linux에 있습니다.
John Siu

1
@ JohnSiu : 예, 그것이 차이점의 이유입니다.보고 된 버그를 수정하고 (의도적으로) 새로운 버그를 만든 것 같습니다.
user9517은 GoFundMonica을 지원합니다.

12

이것은 나에게 절대적으로 수수께끼처럼 보인다. DNS 이름이나 IP 주소를 사용해야합니다. last.c파일도 확인 했지만 여전히 아무것도 표시되지 않는 이유를 찾을 수 없습니다. 아마도 시간이 주어지면 약 0.0.0.0 부분을 알아낼 수 있습니다.

int dns_lookup(char *result, int size, int useip, int32_t *a)
307 {
308     struct sockaddr_in  sin;
309     struct sockaddr_in6 sin6;
310     struct sockaddr     *sa;
311     int         salen, flags;
312     int         mapped = 0;
313 
314     flags = useip ? NI_NUMERICHOST : 0;
315 
316     /*
317      *  IPv4 or IPv6 ?
318      *  1. If last 3 4bytes are 0, must be IPv4
319      *  2. If IPv6 in IPv4, handle as IPv4
320      *  3. Anything else is IPv6
321      *
322      *  Ugly.
323      */
324     if (a[0] == 0 && a[1] == 0 && a[2] == htonl (0xffff))
325         mapped = 1;
326 
327     if (mapped || (a[1] == 0 && a[2] == 0 && a[3] == 0)) {
328         /* IPv4 */
329         sin.sin_family = AF_INET;
330         sin.sin_port = 0;
331         sin.sin_addr.s_addr = mapped ? a[3] : a[0];
332         sa = (struct sockaddr *)&sin;
333         salen = sizeof(sin);
334     } else {
335         /* IPv6 */
336         memset(&sin6, 0, sizeof(sin6));
337         sin6.sin6_family = AF_INET6;
338         sin6.sin6_port = 0;
339         memcpy(sin6.sin6_addr.s6_addr, a, 16);
340         sa = (struct sockaddr *)&sin6;
341         salen = sizeof(sin6);
342     }
343 
344     return getnameinfo(sa, salen, result, size, NULL, 0, flags);
345 }

문맥에서 사용되는 두 가지 전역 변수는 다음과 같습니다.

int usedns = 0;     /* Use DNS to lookup the hostname. */
72 int useip = 0;       /* Print IP address in number format */

따라서 이론적으로 dns 또는 IP를 사용해야합니다.

더 파헤칠 수 있는지 살펴 보겠습니다. 그러나 ewwhite가 요구 한 것은 유효한 질문입니다.


1
문제의 명령에 대한 실제 소스 코드를 파고 들어 오면 +1입니다.
Chris Smith

훌륭한 정보입니다. 이것은 제가 찾고있는 권위있는 소스입니다. 코드를 찾기 위해 열심히 노력해 주셔서 감사합니다.
Mike Pennington

8

희망이 당신에게 적어도 줄 것이다 디버거에서 마지막으로 내가 한으로 실행 그래서 몇 가지 질문에 대한 답을. 내 감정은 근본 원인이 더 깊습니다.

pts 행 항목에 last -i가 0.0.0.0을 표시하는 이유

이것을 설명하는 가장 좋은 방법은 -i를 전달 하지 않으면 어떻게되는지 입니다.

그 이유는이 코드 섹션에 있습니다. last.c

if (usedns || useip)
  r = dns_lookup(domain, sizeof(domain), useip, p->ut_addr_v6);
if (r < 0) {
   len = UT_HOSTSIZE;
   if (len >= sizeof(domain)) len = sizeof(domain) - 1;
   domain[0] = 0;
   strncat(domain, p->ut_host, len);
}

둘 다 usednsuseip(기본 옵션을 사용하여)는 플래그가되지 않습니다. 이 구조체 밖으로 복사 할 논리를 원인 p->ut_host에 따라 man utmp에 쓴 무엇에 의해 기록 된 원격 로그인 이름을 포함합니다 utmp.

char ut_host[UT_HOSTSIZE]; /* Hostname for remote login, or
                              kernel version for run-level
                              messages */

귀하의 경우 여기의 값은 0입니다. 이것이 당신이 last아무것도 달리지 않을 때 나타나는 이유 입니다.

이 경우 last -idns_lookup이 호출됩니다. 이것은 DNS를 통해 해결하기 위해 항목 (p-> ut_addr_v6)을 전달합니다. 귀하의 경우이 값 에는 0 포함됩니다.

대부분 dns_lookup은 창 드레싱과 heusteric입니다. 기본적으로 중요한 것은 기능 getnameinfo입니다. 이것은이 경우에 저장된 이진 값을 해결하기 위해 최선을 다할 라이브러리 호출입니다 ut_addr_v6. 이 항목에 0이 포함되어 있으면 (예 : 경우와 같이) 실제로 출력에서 0.0.0.0발생 하는 것과 같이 이것을 해결합니다 last -i.

행동을 합리적으로 설명 할 수있는 (악의적 인 활동 이외의) 것이 있습니까?

글쎄요, 아마도 버그 나 감독 일 것입니다. 이 떠나 바보 보이기 때문에 그 가능성은 악성하기 위해 어떤 오히려 소스 주소를 생략보다 공격자로 추적을.

지금까지 답변의 초점은 잘못된 장소를보고있었습니다. last단지 읽고 utmpwtmp. 그러나 last가지고있는 데이터로 최선을 다하고 있습니다.

당신의 근본 원인은 utmp쓰여지는 방식에 어딘가에 있습니다 !

몇 가지 응용 프로그램이 직접 작성하는 동안 utmp문제의 원인 sshd이 세션 관리를 처리하는 것 같습니다.

배쉬 히스토리 타임 스탬프 외에, 이슈를 추적하기 위해 할 수있는 다른 것들이 있습니까?

utmp일반적으로 쓰기 가능하지 않으며 의미가 없습니다. utmp당신을 로그인하고 세션을 설정하도록 설계된 응용 프로그램에 의해 작성됩니다. 귀하의 경우는입니다 sshd.

sshd가 사용자를 올바르게 처리하지 않는 이유는 사용자가 온 호스트 이름을 올바르게 복사해야하기 때문에 매우 이상합니다. 디버깅 노력에 집중해야 할 곳입니다. 로그에 sshd의 디버그 출력을 추가하고 이상이 있는지 확인하십시오.

문제를 해결하려면 (또는 문제에 대한 자세한 내용을 알고 싶다면) /etc/pam.d/sshd 의 세션 항목 에 추가 pam_lastlog하여 관리 할 수 있습니다 .utmp

사실, 이미 존재하는지 확인하는 것은 아프지 않을 것입니다. 경험하는 행동을 분명히 설명 pam_lastlog하는 nohost옵션이 포함되어 있기 때문 입니다.

마지막으로, 당신은 전혀 마지막으로 사용할 수 없습니다. aulast감사 서브 시스템을 통해 동일한 작업을 수행합니다.

그것이 올바른 주소를 쓰는 데 성공했는지 살펴볼 가치가 있습니다. 그렇지 않은 경우 sshd가 utmp 또는 audit와 같은 다른 하위 시스템 주위에 DNS 이름을 전달하므로 문제 sshd에 있어야합니다 .


pam_lastlog위에서 언급 한대로 사용 방법에 대한 특정 지침을 추가 할 수 있습니까?
Mike Pennington

8

(1) OP last출력 기반

ssh를 통해 로그인 한 후, localhost에 ssh last -i하고 나중에 0.0.0.0을 얻을 수 있습니다 .

OP 로그의 처음 네 줄 기준

mpenning pts/19                        Fri Nov 16 10:32 - 10:35  (00:03)
mpenning pts/17                        Fri Nov 16 10:21 - 10:42  (00:21)
bill     pts/15       sol-bill.local   Fri Nov 16 10:19 - 10:36  (00:16)
mpenning pts/1        192.0.2.91       Fri Nov 16 10:17 - 10:49 (12+00:31)

pts/19로그인 pts/17기간 내에있었습니다 .

pts/17로그인 pts/1 기간 내에있었습니다 .

이 특정 상황의 경우 OP ssh가 192.0.2.91 ( pty/1) 에서 추측 한 다음 해당 ssh 세션 내에서 로컬 ( ssh localhost) 서버에 다시 로그인 ( pts/17) 및 다시 ( pts/19) 하는 것이 논리적 입니다.

이 중복이 다른 발생과 함께 발생하는지 확인하십시오.

다음은 원인을 정확히 찾아내는 데 도움이 될 수 있습니다

  • ssh-key를 사용하십니까? 그렇다면 서버에서 로컬로 로그인하도록 ssh-key를 설정 했습니까?
  • 동일한 시간대의 / var / log / secure를 확인하거나 게시하십시오. 힌트를 줄 수 있습니다.
  • 사용하는 스크립트 확인
  • 사용하는 쉘 별명 확인
  • 명령 내역 확인

(2) 추가 시나리오

시나리오 1-sudo 및 터미널

  1. UserA 로그인 X 창
  2. 터미널 창을 열고 xhost + localhost
  3. su - UserB또는 sudo su - UserB새로운 터미널을 엽니 다 (xterm, gnome-terminal 등)
  4. UserB 0.0.0.0으로 표시됩니다 last -i

su - UserBUserB마지막 으로 로그인으로 등록하지 않지만 터미널을 열면됩니다.

시나리오 2-로그인

  1. 서버로 ssh
  2. 유형 sudo login
  3. 자신으로 로그인
  4. 확인 last하고last -i

last의 호스트 이름 또는 IP를 표시하지 않습니다 login session. last -i의 IP 0.0.0.0이 login session됩니다.

john@U64D211:~$ last -5
john     pts/0                         Sun Dec 23 20:50   still logged in   
john     pts/0                         Sun Dec 23 20:50 - 20:50  (00:00)    
john     pts/0        :0               Sun Dec 23 20:50 - 20:50  (00:00)    
reboot   system boot  3.2.0-35-generic Sun Dec 23 20:49 - 20:50  (00:01)    
john     pts/2        js.example.com   Sun Dec 23 17:14 - crash  (03:34)    

wtmp begins Sat Dec  1 06:30:46 2012
john@U64D211:~$ last -5i
john     pts/0        0.0.0.0          Sun Dec 23 20:50   still logged in   
john     pts/0        0.0.0.0          Sun Dec 23 20:50 - 20:50  (00:00)    
john     pts/0        0.0.0.0          Sun Dec 23 20:50 - 20:50  (00:00)    
reboot   system boot  0.0.0.0          Sun Dec 23 20:49 - 20:50  (00:01)    
john     pts/2        192.168.1.90     Sun Dec 23 17:14 - crash  (03:34)    

wtmp begins Sat Dec  1 06:30:46 2012

Mife 의 답변은 이미 코드 블록을 보여줍니다 last.c. last빈 호스트 이름 / IP가 표시 되는 이유 는 ut_host해당 레코드가 실제로 비어 있기 때문 입니다 . 완전한 wtmp 구조를 위해서는 man wtmp모든 Linux 시스템에서 수행하십시오.

이 두 시나리오는 특정 상황에서 표준 패키지조차도 그렇게 만드는 것을 보여줍니다.

(3) 배쉬 히스토리 해킹

세션 bash이 대화식 쉘로 사용 되는 경우에만 작동합니다 .

.bashrc그리고 .bash_profile만에 의해 사용됩니다 bash.

세션이 다른 쉘 (sh, csh 등)을 사용하거나 프로그램을 직접 실행하면 자동으로 소싱되지 않으며 bash 기록이 없습니다.

(4) 프로세스 회계

OP는 secure파일에 대해 언급하지 않았으므로 막 다른 골목이라고 가정하고 실제로 힌트를 제공합니다.

다음 가정이 맞다면

`last` 0.0.0.0 entries are actually created with in OP own session

auth.log (debian) / secure (CentOS)는 도움이되지 않습니다. 인증 관련 작업 만 기록되어 있습니다.

데이터 구조에 제한이있는 wtmp / utmp 또한 막 다른 골목입니다. 그것들을 만든 것에 대한 정보가 없습니다.

프로세스 회계라는 하나의 옵션 만 남게 됩니다. 이것은 큰 총이므로주의해서 사용해야합니다.

  1. 회사 정책에 어쩌면
  2. 공유 시스템의 다른 사용자가 활성화되어 있으면 불행하거나 불편할 수 있습니다.
  3. 로그 파일은 많은 디스크 공간을 사용할 수 있습니다. 파일 크기 증가율을 주시하십시오.

게시물 에 따르면 psacct 패키지 버전은 6.3.2-56 이상 이어야합니다 .

이것이 사용 /var/log되며 공간이 제한되어 있으면 acct 로그 파일을 아래의 디렉토리 (루트 전용 액세스)로 변경하십시오 /home. 일반적으로 훨씬 더 많은 공간이 있습니다.

이것은 정말로 큰 총입니다. OP 10 % 발생률로 일주일 이내에 결과가 발생합니다. 이 기간 동안 빈 항목이 표시 last되지만 acct 로그에 아무것도 표시 되지 않으면 수수께끼 상황 이되고 과감한 조치 가 필요 합니다 .

다음은 샘플 출력입니다 lastcomm

lesspipe               john     pts/8      0.02 secs Mon Dec 24 17:10
lesspipe          F    john     pts/8      0.00 secs Mon Dec 24 17:10
dirname                john     pts/8      0.00 secs Mon Dec 24 17:10
basename               john     pts/8      0.00 secs Mon Dec 24 17:10
kworker/1:2       F    root     __         0.00 secs Mon Dec 24 16:54
tty                    john     pts/6      0.01 secs Mon Dec 24 17:09
tty                    john     pts/4      0.01 secs Mon Dec 24 17:09
cron              F    root     __         0.05 secs Mon Dec 24 17:09
sh               S     root     __         0.01 secs Mon Dec 24 17:09
find                   root     __         0.01 secs Mon Dec 24 17:09
maxlifetime            root     __         0.00 secs Mon Dec 24 17:09
php5                   root     __         0.23 secs Mon Dec 24 17:09
which                  root     __         0.00 secs Mon Dec 24 17:09
lastcomm               root     pts/0      0.01 secs Mon Dec 24 17:08
tty                    john     pts/1      0.01 secs Mon Dec 24 17:08
dconf worker         X john     __         5.46 secs Mon Dec 24 16:58
lastcomm               root     pts/7      0.04 secs Mon Dec 24 17:05
mesg             S     root     pts/7      0.00 secs Mon Dec 24 17:05
bash              F    root     pts/7      0.00 secs Mon Dec 24 17:05
dircolors              root     pts/7      0.00 secs Mon Dec 24 17:05

'dump-acct'를 사용하여 자세한 정보를 표시 할 수도 있습니다.

PS1 : 몇 개의 터미널과 ssh 세션을 열려고했습니다. 새로운 pt를 여는 것이 분명하지 않습니다 (또는 정확히 파악하기 쉽지 않음). 그러나 해당 pt / 세션 내에서 실행 된 모든 내용이 표시됩니다.

PS2 : Mike의 acct 사용에 관한 블로그 게시물.


localhost 로그인이 0.0.0.0을 생성하는 방법을 모르겠습니다. 항상 localhost로 표시됩니다. ssh로만 로그인하면 로컬 로그인의 의미를 알 수 없습니다.
Mike Pennington

제발 ssh localhost및 확인 last -i.
John Siu

에 관해서는 login locally, 나는 ssh localhost그 ssh 세션 내에서하는 것을 의미 합니다. 나는 그 문장을 수정했다. 혼란이 덜하길 바란다.
John Siu

추가 시나리오가 추가되었습니다.
John Siu

5

머신에 로그인 할 때 마지막 명령에서이 항목이 적을 수 있습니다.

geekride   tty2                        Fri Dec 21 15:45 - 15:45  (00:00)    
geekride   pts/1                       Fri Dec 21 13:45   still logged in   
geekride   pts/1        :pts/0:S.0     Thu Dec  6 12:49 - 00:40  (11:50)    
geekride   pts/1        10.31.33.47    Thu Dec  6 12:49 - 00:40  (11:50)    

CTRL + ALT + F1-6을 눌러 터미널이나 콘솔을 통해 로그인하면 tty *의 첫 번째 항목이 나타납니다. 사용중인 터미널에서 꽤 분명합니다.

두 번째 항목은 일반적으로 머신에 로그인하고 GUI에서 터미널 창을 열 때 나타납니다. 동일한 터미널 창에서 새 탭을 열어도 항목이 있습니다.

SSH를 통해 로그인 한 후 화면 세션을 열면 세 번째 유형의 항목이 제공됩니다. 또한 IP 주소가없는 항목이 생성됩니다.

네 번째 항목은 모두가 이해하는 매우 정상적인 것입니다.

당신이 경우에 last -i다음과 같은 항목으로,이 같은 것을 볼 것입니다 :

geekride   tty2         0.0.0.0        Fri Dec 21 15:45 - 15:45  (00:00)    
geekride   pts/9        0.0.0.0        Fri Dec 21 13:45   still logged in   
geekride   pts/1        0.0.0.0        Thu Dec  6 12:49 - 00:40  (11:50)    

귀하의 사례는 GUI의 터미널 윈도우가있는 화면과 화면 세션이있는 두 가지 경우 중 하나에 해당한다고 확신합니다.

이것이 도움이 되었기를 바랍니다.


2
나는 GUI 또는 사용하지 않은 screen의 어떤을 위해 0.0.0.0항목을. 기계를 설치할 때만 (8 월 / 9 월경) GUI를 사용합니다. 그 0.0.0.0후 많은 pt 항목이 표시됩니다.
Mike Pennington

1
이것은 정말 유용하고 내가 가진 정말 오래된 의심을 거의
없애

3

나는 우리가 last.c를 디버깅하지 않고 이것으로 멀리 갈 것이라고 생각하지 않지만, 쉽게 컴파일되므로 너무 어렵지 않아야합니다 ...

한 가지 가능성은 utmpdump 명령을 사용하여 / var / log / wtmp 파일을 덤프 하고 원시 레코드를 살펴보면 약간의 도움이 될 수 있습니다. 그렇지 않은 경우 관련 출력을 게시하십시오

utmpdump /var/log/wtmp 

디버깅을 위해 wtmp의 로컬 복사본을 다시 만들 수 있습니다.

utmpdump -r <dumpfile >wtmp

이것은 대답이 아닌 것처럼 보이지만 실제로는, 우리는 이것을 아는 사람들의 시점을 넘어 실제로 디버깅을 받아야합니다.
user9517은 GoFundMonica를 지원합니다.

환경에 따라 다릅니다. 나는 이러한 서버를 충분히 운영하며 정상적인 활동의 조합으로 동작을 재현 할 수 없습니다.
ewwhite

@ ewwhite : 나도 몇 개있어서 찾을 수 없습니다.
user9517은

@ewwhite CentOS 머신 몇 대를 직접 시험해보고이 상자 중 약 300 개를 관리하는 동료들에게 물었습니다. 그들은 전에도 본 적이 없었습니다.
Tonny

3

12 개의 다중 사용자 CentOS 및 RHEL 6.3 기반 응용 프로그램 서버를 확인했습니다. 이 행동은 보이지 않았다. last4-5 주로 돌아가는 출력에 누락 된 항목이 없습니다 .

/etc/hosts파일 형식이이 형식을 따르는 지 확인하는 것이 중요하다고 생각 합니다 .

또한 DNS 확인을 위해 무엇을하고 있습니까? 당신은 게시 할 수 /etc/resolv.conf있습니까?

0.0.0.0로컬 연결 을 나타내는 다른 응답 이 정확합니다. 일반적인 예는 재부팅 및 콘솔 로그인 이벤트입니다.

 reboot   system boot  0.0.0.0          Sat Dec  8 06:12 - 05:57 (12+23:45)  
 reboot   system boot  0.0.0.0          Sat Dec  8 05:25 - 06:09  (00:44)    
 reboot   system boot  0.0.0.0          Fri Nov 30 14:28 - 05:22 (7+14:54)   
 root     tty1         0.0.0.0          Fri Nov 30 13:52 - 13:55  (00:03)    
 reboot   system boot  0.0.0.0          Fri Nov 30 13:51 - 14:25  (00:34)    

이것은 이름이 지정된 사용자에게만 발생하는 것 같으므로 로그인 스크립트에서 펑키 한 소스가 있거나 변경되는 것이 있습니까? 당신은 변경 ~/.bashrc또는 ~/.bash_profile기본에서? 환경에 다른 특수 로그인 스크립트가 있습니까?

--편집하다--

나는 여전히 어떤 식 으로든 이것을 재현 할 수 없습니다. 그래도 두 가지 중요한 구성 요소를 봅니다. last명령은 안정적이고 오랫동안 변경되지 않았습니다. sysvinit-tools 의 변경 로그를 보면 관련 버그가 없습니다. 초기화 스크립트 (wtmp) 와 동일합니다 .

이 작업을 강제로 수행 할 수 있으면 동일한 소스 시스템의 다른 사용자 계정으로 시도하십시오. 그러나 이것이 OS 문제라는 표시는 없습니다.


로컬 환경에 대한 질문과 관련하여 ... 내 질문에 대한 최신 수정 사항을 참조하십시오 ... 내 외에 다른 사용자는이 문제를 가지고 있지 않습니다. 따라서 전역 구성 (예 :) /etc/hosts은 모든 사람에게 영향을 미쳐야합니다. 그냥 저
마이크 Pennington

이것이 발생한 기간을 아는 것이 도움이 될 것입니다. 로그 스 니펫이 한 달 전입니다. 재현 할 수 있습니까? 모든 서버에서 발생합니까? wtmp 파일이 회전 된 경우 wtmp 및 wtmp1이있을 수 있습니다. last -if두 파일 모두에 대해 실행할 수 있으며 시간이 지남에 따라 동일한 결과가 나타나는지 확인할 수 있습니까?
ewwhite

또한 명령을 실행하고 있습니까? (p) sftp (p) scp? 귀하의 IP가 아닌 세션은 더 긴 세션 기간 내에 발생하기 때문에 묻습니다. 귀하의 예에서 192.0.2.91에서 여러 연결을 열었습니까?
ewwhite

좋은 질문입니다 ... 오늘 도착하는 손님을 위해 준비해야하지만 이번 주말에 세부 사항에 답변하기 위해 노력할 것입니다.
Mike Pennington

때로는 무료 WinSCP 클라이언트를 통해 scp 및 sftp를 사용합니다. 그러나 그 항목은 유효한 항목을 생성 /var/log/secure합니다 ... 0.0.0.0아무것도 표시되지 않는 항목/var/log/secure
Mike Pennington

3

최종 해상도

나는 이미 보너스를 수여했기 때문에 이것은 동일한 질문을 가진 미래의 Google 직원을위한 것입니다.

이것이 로그인의 ~ 10 %에만 나타나는 이유는 라우터 나 스위치를 크게 변경할 때 사용하기 때문에 변경에 script foo.log대한 완전한 터미널 로그를 가지기 때문입니다. 여전히 이해하지 못하는 이유로 CentOS ptsscript명령 을 사용할 때 항목을 생성합니다 ... last -i실행 전후 의 결과를 보여 드리겠습니다 script...

[mpenning@sasmars net]$ last -i | head
kkim14   pts/13       192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/12       192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/10       192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/9        192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/5        192.0.2.225   Wed Jan  2 09:43   still logged in
mpenning pts/17       192.0.2.29    Mon Dec 31 16:45 - 16:49  (00:03)
gduarte  pts/16       192.0.2.135   Thu Dec 27 10:54   still logged in
gduarte  pts/14       192.0.2.135   Thu Dec 27 10:44   still logged in
dspencer pts/14       192.0.2.4     Thu Dec 27 09:56 - 09:57  (00:01)
mpenning pts/14       192.0.2.91    Thu Dec 27 08:31 - 08:32  (00:00)
[mpenning@sasmars net]$ script ~/something_random.log
Script started, file is /home/mpenning/something_random.log
[mpenning@sasmars net]$ date
Thu Jan  3 16:14:19 CST 2013 # <--------------------------------------------------
[mpenning@sasmars net]$ exit
exit
Script done, file is /home/mpenning/something_random.log
[mpenning@sasmars net]$ last -i | head
mpenning pts/15       0.0.0.0          Thu Jan  3 16:14 - 16:14  (00:00) # <------
kkim14   pts/13       192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/12       192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/10       192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/9        192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/5        192.0.2.225   Wed Jan  2 09:43   still logged in
mpenning pts/17       192.0.2.29    Mon Dec 31 16:45 - 16:49  (00:03)
gduarte  pts/16       192.0.2.135   Thu Dec 27 10:54   still logged in
gduarte  pts/14       192.0.2.135   Thu Dec 27 10:44   still logged in
dspencer pts/14       192.0.2.4     Thu Dec 27 09:56 - 09:57  (00:01)
[mpenning@sasmars net]$ cat /etc/redhat-release
CentOS release 6.3 (Final)
[mpenning@sasmars net]$

이 동작은 CentOS 6에 고유 한 것 같습니다. 실험실에 빈 엔트리를 넣지 않은 CentOS 4.7 머신 wtmp이 있습니다. 데비안 / 젠투 머신도이 동작을 나타내지 않습니다. 우리의 리눅스 관리자는 CentOS가 왜 pts당신이 실행될 때 다른 항목을 추가하는 이유에 대해 머리를 긁고 있습니다 script... 이것이 RHEL 버그라고 생각합니다.

편집 :이 문제를 RHEL 버그 ID 892134 로 제출했습니다.

노트

일부 사람들은 script내가 ~/.bashrc또는에 넣었다고 잘못 가정했습니다 ~/.bash_profile. 이것은 잘못된 주장입니다 ... 그것이 사실이라면, 내 ssh 로그인마다 하나의 항목을 wtmp가져야 0.0.0.0합니다 ...

[mpenning@sasmars net]$ last -i | head
kkim14   pts/13       192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/12       192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/10       192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/9        192.0.2.225   Wed Jan  2 09:43   still logged in
kkim14   pts/5        192.0.2.225   Wed Jan  2 09:43   still logged in
mpenning pts/18       0.0.0.0       Mon Dec 31 16:45 - 16:49  (00:03)  # <-----
mpenning pts/17       192.0.2.29    Mon Dec 31 16:45 - 16:49  (00:03)  # <-----
gduarte  pts/16       192.0.2.135   Thu Dec 27 10:54   still logged in
gduarte  pts/14       192.0.2.135   Thu Dec 27 10:44   still logged in
dspencer pts/14       192.0.2.4     Thu Dec 27 09:56 - 09:57  (00:01)
mpenning pts/15       0.0.0.0       Thu Dec 27 08:31 - 08:32  (00:00)  # <-----
mpenning pts/14       192.0.2.91    Thu Dec 27 08:31 - 08:32  (00:00)  # <-----

물론 그렇지 않았습니다 ...


3
당신은 당신이 script당신의 초기 질문에 명령을 사용하고 있다고 언급하지 않았습니다 .
ewwhite

2
내가 물었다 기본적에서 ~ / .bashrc에 또는 ~ / .bash_profile을 변경 한을? 환경에 다른 특수 로그인 스크립트가 있습니까? . 이 script프로그램은 터미널에 인쇄 된 모든 것을 타이프 스크립트로 만듭니다 . 적절한 세부 사항입니다.
ewwhite

2
당신이 공격을 중단하고 비판적으로 생각하기 시작하는 그것의 시간을 @ewwhite ... 1) 당신은 가정하는 스크립트 내에서 있었다 .bashrc또는 .bash_profile이 아니었다; script foo.log변경 로그를 가질 수 있도록 주요 변경을 수행 할 때 실행 됩니다. 즉, 로그인의 ~ 10 %에만 영향을 미치는 이유 2) 귀하의 고발이 정확하고 그렇지 않은 경우에는 ssh 로그인이 없습니다. 그것은 또 다른하지 않았다 0.0.0.0가 3) 직후에 진입 script가능성에 CentOS 만에 CentOS에서이 작업을 수행 ... 나는 십 년간을 위해 그것을 사용하고 나는 그것을 주장하고있어이 시점에서 ... 다른 배포판에서이 동작을 본 적이을 버그
Mike Pennington

1
업데이트 해 주셔서 대단히 감사합니다. 우분투 12.04에서 테스트했으며 script껍질 만 포크합니다. 여기에 표시된 내용을 기반으로 CentOS / Redhat 버전의 script실제 포크를 먼저 포크하십시오. 조금 더 실망 스럽지만 (: P) 그것이 더 일반적인 / 전체 배포판이 아닌 것이지만, 적어도 미스터리는 내 마음에서 사라졌습니다. 추신 : 당신이 생산 @. @에서 젠투를 가지고 놀랐습니다
John Siu

1
@ MikePennington : Fedora BTW에도 있으며 Michael Hampton이 저를 확인합니다.
user9517은 GoFundMonica를 지원합니다.

2

Pseudo Terminal Slave (pts) 연결은 시스템에 대한 간접 연결을 의미하는 SSH 또는 텔넷 연결입니다. 이러한 모든 연결은 셸에 연결하여 컴퓨터에 명령을 실행할 수 있습니다. 따라서 GUI에서 시스템의 터미널을 열면 소스 ip 0.0.0.0으로 pts가 열립니다. 귀하가 제공 한 정보 에서이 서버에서 실행되거나 예약 된 스크립트 때문에 ssh 또는 telnet 서비스 또는 로컬 pts를 사용하여 터미널에 출력을 던지는 것으로 보입니다.


나는 GUI를 사용하지 않는다
Mike Pennington

2

어떤 ssh 클라이언트를 사용하십니까? 일부 ssh 클라이언트는 하나의 연결을 통해 여러 터미널을 다중화 할 수 있으며 IP가없는 모든 세션은 기록 된 IP가있는 더 긴 세션에 속합니다.

이 동작을 ssh로 복제 할 수 없습니다.


나는 보통 현재 1.4.0.1 버전에서 superputty를 사용 하고있다. 그러나 나는 평범한 퍼티 에서도이 문제를 보았다
Mike Pennington

1

아마도 IP 주소는 DNS 서버 중 하나에서 빈 문자열로 확인 될 것입니다. 10 % 만 발생하면 보조 서버이거나 중앙 저장소에서 배포 된 경우 호스트 파일 일 수도 있습니다. 이는 누락 된 (또는 공백) 항목을 설명하고 Soham의 소스 읽기와 일치합니다.


0

"0.0.0.0"은 응용 프로그램 (예 : cronjob)에 의해 호출 된 로컬 사용자 (원격 로그인이 아님)임을 의미합니다.


이 답변 은 잘못 보입니다 ... 내 로그의 모든 0.0.0.0 항목 이 pts 줄에 있습니다.
Mike Pennington

그것은 내 시스템의 예와 같은 정답입니다.# last -i |grep 0.0.0.0 \ reboot system boot 0.0.0.0 Wed Dec 5 20:09 - 17:18 (15+21:08) # last |grep reboot \ reboot system boot 2.6.32-10-pve Wed Dec 5 20:09 - 17:18 (15+21:08)
alterpub

@alterpub, ssh로만 로그인합니다. 다른 사람이 나에게 공식 문서를 보여줄 수 없다면 0.0.0.0은 유효한 ssh pty 항목이 아닙니다 .
Mike Pennington

0

로컬 시스템을 사용하고 0.0.0.0은 모든 인터페이스의 IP 주소를 의미하기 때문에 발생합니다. 누군가 해킹했다고 생각되면 ssh- http : //blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger/ 를 통해 명령을 포함하여 쉘의 전체 로깅을 설정하려고합니다.


"로컬 시스템을 사용한다"는 것은 무슨 뜻입니까? 제 질문을 자세히 읽으십시오 ... 나는 ssh 로만 로그인합니다. 0.0.0.0이 ps에 대한 ssh 로그인에 유효한 항목이라는 것을 제안하고 있습니까?
Mike Pennington

-1

~ / .bashrc에 스크립트를 추가하여 스크립트가 마지막 텔넷 연결 소스 IP 주소를 찾은 다음 해결했습니다. 그런 다음 IP를 로그 파일에 추가하거나 필요한 작업을 수행 할 수 있습니다.

client_ip=$(echo $(netstat -nae | grep $(netstat -nae | grep 23 | awk  '{print $8}' | sort -n | tail -n1) | awk '{print $5}') | awk -F':' '{print $1}' )

echo "client_ip=$client_ip"

샤론


1
이 대답은 나에게 의미가 없습니다. 토론은 텔넷에 관한 것이 아닙니다. netstat -nae | grep 23텔넷 연결을 찾는 유용한 방법은 아닙니다. 이 명령은 내 시스템에서 92 개의 결과를 제공하지만 텔넷은 아닙니다.
Hauke ​​Laging 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.