पीटी लॉगिन पर `अंतिम` आउटपुट में आईपी जानकारी गुम होने का कारण?


18

मेरे पास काम पर पांच 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 मशीनों में छह अन्य उपयोगकर्ता हैं जो सिस्टम साझा करते हैं। मेरे लगभग 10% लोग इस मुद्दे को देखते हैं, लेकिन कोई अन्य उपयोगकर्ता इस व्यवहार को प्रदर्शित नहीं करता है/var/log/secureस्रोत आईपी पते के बिना प्रविष्टियों के लिए कोई प्रविष्टि नहीं है ।

प्रशन

इन प्रणालियों (जिस पर हम अपने नेटवर्क के बुनियादी ढांचे को बहुत नियंत्रित करते हैं) पर इस तरह की लिपियों को देखते हुए, मैं इससे थोड़ा प्रभावित हुआ हूं और यह समझना चाहूंगा कि क्या मेरे लॉगिन कभी-कभार स्रोत पते को मिस कर देते हैं।

  • Pts लाइन प्रविष्टियों के लिए क्यों last -iदिखाता है ( यह उत्तर भी देखें )0.0.0.0
  • क्या कुछ भी है (दुर्भावनापूर्ण गतिविधि के अलावा) जो व्यवहार को उचित रूप से समझाएगा?
  • बैश इतिहास टाइमस्टैम्पिंग के अलावा, क्या अन्य चीजें हैं जो मैं इस मुद्दे को ट्रैक करने के लिए कर सकता हूं?

सूचना

चूंकि यह होने लगा था, इसलिए मैंने bashइतिहास के समय-स्टैम्पिंग (यानी ) HISTTIMEFORMAT="%y-%m-%d %T "में सक्षम किया .bash_profileऔर कुछ अन्य बैश इतिहास हैक भी जोड़े ; हालाँकि, पिछली घटनाओं के दौरान जो हुआ उसका सुराग नहीं देता है।

सभी सिस्टम 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 के माध्यम से दर्ज की गई प्रविष्टियों को समझाने के लिए आधिकारिक संदर्भों का हवाला देना चाहिए last -i 0.0.0.0

EDIT 2 (ewwhite के सवालों के लिए)

