Ich habe fünf CentOS 6-Linux-Systeme im Einsatz und ein ziemlich seltsames Problem ist bei meiner Benutzer-ID auf allen Linux-Systemen aufgetreten ... Dies ist ein Beispiel für das Problem bei Einträgen, die ich mit Ausnahme des last
Befehls ausgeführt habe. .
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)
Oben sehen Sie zwei meiner PTS-Anmeldeeinträge, denen keine Quell-IP-Adresse zugeordnet ist. Meine CentOS-Maschinen haben bis zu sechs andere Benutzer, die sich die Systeme teilen. Ungefähr 10% meiner Anmeldungen sehen dieses Problem, aber keine anderen Benutzernamen zeigen dieses Verhalten . Es ist kein Eintrag /var/log/secure
für die Einträge ohne Quell-IP-Adresse vorhanden.
Fragen
Angesichts der Art von Skripten, die ich auf diesen Systemen verwende (die einen Großteil unserer Netzwerkinfrastruktur steuern), habe ich ein wenig Angst davor und würde gerne verstehen, was dazu führen würde, dass meine Anmeldungen gelegentlich Quelladressen verpassen.
- Warum funktioniert
last -i
Show0.0.0.0
für pts Zeileneinträge (siehe auch diese Antwort ) - Gibt es irgendetwas (außer böswilligen Aktivitäten), das das Verhalten angemessen erklärt?
- Gibt es außer der Zeitstempelung der Bash-Historie noch andere Möglichkeiten, um das Problem aufzuspüren?
Information
Seit dies passiert ist, habe ich die bash
Verlaufszeitstempelung (dh HISTTIMEFORMAT="%y-%m-%d %T "
in .bash_profile
) aktiviert und auch einige andere Bash-Verlaufs-Hacks hinzugefügt . Dies gibt jedoch keinen Hinweis darauf, was während der vorherigen Vorkommnisse geschehen ist.
Alle Systeme laufen unter 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 ~]$
BEARBEITEN
Wenn ich benutze last -i mpenning
, sehe ich Einträge wie diesen ...
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)
Hinweis für diejenigen, die versuchen zu antworten: Ich habe mich nicht mit dem screen
Befehl oder der GUI angemeldet . Alle meine Logins stammen von SSH; die Prämie Auszeichnung zu erhalten, müssen Sie zitieren maßgebliche Referenzen , die erklären last -i
0.0.0.0
Einträge nur über SSH bezogen.
EDIT 2 (für ewwhite's Fragen)
/etc/resolv.conf
(Beachten Sie, dass ich .local
oben in der last
Ausgabe addrs verwendet habe , um die Informationen meines Unternehmens auszublenden.)
[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 (Beachten Sie, dass diese angepasste Hosts-Datei nur auf einem der Computer vorhanden ist, auf denen diese Probleme auftreten.)
[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
Ausgabe von /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)
ENDGÜLTIGE ENTSCHLIESSUNG
Siehe meine Antwort unten
last -i mpenning
die Leerzeichen?Antworten:
script
Verhaltensunterschiede zwischen RedHat und DebianVerknüpfte Bibliotheken
CentOS 6.3 - Skript (util-linux-ng 2.17.2)
Ubuntu 12.04 - Skript (util-linux 2.20.1)
PTY
Base auf Upstream - Quellcode ,
script
von beiden Versionen nicht öffnen neuen pty. Es folgt ein Test.Ubuntu 12.04
Ubuntu 12.04
script
hat ein neues Pkt eröffnet (2). Es wurde einfach nicht aktualisiert/var/log/wtmp
.CentOS 6
Ich überspringe den Test, da wir bereits wissen, dass
script
Sie pty öffnen und sich bei wtmp registrieren.libutemper
Der Hauptunterschied scheint also die zusätzliche Bibliothek (
libutempter.so.0
) zu sein, mit der CentOSscript
verbunden ist.Test mit Ubuntu 12.04
Kompilieren
script
mit libutempterTesten
Vor dem Laufen
script
Innerhalb
script
Nach dem
script
EndeDie Hauptursache für den leeren Hostnamen
Und ja,
script.c
erstelle denwtmp
Eintrag mit leerem Hostnamen. Betrachten Sie den folgenden Codeblock inutil-linux-2.20.1/term-utils/script.c
Zeile: 245-247Basis auf
libutempter-1.1.5/utempter.h
Also
script.c
wird tatsächlich ein leerer Hostname übergebenutempter_add_record
.RedHat Backport
Das Interessante ist, Upstream unterstützt
util-linux-ng-2.17.2
eigentlich nichtlibutempter
. Anscheinend hat Redhat beschlossen, diese Unterstützung wieder hinzuzufügen.Der obige Befehl gibt ein leeres Ergebnis zurück.
Fazit
Der Unterschied im Verhalten zwischen den beiden Distributionen ist also kein Fehler, sondern eine Wahl. RedHat entschied sich, dieses Feature zu unterstützen, während Debian es übersprang.
quelle
coreutils
Version geben, die CentOS 5 verwendet? Ich muss den Quellcode überprüfen.libutempter
nicht in EL4 (via gebundenldd
), aber es ist in dem EL5 und EL6 verknüpftenscript
Befehl. Diese Funktionsänderung wurde wahrscheinlich für Red Hat-ähnliche Systeme seit der Einführung von RHEL 5coreutils
auf EL4 im Jahr 2007 in Version 5.2.1 vorgenommen. Auf EL5 ist es Version 5.97.script
ist in util-linux.Das sieht für mich absolut rätselhaft aus. Entweder sollte ein DNS-Name oder eine IP-Adresse verwendet werden. Ich habe die
last.c
Datei ebenfalls überprüft, kann aber immer noch nicht feststellen, warum sie nichts anzeigt. Vermutlich kann ich nach einiger Zeit den Teil über 0.0.0.0 herausfinden.Die beiden im Kontext verwendeten globalen Variablen sind diese.
Theoretisch sollte also entweder DNS oder IP verwendet werden.
Ich werde sehen, ob ich weiter graben kann. Aber was ewwhite gestellt hat, sind berechtigte Fragen.
quelle
Also habe ich zuletzt einen Debugger gestartet, der Ihnen hoffentlich zumindest einige Antworten auf Ihre Frage gibt. Mein Gefühl ist, dass die Grundursache tiefer liegt.
Warum zeigt last -i 0.0.0.0 für Pkt-Zeileneinträge an?
Der beste Weg , dies zu erklären ist , was passiert , wenn Sie dont -i übergeben.
Der Grund dafür ist in diesem Codeabschnitt von
last.c
Beide
usedns
unduseip
(unter Verwendung der Standardoptionen) sind nicht markiert. Dies bewirkt , dass die Logik der Struktur kopieren aus ,p->ut_host
die nachman utmp
dem Remote - Login - Namen enthält als aufgezeichnet von was auch immer in der schriebutmp
.In Ihrem Fall ist der Wert hier Nullen. Aus diesem Grund wird Ihnen beim Ausführen
last
nichts angezeigt.In diesem Fall
last -i
wird dns_lookup aufgerufen. Dadurch wird der Eintrag (p-> ut_addr_v6) übergeben, der über DNS aufgelöst werden soll. In Ihrem Fall enthält dieser Wert auch Nullen.Das meiste
dns_lookup
ist Schaufensterdekoration und heusterisch. Grundsätzlich kommt es auf die Funktion angetnameinfo
. Dies ist ein Bibliotheksaufruf, der in diesem Fall sein Bestes versucht, den in der gespeicherten Binärwert aufzulösenut_addr_v6
. Wenn dieser Eintrag Nullen enthält (wie in Ihrem Fall), lösen Sie dies0.0.0.0
wie bei Ihrerlast -i
Ausgabe auf.Gibt es irgendetwas (außer böswilligen Aktivitäten), das das Verhalten angemessen erklärt?
Nun, es ist wahrscheinlich ein Fehler oder ein Versehen. Sein unwahrscheinlich bösartig zu sein , da es dumm scheint zu verlassen jede eher Spur als Angreifer als eine Quelladresse weggelassen wird .
Bisher lag der Fokus der Antworten auf der falschen Stelle.
last
liest geradeutmp
oderwtmp
. Eslast
tut jedoch sein Bestes mit den Daten, die es hat.Ihre Hauptursache liegt irgendwo in der Art und Weise, auf die
utmp
geschrieben wird !Während einige Anwendungen direkt in das Programm schreiben, liegt
utmp
die Ursache Ihrer Probleme vermutlich in der Art und Weise,sshd
wie Sie mit der Sitzungsverwaltung umgehen.Gibt es außer der Zeitstempelung der Bash-Historie noch andere Möglichkeiten, um das Problem aufzuspüren?
utmp
ist normalerweise nicht beschreibbar und soll es auch nicht sein.utmp
wird von Anwendungen geschrieben, mit denen Sie sich anmelden und Ihre Sitzung einrichten können. In deinem Fall ist das sosshd
.Warum sshd Ihren Benutzer nicht richtig behandelt, ist sehr seltsam, da es in den Hostnamen, von dem Sie gekommen sind, richtig kopiert werden sollte. Hier sollten wahrscheinlich die Debugging-Bemühungen konzentriert werden. Beginnen Sie mit dem Hinzufügen der Debug-Ausgabe von sshd zu Ihren Protokollen und prüfen Sie, ob Anomalien auftreten.
Wenn Sie das Problem umgehen möchten (oder vielleicht sogar mehr über das Problem erfahren möchten ), können Sie
pam_lastlog
es verwalten,utmp
indem Sie es dem Sitzungseintrag unter /etc/pam.d/sshd hinzufügen.In der Tat tut es nicht weh, zu überprüfen, ob es bereits vorhanden ist - denn es
pam_lastlog
enthält einenohost
Option, die Ihr Verhalten definitiv erklären würde.Letztendlich konnte man das überhaupt nicht nutzen.
aulast
übernimmt die gleiche Aufgabe über das Audit-Subsystem.Könnte einen Versuch wert sein, um zu sehen, ob das geschafft hat, die korrekte Adresse mindestens zu schreiben. Wenn dies nicht der Fall ist, muss Ihr Problem bei sshd liegen, da sshd die DNS-Namen an verschiedene Subsysteme wie utmp oder audit weitergibt.
quelle
pam_lastlog
wie oben erwähnt hinzufügen ?(1) Basis auf OP-
last
AusgangNachdem Sie sich über ssh angemeldet haben, können Sie ssh an localhost senden und 0.0.0.0
last -i
für den späteren Zeitpunkt abrufen .Basieren Sie auf den ersten vier Zeilen des OP-Protokolls
pts/19
Login war innerhalb despts/17
Login-Zeitraums.pts/17
Login war innerhalb despts/1
Login-Zeitraums.Für dieses spezielle Vorkommen ist es logisch zu erraten, dass sich OP ssh von 192.0.2.91 (
pty/1
) aus und dann innerhalb dieser ssh-Sitzung lokal (ssh localhost
) erneut (pts/17
) und erneut (pts/19
) beim Server anmeldet .Bitte überprüfen Sie, ob diese Überlappung mit einem anderen Vorkommen auftritt.
Folgendes kann helfen, die Ursache zu lokalisieren
(2) Zusätzliches Secnario
Szenario 1 - Sudo und Terminal
xhost + localhost
su - UserB
odersudo su - UserB
dann öffne ein neues Terminal (xterm, gnome-terminal, etc)UserB
wird als 0.0.0.0 in angezeigtlast -i
su - UserB
wird sich nicht zuletzt alsUserB
Login registrieren , sondern ein Terminal öffnen.Szenario 2 - Anmeldung
sudo login
last
undlast -i
last
zeigen keine Hostnamen oder IP für dielogin session
.last -i
wird IP 0.0.0.0 für dielogin session
.Mife 's Antwort zeigt bereits den Codeblock von
last.c
. Der Grund für dielast
Anzeige von leerem Hostnamen / IP ist, dassut_host
diese Datensätze tatsächlich leer sind. Für eine vollständige wtmp-Struktur verwenden Sieman wtmp
ein beliebiges Linux-System.Die beiden hier gezeigten Szenarien zeigen, dass sogar Standardpakete sie unter bestimmten Umständen als solche erstellen.
(3) Bash History Hack
Dies funktioniert nur, wenn die Sitzung
bash
als interaktive Shell verwendet wird..bashrc
und.bash_profile
werden nur von verwendetbash
.Sie werden nicht automatisch bezogen, wenn die Sitzung eine andere Shell (sh, csh usw.) verwendet oder ein Programm direkt ausführt, und es gibt auch keinen Bash-Verlauf.
(4) Prozessabrechnung
Da OP nichts über
secure
Datei erwähnt, gehe ich davon aus, dass das eine Sackgasse ist und es nun tatsächlich einen Hinweis gibt.Wenn die folgende Annahme richtig ist
auth.log (debian) / secure (CentOS) wird nicht helfen. Da nur authentifizierungsbezogene Aktionen darin aufgezeichnet werden.
Auch wtmp / utmp ist mit seiner eingeschränkten Datenstruktur eine Sackgasse. Es gibt keine Informationen darüber, was sie geschaffen hat.
Damit haben wir eine Option: die Rechnungslegung . Dies ist eine große Waffe und muss mit Vorsicht eingesetzt werden.
Die psacct-Paketversion sollte laut diesem Beitrag 6.3.2-56 oder höher sein .
Wenn dies verwendet werden soll und
/var/log
der Speicherplatz begrenzt ist, ändern Sie die ACCT-Protokolldatei in ein Verzeichnis (nur Root-Zugriff)/home
, in dem normalerweise viel mehr Speicherplatz vorhanden ist.Das ist wirklich die große Waffe. Bei einer OP-Häufigkeit von 10% sollte das Ergebnis innerhalb einer Woche vorliegen. Wenn während dieser Zeit zeigen leeren Eintrag nach oben in
last
aber nichts von ACCT log, es werden Rätsel Situation , und würde einige erfordern drastische Maßnahmen .Es folgt eine Beispielausgabe von
lastcomm
Sie können auch 'dump-acct' verwenden, um weitere Informationen anzuzeigen.
PS1: Ich habe versucht, ein paar Terminal- und SSH-Sitzungen zu eröffnen. Es ist nicht klar (oder nicht leicht zu sagen), was ein neues Pkt eröffnet. Es wird jedoch alles angezeigt, was in dieser Pkt / Sitzung ausgeführt wurde.
PS2: Ein Blogbeitrag über die Verwendung von acct von einem Mike.
quelle
ssh localhost
und überprüfenlast -i
.login locally
meine ichssh localhost
innerhalb dieser SSH-Sitzung zu tun . Ich habe diesen Satz geändert und hoffe, dass er jetzt weniger verwirrend ist.Wenn Sie sich bei einem Computer anmelden, sind dies möglicherweise nur wenige Einträge im letzten Befehl.
Der erste Eintrag mit tty * kommt, wenn Sie sich über das Terminal oder die Konsole anmelden, indem Sie STRG + ALT + F1-6 drücken. Es ist ziemlich klar von dem Terminal, das es benutzt.
Der zweite Eintrag wird normalerweise angezeigt, wenn Sie sich bei einem Computer anmelden und ein Terminalfenster in der GUI öffnen. Es wird auch dann ein Eintrag angezeigt, wenn Sie im selben Terminalfenster einen neuen Tab öffnen.
Der dritte Eintragstyp tritt ein, wenn Sie eine Bildschirmsitzung öffnen, nachdem Sie sich über SSH angemeldet haben. Dadurch wird dort auch ein Eintrag ohne IP-Adresse erstellt.
Der vierte Eintrag ist ziemlich normal, was jeder versteht.
Wenn Sie
last -i
mit den folgenden Einträgen arbeiten, sehen Sie so etwas:Ich bin mir ziemlich sicher, dass Ihr Fall in einem der beiden Fälle untergeht, einer mit dem Terminalfenster in der GUI und der andere mit der Bildschirmsitzung.
Hoffe das hat geholfen.
quelle
screen
einen der0.0.0.0
Einträge verwendet. Ich benutze die GUI nur, wenn ich die Maschinen installiert habe (ca. August / September). Ich sehe0.0.0.0
nach dieser Zeit viele Pkt-Einträge.Ich glaube nicht, dass wir damit weiterkommen werden, ohne last.c zu debuggen, aber das sollte nicht allzu schwer sein, da es sich leicht kompilieren lässt ...
Eine Möglichkeit besteht jedoch darin, die Datei / var / log / wtmp mit dem Befehl utmpdump zu sichern und sich die Rohdatensätze anzusehen, die Ihnen möglicherweise Aufschluss geben . Wenn nicht, posten Sie bitte eine relevante Ausgabe von
Damit können wir lokale Kopien Ihres wtmp zum Debuggen wiederherstellen
quelle
Ich habe 12 auf CentOS und RHEL 6.3 basierende Anwendungsserver für mehrere Benutzer überprüft. Keiner zeigte dieses Verhalten. Es gab keine fehlenden Einträge in der
last
Ausgabe, die 4-5 Wochen zurückgingen.Ich denke, es wäre wichtig, Ihren
/etc/hosts
Dateieintrag zu sehen, um sicherzustellen, dass er diesem Format entspricht .Was tun Sie auch für die DNS-Auflösung? Kannst du deine posten
/etc/resolv.conf
?Die anderen Antworten, die angeben, dass
0.0.0.0
lokale Verbindungen dargestellt werden, sind korrekt. Die typischen Beispiele sind Neustart- und Konsolenanmeldungsereignisse:Da dies nur bei namentlich genannten Benutzern auftritt, gibt es eine Änderung, bei der etwas Ungewöhnliches in ihren Anmeldeskripten gefunden oder ausgeführt wird? Haben Sie geändert
~/.bashrc
oder~/.bash_profile
von der Standardeinstellung? Gibt es andere spezielle Anmeldeskripte in der Umgebung?--Bearbeiten--
Ich kann das immer noch nicht reproduzieren. Ich betrachte jedoch zwei kritische Komponenten. Der
last
Befehl ist stabil und wurde seit langem nicht mehr geändert. Im Changelog für Sysvinit-Tools gibt es keine relevanten Fehler. Gleiches gilt für Initscripts (wtmp).Wenn Sie dies erzwingen können, versuchen Sie es mit einem anderen Benutzerkonto auf denselben Quellcomputern. Aber ich sehe keinen Hinweis darauf, dass dies ein Betriebssystemproblem ist.
quelle
/etc/hosts
) alle betreffen sollten ... nicht Nur ichlast -if
beiden Dateien überprüfen und feststellen, ob im Laufe der Zeit dieselben Ergebnisse erzielt werden?/var/log/secure
Einträge ... die Einträge, die zeigen,0.0.0.0
zeigen nichts in/var/log/secure
ENDGÜLTIGE ENTSCHLIESSUNG
Ich habe den Bonus bereits vergeben, das ist also nur für zukünftige Googler mit der gleichen Frage.
Der Grund, warum dies nur in ~ 10% meiner Anmeldungen vorkommt, ist, dass ich bei größeren Änderungen an unseren Routern oder Switches
script foo.log
ein vollständiges Terminalprotokoll der Änderung verwende. Aus Gründen, die ich immer noch nicht verstehe, erstellt CentOS einenpts
Eintrag, wenn Sie denscript
Befehl verwenden ... Ich werde die Ausgabe vonlast -i
vor und nach dem Ausführen demonstrierenscript
...Dieses Verhalten scheint für CentOS 6 einzigartig zu sein ... wir haben einige CentOS 4.7-Maschinen im Labor, die keinen leeren Eintrag in
wtmp
... setzen. Debian / Gentoo-Maschinen zeigen dieses Verhalten ebenfalls nicht. Unsere Linux-Administratoren kratzen sich am Kopf, warum CentOSpts
bei der Ausführung absichtlich einen weiteren Eintrag hinzufügtscript
... Ich vermute, dies ist ein RHEL-Fehler.BEARBEITEN : Ich reichte dieses Problem als RHEL Bug-ID 892134 ein
HINWEIS
Einige Leute haben fälschlicherweise angenommen, dass ich
script
mein~/.bashrc
oder einfüge~/.bash_profile
. Dies ist ein fehlerhaftes Argument ... wenn das wahr ist,wtmp
sollte ich0.0.0.0
nach jedem meiner SSH-Logins einen Eintrag haben ...Das war natürlich nicht der Fall ...
quelle
script
in Ihrer ersten Frage nicht erwähnt, dass Sie den Befehl verwenden.script
Programm erstellt ein Typoskript von allem, was auf Ihrem Terminal gedruckt wird. Es ist ein relevantes Detail..bashrc
oder.bash_profile
nicht; Ich führe aus,script foo.log
wenn ich größere Änderungen vornehme, damit ich ein Änderungsprotokoll haben kann ... das ist der Grund, warum es nur ~ 10% meiner Anmeldungen betrifft. 2) Wenn Ihre Anschuldigung korrekt ist (und es nicht ist), hätte ich niemals ein SSH-Login das hatte keinen weiteren0.0.0.0
Eintrag gleich danach 3)script
macht dies nur in CentOS ... Ich habe es seit über einem Jahrzehnt benutzt und dieses Verhalten in keiner anderen Distribution gesehen ... an dieser Stelle behaupte ich, dass es wahrscheinlich ein CentOS ist Fehlerscript
werde aber nur eine Shell gabeln.script
Basieren Sie auf dem, was Sie hier anzeigen , die CentOS / Redhat-Version von Fork als erstes. Obwohl ein bisschen enttäuscht (: P), dass es sich nicht um etwas allgemeineres handelt, ist zumindest das Rätsel aus meinem Kopf verschwunden. PS: Ich bin überrascht Sie Gentoo haben in der Produktion @ @.Pseudo Terminal Slave (pts) -Verbindungen sind SSH- oder Telnet-Verbindungen, dh indirekte Verbindungen zum System. Alle diese Verbindungen können mit einer Shell verbunden werden, über die Sie Befehle an den Computer senden können. Wenn Sie also ein Terminal auf Ihrem System von GUI aus öffnen, öffnet es ein PTS mit der Quell-IP-Adresse 0.0.0.0. Aus den von Ihnen bereitgestellten Informationen geht hervor, dass dies auf ein auf diesem Server ausgeführtes oder geplantes Skript zurückzuführen ist, das den ssh- oder Telnet-Dienst oder lokale Punkte verwendet, um die Ausgabe in das Terminal zu werfen.
quelle
Welchen ssh client benutzt du? Einige ssh-Clients können mehrere Terminals über eine Verbindung multiplexen, und ich stelle fest, dass alle Ihre Sitzungen ohne IP-Adresse in längere Sitzungen fallen, in denen eine IP-Adresse protokolliert ist.
Ich kann dieses Verhalten mit ssh hier nicht duplizieren.
quelle
Möglicherweise wird Ihre IP-Adresse in eine leere Zeichenfolge auf einem Ihrer DNS-Server aufgelöst, wahrscheinlich die sekundäre, wenn sie nur zu 10 Prozent der Zeit auftritt (oder möglicherweise eine Hostdatei, wenn diese von einem zentralen Repository verteilt wird). Das würde den fehlenden (oder Leerzeichen-) Eintrag erklären und mit Sohams Lesart der Quelle übereinstimmen.
quelle
"0.0.0.0" bedeutet, dass es sich um einen lokalen Benutzer handelt (kein Remote-Login), der wahrscheinlich von einer Anwendung, z. B. Cronjob, aufgerufen wird.
quelle
# 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)
Dies liegt daran, dass Sie ein lokales System verwenden und 0.0.0.0 die IP-Adresse aller Schnittstellen bedeutet. Wenn Sie glauben, dass jemand etwas gehackt hat, versuchen Sie, die vollständige Protokollierung der Shell einschließlich der Befehle über ssh einzurichten - http://blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger/
quelle
Ich habe es gelöst, indem ich ein Skript zu ~ / .bashrc hinzugefügt habe. Das Skript findet die letzte IP-Adresse der Telnet-Verbindungsquelle. Dann können Sie die IP zu einer Protokolldatei hinzufügen oder tun, was immer Sie benötigen.
Sharon
quelle
netstat -nae | grep 23
Dies ist kein nützlicher Weg, um Telnet-Verbindungen zu finden. Dieser Befehl gibt 92 Ergebnisse auf meinem System aus, von denen keines Telnet ist.