/etc/resolv.conf(ध्यान दें कि मैंने अपनी कंपनी की जानकारी छिपाने के लिए ऊपर आउटपुट .localमें अतिरिक्त उपयोग किया है 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 जानकारी (ध्यान दें कि यह अनुकूलित होस्ट फ़ाइल केवल उन मशीनों में से एक पर मौजूद है जिनके पास ये समस्याएं हैं)

[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 प्रणालियां हैं। मैं देखूंगा कि क्या मैं वहीं देख सकता हूं।
21

@ देखें, धन्यवाद ... सभी लॉगिन ssh होना चाहिए (और कभी-कभी GUI कंसोल के माध्यम से, लेकिन मैं केवल GUI से लॉग इन करता हूं जब बॉक्स को चालू किया जाता है)। कोई अन्य दूरस्थ लॉगिन प्रोटोकॉल सक्षम नहीं है।
माइक पेनिंगटन

क्या last -i mpenningरिक्त का उत्पादन दिखाता है?
जेएफजी

ओह, ठीक है .. मुझे एक EL6.3 सर्वर पर इसे दोहराने की आवश्यकता है ...
ewhite

क्या आप / var / log / सुरक्षित और / var / log / संदेशों से लॉगिन आउटपुट प्रदान कर सकते हैं? मेरा मानना ​​है कि आईपी मान PAM के माध्यम से पारित एक पैरामीटर है। क्या PAM IP को ठीक से दिखाता है?
मैथ्यू इफ

जवाबों:


4

script रेडहैट और डेबियन के बीच व्यवहार मतभेद

लिंक किए गए पुस्तकालय

सेंटोस 6.3 - स्क्रिप्ट (उपयोग-लिनेक्स-एनजी 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)

Ubuntu 12.04 - स्क्रिप्ट (उपयोग-लिनेक्स 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)

पीटीवाई

अपस्ट्रीम स्रोत कोड के आधार पर , 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$ 

Ubuntu 12.04 scriptने एक नया पीटीएस (2) खोला। यह सिर्फ अद्यतन नहीं किया /var/log/wtmp

सेंटोस 6

मैं परीक्षण को छोड़ रहा हूं क्योंकि हम पहले से ही जानते हैं कि scriptखुली पीटी और wtmp के साथ पंजीकरण करें।

libutemper

  • प्रोजेक्ट: http://freecode.com/projects/libutempter
  • वर्णन: libutempter टर्मिनल इम्यूलेटर के लिए एक लाइब्रेरी इंटरफ़ेस प्रदान करता है जैसे स्क्रीन और xterm को यूपीएम और wmpmp फ़ाइलों के लिए उपयोगकर्ता सत्र रिकॉर्ड करने के लिए।

तो मुख्य अंतर अतिरिक्त पुस्तकालय ( libutempter.so.0) CentOS के scriptसाथ जुड़ा हुआ लगता है।

Ubuntu 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

एमटीपी होस्टनाम का मूल कारण

और हाँ, खाली होस्टनाम के साथ प्रविष्टि script.cबनाएँ wtmputil-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वास्तव में खाली hostname पास कर रहा है utempter_add_record

रेडहैट बैकपोर्ट

दिलचस्प बात यह है कि, नदी के ऊपर util-linux-ng-2.17.2वास्तव में समर्थन नहीं करता है libutempter। लगता है कि Redhat ने उस समर्थन को वापस जोड़ने का फैसला किया।

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

उपरोक्त आदेश रिक्त परिणाम देता है।

निष्कर्ष

तो दो डिस्ट्रोस के बीच व्यवहार में अंतर बग नहीं है, बल्कि एक विकल्प है। रेडहैट ने उस सुविधा का समर्थन करने का फैसला किया, जबकि डेबियन ने इसे छोड़ दिया।


CentOS 5 के बारे में क्या?
इविहित

@ क्या आप मुझे coreutilsrpm संस्करण दे सकते हैं CentOS 5 का उपयोग कर रहा है? मुझे सोर्स कोड चेक करना है।
जॉन सिउ

कोई जरुरत नहीं है। libutempterEL4 (के माध्यम से ldd) में लिंक नहीं किया गया है , लेकिन यह EL5 और EL6 scriptकमांड में जुड़ा हुआ है । यह विशेषता परिवर्तन रेड हैट जैसी प्रणालियों के लिए 2007 में आरएचईएल 5 के 2007 की शुरूआत के बाद से coreutils5.2.1 संस्करण के साथ होने की संभावना है । EL5 पर यह संस्करण 5.97 है।
ewwhite

समझा। BTW, उपयोग script-लिनेक्स में है।
जॉन सियु

1
@ जॉनसन: हाँ, यह अंतर का कारण है, मुझे लगता है कि उन्होंने रिपोर्ट किए गए बग को ठीक कर दिया है और (अनजाने में) एक नया निर्माण किया है।
user9517 supportGoFundMonica

12

यह मुझे बिल्कुल हैरान करता है। या तो इसे कुछ DNS नाम या आईपी पते का उपयोग करना चाहिए। मैंने 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 */

तो, सिद्धांत रूप में, इसे या तो डीएनएस या आईपी का उपयोग करना चाहिए।

मैं देखूंगा कि क्या मैं आगे भी खुदाई कर सकता हूं। लेकिन ईवाइट ने जो पूछा वह वैध सवाल हैं।


1
प्रश्न में कमांड के लिए वास्तविक स्रोत कोड में खुदाई के लिए +1।
क्रिस स्मिथ

महान जानकारी, यह उस आधिकारिक स्रोत का प्रकार है जिसकी मुझे तलाश है। कोड खोजने के लिए कड़ी मेहनत करने के लिए धन्यवाद।
माइक पेनिंगटन

8

इसलिए मैं एक डिबगर में अंतिम बार भाग गया हूं, जो उम्मीद करता है कि आप अपने प्रश्न के कम से कम कुछ उत्तर देंगे । मेरी भावना मूल कारण हालांकि गहरा है।

Pts लाइन प्रविष्टियों के लिए अंतिम -i क्यों 0.0.0.0 दिखाता है

यह समझाने का सबसे अच्छा तरीका है कि जब आप पास न करें तो क्या होगा ।

इसका कारण इस कोड अनुभाग में है 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);
}

दोनों usednsऔर useip(डिफ़ॉल्ट विकल्पों का उपयोग कर) में फ़्लैग नहीं कर रहे हैं। यह तर्क को उस संरचना से बाहर कॉपी करने का कारण बनता है p->ut_hostजिसके अनुसार man utmpरिमोट लॉगिन नाम शामिल होता है जैसा कि जो कुछ भी लिखा गया है utmp

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

आपके मामले में, यहां का मान शून्य है। यही कारण है कि जब आप चलाते हैं तो आपके लिए lastकुछ भी नहीं दिखाई देता है।

last -iतब के मामले में dns_lookup लगाया जाता है। यह प्रविष्टि (p-> ut_addr_v6) डीएनएस के माध्यम से हल किया जाएगा। आपके मामले में यह मान शून्य भी है

ज्यादातर dns_lookupविंडो ड्रेसिंग और हेट्रिक है। मूल रूप से क्या मायने रखता है फ़ंक्शन getnameinfo। यह एक पुस्तकालय कॉल है जो इस मामले में संग्रहीत द्विआधारी मूल्य को हल करने के लिए अपनी पूरी कोशिश करेगा ut_addr_v6। जब इस प्रविष्टि में शून्य होते हैं (जैसे कि आपके मामले में) तो आप वास्तव में इसे हल कर रहे हैं 0.0.0.0जैसा कि आपके last -iआउटपुट के साथ होता है ।

क्या कुछ भी है (दुर्भावनापूर्ण गतिविधि के अलावा) जो व्यवहार को उचित रूप से समझाएगा?

खैर, इसकी शायद एक बग या निरीक्षण है। इसका अशुभ होने की संभावना नहीं है क्योंकि यह किसी स्रोत को छोड़ने के बजाय हमलावर के रूप में किसी भी निशान को छोड़ने के लिए मूर्खतापूर्ण लगता है ।

अब तक के उत्तरों का ध्यान गलत जगह पर लग रहा है। lastबस पढ़ता है utmpया wtmp। हालाँकि lastइसके पास मौजूद डेटा के साथ अपना सर्वश्रेष्ठ प्रदर्शन कर रहा है।

आपका मूल कारण कहीं न कहीं उस तरीके से है जिस utmpपर लिखा जा रहा है !

जबकि कुछ एप्लिकेशन सीधे लिखते हैं utmpकि मुझे लगता है कि आपकी समस्याओं का स्रोत sshdसत्र प्रबंधन संभाल रहा है।

बैश इतिहास टाइमस्टैम्पिंग के अलावा, क्या अन्य चीजें हैं जो मैं इस मुद्दे को ट्रैक करने के लिए कर सकता हूं?

utmpआमतौर पर लिखने योग्य नहीं है और इसका मतलब यह नहीं है। utmpआपके सत्र को लॉग इन करने और सेटअप करने के लिए डिज़ाइन किए गए एप्लिकेशन द्वारा लिखा गया है। आपके मामले में वह यह है कि sshd

क्यों sshd आपके उपयोगकर्ता को ठीक से संभाल नहीं रहा है, यह बहुत अजीब है क्योंकि यह उस होस्टनाम में ठीक से कॉपी होना चाहिए जो आप अंदर से आए थे। यह वह जगह है जहाँ डिबगिंग प्रयासों को संभवतः ध्यान केंद्रित किया जाना चाहिए। अपने लॉग में sshd के डिबग आउटपुट को जोड़ने के साथ शुरू करें और देखें कि क्या कुछ असामयिक आता है।

यदि आप समस्या के इर्द-गिर्द काम करना चाहते हैं (या, शायद समस्या के बारे में और भी अधिक जान सकते हैं) तो आप इसे /etc/pam.d/sshd के सत्र प्रविष्टि में जोड़कर pam_lastlogप्रबंधित कर सकते हैं ।utmp

तथ्य की बात के रूप में यह जाँचने के लिए चोट नहीं है कि यह पहले से ही है - क्योंकि pam_lastlogइसमें एक nohostविकल्प है जो निश्चित रूप से आपके व्यवहार का अनुभव कर रहा है।

अंत में, आप अंतिम उपयोग नहीं कर सकते। aulastऑडिट सबसिस्टम के माध्यम से एक ही काम करता है।

कम से कम सही पता लिखने में कामयाब रहे या नहीं, यह देखने की कोशिश करें। यदि यह नहीं है, तो आपकी समस्या sshd के साथ होनी चाहिए क्योंकि sshd, DNS नामों को अलग-अलग उपप्रणालियों जैसे utmp या ऑडिट में पास कर रहा है।


क्या आप pam_lastlogऊपर बताए अनुसार कुछ विशिष्ट निर्देशों का उपयोग कर सकते हैं ?
माइक पेनिंगटन

8

(1) ओपी lastआउटपुट पर बेस

Ssh के द्वारा लॉग इन करने के बाद, कोई लोकलहोस्ट को ssh कर सकता है और last -iबाद के लिए 0.0.0.0 प्राप्त कर सकता है ।

ओपी के लॉग की पहली चार पंक्तियों के आधार पर

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 इन अवधि के भीतर लॉग इन किया गया था ।

इस विशिष्ट घटना के लिए, यह अनुमान लगाना तर्कसंगत है कि ओपी ssh 192.0.2.91 ( pty/1) से है, तो उस ssh सत्र के भीतर, स्थानीय रूप से ( ssh localhost) फिर से सर्वर ( pts/17) और फिर ( pts/19) में लॉग इन करें ।

कृपया जांचें कि क्या यह अतिव्यापी दूसरी घटना के साथ होता है।

निम्नलिखित कारण को इंगित करने में मदद कर सकता है

  • क्या आप ssh-key का उपयोग करते हैं? यदि हां, तो सर्वर पर, क्या आपने स्थानीय रूप से लॉग-इन करने के लिए ssh-key सेटअप किया था?
  • एक ही समय सीमा की जाँच करें या पोस्ट / var / लॉग / सुरक्षित करें। यह कुछ संकेत प्रदान कर सकता है।
  • आपके द्वारा उपयोग की जाने वाली स्क्रिप्ट की जाँच करें
  • आपके द्वारा उपयोग किए जाने वाले शेल उपनामों की जांच करें
  • अपने कमांड इतिहास की जाँच करें

(२) अतिरिक्त सेर्नारियो

परिदृश्य 1 - सूडो और टर्मिनल

  1. उपयोगकर्ता लॉगिन X विंडो
  2. एक टर्मिनल विंडो खोलें, करें xhost + localhost
  3. su - UserBया sudo su - UserBफिर एक नया टर्मिनल खोलें (xterm, सूक्ति-टर्मिनल, आदि)
  4. UserB 0.0.0.0 के रूप में दिखाई देगा last -i

su - UserBUserBअंतिम में लॉगिन के रूप में पंजीकृत नहीं होगा , लेकिन एक टर्मिनल वसीयत खोलना।

परिदृश्य 2 - लॉगिन

  1. सर्वर में ssh
  2. प्रकार sudo login
  3. अपने आप को लॉगिन करें
  4. जाँच करें lastऔरlast -i

lastके लिए कोई होस्टनाम या आईपी न दिखाएं login sessionlast -iके लिए आईपी 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खाली होस्टनाम / आईपी प्रदर्शित करता है क्योंकि ut_hostउन रिकॉर्डों के लिए वास्तव में खाली हैं। पूर्ण wtmp संरचना के लिए, man wtmpकिसी भी लिनक्स सिस्टम पर करें।

यहाँ 2 परिदृश्यों से पता चलता है कि मानक पैकेज भी, निश्चित परिस्थिति में, उन्हें इस तरह बनाते हैं।

(३) बैश हिस्ट्री हैक

यह तभी काम करेगा जब सत्र bashइंटरैक्टिव शेल के रूप में उपयोग करेगा ।

.bashrcऔर .bash_profileकेवल द्वारा उपयोग किया जाता है bash

यदि सत्र किसी अन्य शेल (श, csh इत्यादि) का उपयोग करता है या सीधे प्रोग्राम निष्पादित करता है, तो वे स्वचालित रूप से sourced नहीं होंगे, और कोई बैश इतिहास भी नहीं होगा।

(4) प्रक्रिया लेखांकन

चूंकि ओपी ने secureफाइल के बारे में कुछ नहीं बताया है, इसलिए मैं मानूंगा कि यह एक मृत अंत है और यह वास्तव में अब संकेत प्रदान करता है।

यदि निम्नलिखित धारणा सही है

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

Pers.log (डेबियन) / सुरक्षित (CentOS) मदद नहीं करेगा। जैसा कि केवल प्रमाणीकरण संबंधित कार्रवाई इसमें दर्ज की गई है।

wtmp / utmp, उनकी डेटा संरचना में सीमा के साथ, एक मृत अंत भी है। उन्हें किस चीज ने बनाया इसके बारे में कोई जानकारी नहीं है।

हमें एक विकल्प, प्रक्रिया लेखांकन के साथ छोड़ दें । यह एक बड़ी बंदूक है और सावधानी के साथ इस्तेमाल किया जाना है।

  1. शायद कंपनी की नीति के खिलाफ
  2. एक साझा सिस्टम पर अन्य उपयोगकर्ता शायद इससे नाखुश / असहज हैं
  3. लॉग फ़ाइल बहुत सारे डिस्क स्थान का उपयोग कर सकती है। फाइल साइज ग्रोथ रेट पर नजर रखें।

इस पोस्ट के अनुसार psacct पैकेज संस्करण 6.3.2-56 या उससे ऊपर होना चाहिए ।

यदि इसका उपयोग किया जाना है, और /var/logइसमें सीमित स्थान है, तो acct लॉग फ़ाइल को एक निर्देशिका (रूट केवल एक्सेस) के तहत बदलें /home, जिसमें आमतौर पर बहुत अधिक स्थान होता है।

यह वास्तव में बड़ी बंदूक है। ओपी 10% की घटना दर के साथ, एक सप्ताह के भीतर परिणाम होना चाहिए। अगर उस अवधि के दौरान, खाली प्रविष्टि दिखाई देती है, lastलेकिन एसिट लॉग से कुछ नहीं होता है, तो यह एक रहस्य की स्थिति बन जाती है , और इसके लिए कुछ कठोर कार्रवाई की आवश्यकता होती है

निम्नलिखित का एक नमूना आउटपुट है 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

अधिक जानकारी दिखाने के लिए आप 'डंप-एक्ट' का भी उपयोग कर सकते हैं।

PS1: मैंने कुछ टर्मिनल और ssh सत्र खोलने की कोशिश की। यह स्पष्ट नहीं है (या बिंदु को पिन करना आसान नहीं है) क्या एक नया पीटीएस खोलते हैं। हालाँकि, यह सब कुछ दिखाता है जो उस pts / session के भीतर चलता था।

PS2: एक माइक द्वारा acct का उपयोग करने के बारे में एक ब्लॉग पोस्ट।


मैं नहीं जानता कि आपने स्थानीय लोकल लॉगइन पैदावार के लिए 0.0.0.0 कैसे निष्कर्ष निकाला है, यह हमेशा मेरे लिए स्थानीयहोस्ट के रूप में दिखाई देता है। मैं केवल ssh के साथ लॉगिन करता हूं, मैं नहीं जानता कि स्थानीय स्तर पर लॉगिन से आपका क्या मतलब है
माइक पेनिंगटन

कृपया करें ssh localhostऔर जांचें last -i
जॉन सियु

के बारे में login locally, मेरा मतलब ssh localhostहै कि ssh सत्र के भीतर करना। मैंने उस वाक्य को संशोधित किया, आशा है कि अब यह कम भ्रामक है।
जॉन सियु

अतिरिक्त परिदृश्य जोड़ा गया।
जॉन सिउ

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)    

Tty के साथ पहली प्रविष्टि तब आती है जब आप CTRL + ALT + F1-6 दबाकर टर्मिनल या कंसोल से प्रवेश करते हैं। इसका उपयोग कर रहे टर्मिनल से इसकी बहुत स्पष्ट है।

जब आप मशीन में लॉग इन करते हैं और GUI में एक टर्मिनल विंडो खोलते हैं तो दूसरी एंट्री आमतौर पर तस्वीर में आती है। यदि आप एक ही टर्मिनल विंडो में एक नया टैब खोलते हैं तो भी एक प्रविष्टि होगी।

तीसरे प्रकार की प्रविष्टि तब आती है जब आप SSH के माध्यम से लॉगिन के बाद एक स्क्रीन सत्र खोलते हैं। यह भी वहाँ एक प्रविष्टि और बिना किसी आईपी पते का निर्माण करेगा।

चौथी प्रविष्टि बहुत सामान्य है जिसे हर कोई समझता है।

यदि आप 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)    

मुझे पूरा यकीन है कि आपका मामला 2 में से किसी भी मामले में आता है, एक जीयूआई में टर्मिनल विंडो के साथ और दूसरा स्क्रीन सेशन के साथ।

आशा है कि इस मदद की।


2
मैंने GUI या screenकिसी भी 0.0.0.0प्रविष्टि के लिए उपयोग नहीं किया । मैं केवल GUI का उपयोग करता हूं जब मैंने मशीनें स्थापित कीं (अगस्त / सितंबर के आसपास)। मुझे 0.0.0.0उस समय के बाद कई पीटीएस प्रविष्टियाँ दिखाई देती हैं ।
माइक पेनिंगटन

1
यह वास्तव में उपयोगी था और मेरे पास कुछ पुराने संदेह थे
राहुल

3

मुझे नहीं लगता कि हम last.c के डिबगिंग के बिना इससे दूर होने जा रहे हैं, लेकिन यह बहुत मुश्किल नहीं होना चाहिए क्योंकि यह आसानी से संकलित होता है ...

हालांकि एक संभावना है कि utmpdump कमांड का उपयोग करके / var / log / wtmp फ़ाइल को डंप करें और कच्चे रिकॉर्ड पर एक नज़र डालें, इससे आपके लिए कुछ प्रकाश डाला जा सकता है। यदि नहीं तो कृपया कुछ प्रासंगिक आउटपुट पोस्ट करें

utmpdump /var/log/wtmp 

ताकि हम आपके wtmp की स्थानीय प्रतियों को डीबग के साथ पुनः बना सकें

utmpdump -r <dumpfile >wtmp

ऐसा लग सकता है कि यह कोई जवाब नहीं है, लेकिन यह वास्तव में है, हम लोगों की बात को अभी-अभी जानते हैं और वास्तव में डिबगिंग प्राप्त करने की आवश्यकता है।
user9517 supportGoFundMonica

यह पर्यावरण-विशिष्ट है। मैं इन सर्वरों को पर्याप्त रूप से चलाता हूं और सामान्य गतिविधि के किसी भी संयोजन के साथ व्यवहार को पुन: पेश नहीं कर सकता।
ewwhite

@ नया: मैं भी कुछ कर रहा हूँ और मैं इसे नहीं ढूँढ सकता।
user9517 supportGoFundMonica

@ewwhite ने खुद कुछ CentOS मशीनों की कोशिश की और कुछ सहयोगियों से भी पूछा जो इनमें से लगभग 300 बॉक्स को बनाए रखते हैं। वे कभी भी इसे देखने से पहले याद नहीं कर सकते हैं।
टोनही

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डिफ़ॉल्ट से? क्या पर्यावरण में कोई अन्य विशेष लॉगिन स्क्रिप्ट हैं?

--Edit--

मैं अभी भी इसे किसी भी तरह से पुन: पेश करने में असमर्थ हूं। मैं दो महत्वपूर्ण घटकों को देखता हूं, हालांकि। lastआदेश स्थिर है और एक लंबे समय में नहीं बदला गया है। सिसविनीट-टूल्स के लिए चैंज को देखते हुए , कोई प्रासंगिक बग नहीं हैं। के लिए एक ही initscripts (औऱ wtmp)।

यदि आप ऐसा करने के लिए बाध्य कर सकते हैं, तो इसे उसी स्रोत मशीनों से एक अलग उपयोगकर्ता खाते के साथ आज़माएं। लेकिन मुझे कोई संकेत नहीं दिख रहा है कि यह एक OS मुद्दा है।


स्थानीय पर्यावरण के बारे में आपके प्रश्नों के बारे में ... कृपया मेरे प्रश्न के नवीनतम संपादन देखें ... ध्यान रखें कि मेरे अलावा किसी अन्य उपयोगकर्ता के पास यह समस्या नहीं है ... इसलिए वैश्विक कॉन्फ़िगरेशन (जैसे /etc/hosts) सभी को प्रभावित करना चाहिए ... नहीं बस मुझे
माइक पेनिंगटन

यह जानना उपयोगी होगा कि यह समय सीमा क्या हुई। आपका लॉग स्निपेट एक महीने पुराना है। क्या यह प्रजनन योग्य है? क्या यह सभी सर्वरों पर हो रहा है? शायद अगर wtmp फाइल को घुमाया गया है, तो आपके पास wtmp और wtmp1 हो सकते हैं। क्या आप last -ifउन दोनों फाइलों के खिलाफ चल सकते हैं और देख सकते हैं कि क्या आप समय के साथ एक ही परिणाम देखते हैं?
ewwhite

इसके अलावा, क्या आप कमांड चला रहे हैं; (p) sftp (p) scp? मैं पूछता हूं कि चूंकि आपके नो-आईपी सत्र एक लंबे सत्र के समय सीमा के भीतर होते हैं। आपके उदाहरण में, क्या आप 192.0.2.91 से कई कनेक्शन खोल रहे थे?
ewwhite 15

अच्छे प्रश्न ... मुझे आज आने वाले मेहमानों के लिए तैयार करना है, लेकिन मैं इस सप्ताह के अंत में उन विवरणों के साथ जवाब देने का प्रयास करूंगा
माइक पेनिंगटन

मैं कभी-कभी मुफ्त WinSCP क्लाइंट के माध्यम से scp और sftp का उपयोग करता हूं; हालाँकि, वे प्रविष्टियाँ वैध प्रविष्टियाँ उत्पन्न करती /var/log/secureहैं ... जो प्रविष्टियाँ 0.0.0.0कुछ भी नहीं दिखाती हैं/var/log/secure
माइक पेनिंगटन

3

अंतिम समाधान

मैंने पहले ही बोनस से सम्मानित किया है, इसलिए यह शुद्ध रूप से भविष्य के गोगलर्स के लिए एक ही सवाल है।

मेरे लॉगिन के केवल 10% में यह कारण दिखाई देता है क्योंकि जब मैं हमारे राउटर या स्विच में बड़े बदलाव करता हूं, script foo.logतो मैं उपयोग करता हूं इसलिए मेरे पास परिवर्तन का पूरा टर्मिनल लॉग है। उन कारणों के लिए जो मुझे अभी भी समझ नहीं आ रहे हैं, ptsजब आप scriptकमांड का उपयोग करते हैं तो CentOS एक प्रविष्टि बनाता है ... मैं 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नहीं डालती हैं ... डेबियन / Gentoo मशीनें इस व्यवहार को प्रदर्शित नहीं करती हैं। हमारे linux-admins उनके सिर को खरोंच कर रहे हैं कि ptsजब आप निष्पादित करते हैं तो CentOS जानबूझकर एक और प्रविष्टि जोड़ देगा script... मुझे संदेह है कि यह एक RHH बग है।

संपादित करें : मैंने इस समस्या को RHEL Bug id 892134 के रूप में दर्ज किया है

ध्यान दें

कुछ लोगों को ग़लती से मान लिया है मैं डाल scriptमेरी में ~/.bashrcया ~/.bash_profile। यह एक त्रुटिपूर्ण तर्क है ... अगर यह सच था, तो मेरी हर ssh logins के बाद 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अपने प्रारंभिक प्रश्न में कमांड का उपयोग कर रहे थे ।
इविहित

2
मैंने पूछा कि क्या आपने डिफ़ॉल्ट रूप से ~ / .bashrc या ~ / .bash_profile बदल दिया है? क्या पर्यावरण में कोई अन्य विशेष लॉगिन स्क्रिप्ट हैं? scriptकार्यक्रम का एक टाइपप्रति बनाता है सब कुछ अपने टर्मिनल पर छपी। यह एक विस्तृत विवरण है।
ewwhite

2
@ जब तक आप पर हमला करना बंद न करें और गंभीर रूप से सोचना शुरू करें ... 1) आप यह मान रहे हैं कि स्क्रिप्ट मेरे .bashrcया में थी .bash_profile, यह नहीं था; script foo.logजब मैं बड़े बदलाव करता हूं तो मैं क्रियान्वित करता हूं ताकि मैं एक परिवर्तन-लॉग कर सकूं ... यही कारण है कि यह केवल प्रभावित करता है ~ मेरे लॉगिन 2 का 10%) यदि आपका आरोप सही है (और यह नहीं है), तो मेरा कभी भी ssh लॉगिन नहीं होगा 0.0.0.0यह 3 के बाद एक और प्रविष्टि नहीं है ) scriptकेवल CentOS में ऐसा करता है ... मैंने इसे एक दशक से अधिक समय तक इस्तेमाल किया है और इस व्यवहार को किसी अन्य distro में कभी नहीं देखा है ... इस बिंदु पर मैं यह तर्क दे रहा हूं कि यह संभवतः एक CentOS है बग
माइक पेनिंगटन

1
अपडेट के लिए आपका बहुत-बहुत धन्यवाद। मैंने उबंटू 12.04 पर परीक्षण किया, scriptकेवल एक खोल कांटा जाएगा। आप यहां जो दिखा रहे हैं, उसके आधार पर, CentOS / Redhat संस्करण scriptवास्तव में पहले एक कांटा फोर्क है। हालांकि थोड़ा निराश (: पी) है कि यह कुछ अधिक सामान्य / दूर के पार नहीं है, कम से कम रहस्य मेरे दिमाग से चला गया है। पुनश्च: मुझे आश्चर्य है कि आपके पास Gentoo प्रोडक्शन @ में है। @
John Siu

1
@MikePennington: यह फेडोरा BTW, माइकल हैम्पटन चेक में भी मौजूद है।
user9517 supportGoFundMonica

2

छद्म टर्मिनल स्लेव (पीटीएस) कनेक्शन एसएसएच या टेलनेट कनेक्शन हैं, जिसका अर्थ है सिस्टम से अप्रत्यक्ष कनेक्शन। ये सभी कनेक्शन एक शेल से कनेक्ट हो सकते हैं जो आपको कंप्यूटर को कमांड जारी करने की अनुमति देगा। इसलिए जब आप अपने सिस्टम पर gui से एक टर्मिनल खोलते हैं, तो यह स्रोत IP 0.0.0.0 के साथ एक pts को खोलता है। आपके द्वारा प्रदान की गई जानकारी से, ऐसा लगता है कि यह इस सर्वर पर चलने वाली स्क्रिप्ट के कारण हो रहा है या शेड्यूल किया गया है, जो टर्मिनल में आउटपुट फेंकने के लिए ssh या टेलनेट सेवा या स्थानीय पीटी का उपयोग कर रहा है।



2

आप किस ssh क्लाइंट का उपयोग करते हैं? कुछ ssh क्लाइंट एक कनेक्शन पर कई टर्मिनलों को मल्टीप्लेक्स कर सकते हैं और मैं आपके सभी सत्रों को बिना आईपी गिरावट के लंबे सत्रों के भीतर नोटिस करता हूं जिनमें एक लॉग आईपी है।

मैं यहां ssh के साथ इस व्यवहार की नकल नहीं कर सकता।


मैं आमतौर पर सुपरपुट्टी का उपयोग करता हूं , वर्तमान में संस्करण 1.4.0.1 पर ... लेकिन मैंने इस मुद्दे को सादे-ओले पोटीन के साथ देखा है
माइक पेनिंगटन

1

शायद आपका IP पता आपके DNS सर्वरों में से एक पर रिक्त स्ट्रिंग को हल करता है, शायद द्वितीयक यदि यह केवल 10 प्रतिशत समय पर होता है (या संभवतः एक होस्ट फ़ाइल को वितरित करता है यदि ये केंद्रीय भंडार से वितरित किए जाते हैं)। यह लापता (या सफेद स्थान) प्रविष्टि के लिए जिम्मेदार होगा और सोहम स्रोत के पढ़ने के अनुरूप होगा।


0

"0.0.0.0" का अर्थ है कि एक स्थानीय उपयोगकर्ता (रिमोट लॉगिन नहीं), संभवतः एप्लिकेशन द्वारा क्रॉन्जॉब किया गया।


यह उत्तर गलत लगता है ... मेरे लॉग में सभी 0.0.0.0 प्रविष्टियाँ एक pts लाइन पर हैं
माइक पेनिंगटन

यह एक सही उत्तर है, मेरे सिस्टम से उदाहरण:# 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, फिर से, मैं केवल ssh के साथ लॉगिन करता हूं; जब तक कोई मुझे आधिकारिक दस्तावेज नहीं दिखा सकता है तब तक 0.0.0.0 एक वैध एसटी पीटीआई प्रविष्टि नहीं है।
माइक पेनिंगटन

0

ऐसा इसलिए होता है क्योंकि आप स्थानीय प्रणाली का उपयोग करते हैं और 0.0.0.0 का अर्थ है सभी इंटरफेस का आईपी पता। यदि आपको लगता है कि हो सकता है कि किसी ने हैक किया हो, तो आप ssh - http://blog.pointoftware.ch/index.php/howto-bash-audit-command-logger/ के माध्यम से कमांड सहित शेल के पूर्ण लॉगिंग को सेटअप करने का प्रयास करें।


आपका क्या मतलब है "आप स्थानीय प्रणाली का उपयोग करते हैं" ... कृपया मेरे प्रश्न को बारीकी से पढ़ें ... मैं केवल ssh के साथ लॉगिन करता हूं । क्या आप सुझाव दे रहे हैं कि 0.0.0.0 पीटी के लिए ssh लॉगिन के लिए एक वैध प्रविष्टि है?
माइक पेनिंगटन

-1

मैंने इसे एक स्क्रिप्ट को ~ / .bashrc में जोड़कर हल किया है। स्क्रिप्ट पिछले टेलनेट कनेक्शन स्रोत आईपी पते को ढूंढती है, फिर आप आईपी को लॉग फ़ाइल में जोड़ सकते हैं या आपको जो कुछ भी चाहिए .. कर सकते हैं।

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 परिणाम देता है, उनमें से कोई भी टेलनेट नहीं है।
हौके लैजिंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.