/usr/sbin/ap und 99% CPU Last ?

tomquenten

New Member
Hallo,

ich hatte soeben seit mehr als 40 Minuten eine 99% CPU Auslastung mit ap. Soweit wie mir Tante Google weiterhelfen konnte steht ap für AccessPoint. Was mich als gebrandmarktes Kind allerdings wundert ist die hohe CPU Auslastung für einen so langen Zeitraum. Ich habe die PID dann gekillt. Seit dem ist Ruhe.

Ich habe in dem System keine WLAN Karte drin. Somit ist ap für mich auch gar nicht interessant. Ausgeführt wurde es zudem mit wwwrun. In den Logs konnte ich nichts auffällige finden, auch der Traffic blieb im Rahmen.

Andere Prozesse konnten normal ausgeführt werden, rief ich eine Website auf der Maschine auf, ging die CPU Last des Prozesses ap sofort runter. Nice stand per htop auf 0.

Das System ist Suse 11.3, alle Updates bis gestern sind drin.

Sollte ich mir Sorgen machen ??? Nach was könnte bzw. sollte ich in den Logs noch schauen???


Danke + Gruss
tomquenten
 
Kann es sein, dass in Deiner Anzeige rechts abgeschnitten ist?

Die einzige mir bekannte Applikation die erstens als wwwrun ausgeführt wird und zweitens mit ap beginnt, heißt Apache

Lass mich aber auch gern eines Besseren belehren ;-)

/cheers
Stephan
 
Hallo,

nein da ist absolut nichts abgeschnitten.

Per htop stand definitiv

  • /usr/sbin/ap

Ausgeführt unter dem User wwwrun. Ich bin für JEDEN Hinweis dankbar.


Gruss
tomquenten
 
Mal ins blaue geraten... weil ap tatächlich ein bissel kurz ist:

ap-trapd kenn ich = ap alleine. hmmm...

Nun jut = schau dir doch erstmal die Datei an.
Wenn es der apache ausgeführt hat, dann könnte es ein Script sein, was im Klartext lesbar sein sollte.


Beim nächsten mal vvlt. mal ps fax posten.
 
ggf. mal in den log ORdner vom apachen gehen (/var/log/apache) und dort mal folgendes ausführen

find . -type f|xargs grep "/usr/sbin/ap"

sollte aber nichts bringen. Aber ein Versuch isses ja wert
 
Fraglich wäre es ob /usr/sbin/ap ein Dienst ist.
Denn dieser wäre mir nicht bekannt.

Und ausführen... naja. Wenn es Schadsoftware ist, wäre das wohl nicht unbedingt der richtige weg.

Erstmal reinschaun und posten. Wenn binär, dann sollten wir es schonmal n bissel eingegrenzt haben.
 
Es wurde ja bereits mehrfach ausgeführt, da fällt einmal mehr nicht ins Gewicht und den gegebenenfalls notwendigen anschliessenden kill setze ich voraus. Wenn es ein Binary ist, helfen strings und strace weiter.
 
Solange es unter dem gleichen user ausgefuehrt wird hast du fast recht =)
Wenn er es aber als root startet...

Written on my Galaxy S. Please excuse typos!
 
Vielen Dank für die Antworten. Ich habe nach ap gesucht mit, und nichts gefunden.

Befehl
Code:
find / -name ap

Auch zu dem Zeitpunkt wo der Prozess noch lief, konnte ich ap in dem Verzeichnis /usr/sbin/ nicht finden.

Heute dann die Ernüchterung. Mein Mailprogramm präsentierte mir tausende Mails als unzustellbar. Bei der Sichtung der Maillogs kam dann auch schnell was zum Vorschein.

Ich vermute mal diese Art Eintrag kann ich ignorieren....
Code:
Sep 29 07:09:29 cottbus-handy postfix/smtp[11667]: 603728877: to=<[email protected]>, relay=mx3.hotmail.com[65.54.188.126]:25, conn_use=3, delay=0.66, delays=0.08/0/0.25/0.33, dsn=2.0.0, status=sent (250  <[email protected]> Queued mail for delivery)
Sep 29 07:09:29 cottbus-handy postfix/qmgr[485]: 603728877: removed

Nach meinem technischen Verständnis sieht das so aus als ob eine Mail per SMTP eingeliefert und danach gleich gelöscht wird, da nicht gültig.

Diese Zeilen bereiten mir aber Kopfzerbrechen. Ich habe hier mal eine MailID gefiltert um alle Einträge aus dem Log zu erhalten.

Code:
less /var/log/mail | grep F2D8C509B > mailid_F2D8C509B.txt

Das Ergebnis...
Code:
Sep 29 07:31:42 serverdomain postfix/pickup[21202]: F2D8C509B: uid=30 from=<wwwrun>
Sep 29 07:31:42 serverdomain postfix/cleanup[21185]: F2D8C509B: message-id=<[email protected]>
Sep 29 07:31:43 serverdomain postfix/qmgr[13975]: F2D8C509B: from=<[email protected]>, size=1613, nrcpt=1 (queue active)
Sep 29 07:31:43 serverdomain postfix/error[20433]: F2D8C509B: to=<[email protected]>, relay=none, delay=0.05, delays=0.04/0.01/0/0.01, dsn=4.7.0, status=deferred (delivery temporarily suspended: host g.mx.mail.yahoo.com[98.137.54.238] refused to talk to me: 421 4.7.0 [TS01] ....
Sep 29 07:41:20 serverdomain postfix/qmgr[13975]: F2D8C509B: from=<[email protected]>, size=1613, nrcpt=1 (queue active)
Sep 29 07:41:23 serverdomain postfix/error[24633]: F2D8C509B: to=<[email protected]>, relay=none, delay=581, delays=578/3.1/0/0.09, dsn=4.7.0, status=deferred (delivery temporarily suspended: host b.mx.mail.yahoo.com[74.6.136.65] refused to talk to me: 421 4.7.0 [TS01] ....
Sep 29 07:51:18 serverdomain postfix/qmgr[13975]: F2D8C509B: from=<[email protected]>, size=1613, nrcpt=1 (queue active)
Sep 29 07:53:44 serverdomain postfix/smtp[27610]: F2D8C509B: host h.mx.mail.yahoo.com[66.94.236.34] said: 451 Message temporarily deferred - [160] (in reply to end of DATA command)
Sep 29 07:53:45 serverdomain postfix/smtp[27610]: F2D8C509B: to=<[email protected]>, relay=g.mx.mail.yahoo.com[98.137.54.238]:25, conn_use=18, delay=1322, delays=1175/145/0.98/0.71, dsn=4.0.0, status=deferred (host g.mx.mail.yahoo.com[98.137.54.238] said: 451 Message temporarily deferred - [160] (in reply to end of DATA command))
Sep 29 08:16:35 serverdomain postfix/qmgr[534]: F2D8C509B: from=<[email protected]>, size=1613, nrcpt=1 (queue active)
Sep 29 08:16:36 serverdomain postfix/error[1857]: F2D8C509B: to=<[email protected]>, relay=none, delay=2693, delays=2692/0.68/0/0.34, dsn=4.7.0, status=deferred (delivery temporarily suspended: host j.mx.mail.yahoo.com[66.94.237.64] refused to talk to me: 421 4.7.0 [TS01] ....
Sep 29 09:06:04 serverdomain postfix/qmgr[534]: F2D8C509B: from=<[email protected]>, size=1613, nrcpt=1 (queue active)
Sep 29 09:06:08 serverdomain postfix/error[14718]: F2D8C509B: to=<[email protected]>, relay=none, delay=5665, delays=5662/2.5/0/0.53, dsn=4.7.0, status=deferred (delivery temporarily suspended: host f.mx.mail.yahoo.com[98.137.54.237] refused to talk to me: 421 4.7.0 [TS01] ....
Sep 29 10:16:03 serverdomain postfix/qmgr[30906]: F2D8C509B: from=<[email protected]>, size=1613, nrcpt=1 (queue active)
Sep 29 10:16:03 serverdomain postfix/error[32149]: F2D8C509B: to=<[email protected]>, relay=none, delay=9861, delays=9860/0.41/0/0.27, dsn=4.7.1, status=deferred (delivery temporarily suspended: host i.mx.mail.yahoo.com[74.6.140.64] refused to talk to me: 421 4.7.1 [TS03] ....
Sep 29 11:26:05 serverdomain postfix/qmgr[13223]: F2D8C509B: from=<[email protected]>, size=1613, nrcpt=1 (queue active)
Sep 29 11:26:07 serverdomain postfix/error[17798]: F2D8C509B: to=<[email protected]>, relay=none, delay=14065, delays=14063/1.9/0/0.02, dsn=4.7.1, status=deferred (delivery temporarily suspended: host f.mx.mail.yahoo.com[98.137.54.237] refused to talk to me: 421 4.7.1 [TS03] ....

Sowie ein weiteres Ergebnis...
Code:
Sep 29 09:11:05 serverdomain postfix/cleanup[15938]: 7AC688B6B: message-id=<[email protected]>
Sep 29 09:11:05 serverdomain postfix/qmgr[15857]: 7AC688B6B: from=<>, size=4512, nrcpt=1 (queue active)
Sep 29 09:11:05 serverdomain postfix/bounce[15859]: E298F41B48: sender non-delivery notification: 7AC688B6B
Sep 29 09:11:05 serverdomain postfix/cleanup[15931]: BAFB28C56: message-id=<[email protected]>
Sep 29 09:11:05 serverdomain postfix/local[15943]: 7AC688B6B: to=<[email protected]>, relay=local, delay=0.33, delays=0.08/0.18/0/0.07, dsn=2.0.0, status=sent (forwarded as BAFB28C56)
Sep 29 09:11:05 serverdomain postfix/qmgr[15857]: 7AC688B6B: removed

Da ich vermute das hier ein PHP Script die Ursache ist, lasse ich seit Stunden nach mail suchen.

Code:
find . -type f|xargs grep "mail" > mail.txt

Das allerdings kann noch lange dauern.

Auf die Vermutung kam ich als ich gesehen hab das wwwrun als User benutzt wird und das gleichzeitig in den Logs sehr viel von postfix/local zu finden ist. In meinem obigen 2. Beispiel allerdings gab es gleich danach ein removed, was für mich heißt gelöscht/verworfen.

Wer hat noch eine Idee wie ich das Übeltäter-Script ausfindig machen kann? Jeder noch so kleine Hinweis ist willkommen.


Danke
tomquenten
 
So, nachdem ich nun den ganzen Tag versucht habe das Problem einzugrenzen, hier nun für Interessierte ein Lösungsvorschlag.

Da ich die Vermutung habe / hatte das ein PHP Script mißbraucht wurde, ich aber trotz intensivem Lesen der Maillogs mir noch immer nicht sicher bin ob nun ein PHP Script dafür verantwortlich ist oder ob ein SMTP Account geknackt wurde habe ich nun viel gelesen und folgendes gefunden....

in der php.ini gibt es ab php 5.3. eine schöne Loggingmöglichkeit für PHP Scripte die mail benutzen.

Code:
Log all mail() calls including the full path of the script
mail.log = /var/log/php_mail.log

Das besondere.....das verantwortliche Script wird mit aufgeführt. DAS ist doch mal eine Vorteil!

Nun werde ich mal sehen, ob ich meinem Problem damit auf die Schlice kommen kann.

tomquenten
 
schau auch mal in die "access.log", vielleicht findest du dort den Angriff, vielleicht ein RFI über eine unsichere PHP Variable?
 
Vielen Dank für den Tipp! Mit...

Code:
less /var/log/apache2/access.log | grep RFI

bekam ich zwar eine Hand voll Ergebnisse, die Ereignisse führten jedoch nicht zum Erfolg. Daher kann ich RFI komplett ausschließen.

Ebenso kann ich jetzt eine Schwachstelle in PHP ausschließen die auf RFI abzielt. Genau gesagt meine ich damit require und include bzw. require_once und include_once. Dies wird zwar benutzt aber alle eingebundenen Files sind statisch hinterlegt, weshalb eine Übergabe durch den User gar nicht erfolgen kann. Man möge mich verbessern sollte ich hier falsch liegen.


Gruss
tomquenten
 
[OT]
Useless use of less detected.

Statt
Code:
less file | grep 'pattern'
bitte
Code:
grep 'pattern' file
verwenden.

Danke.
[/OT]
 
Also nochmal ein Bericht.

Ich hatte ja gehofft das mir

Code:
mail.log = /var/log/php_mail.log

in der php.ini was brauchbares liefern würde. Da ich selber (noch) Scripte habe die die mail Funktion von PHP nutzen, ich diese Scripte per Cron täglich ausführen lasse, die Mails auch auf meinen PDA bekommen habe, sollte doch in der php_mail.log nun endlich mal was drin stehen. Leider ist das Log File immer noch leer. In der mail log habe ich die aufrufe gefunden.

Nachdem ich die php.ini mit der oben genannten Änderung versehen habe, hatte ich auch den Apache neu gestartet. Somit sollte die Änderung auch übernommen worden sein?

Hab ich noch was übersehen? Noch eine Einstellung die notwendig ist?

Darüber hinaus habe ich nach php + smtp gesucht. Super...mit php Scripten kann ich per SMTP versenden, aber wie kann ich die locale mail funktion OHNE authentifizierung deaktivieren? Der Gedanke ist, das man nur noch mails per Authentifizierung versenden darf. Somit weiß ich dann zumindest welcher User hier Spam versendet.

Hab ich da evtl. einen Denkfehler? Ich habe bisher nichts über das deaktivieren dieser Funktion gefunden - auch bei php.net nicht.

@joe user
Danke für den Tipp, allerdings klappt das bei mir überhaupt nicht.



Gruss
tomquenten
 
@joe user
Danke für den Tipp, allerdings klappt das bei mir überhaupt nicht.
Wenn Folgendes nicht klappt, dann hast Du ein ernsthafteres Problem, als Dein ap.

Statt
Code:
less /var/log/mail | grep F2D8C509B > mailid_F2D8C509B.txt
sollst Du
Code:
grep F2D8C509B /var/log/mail > mailid_F2D8C509B.txt
verwenden. Woher hast Du überhaupt den Schwachsinn mit less?

Sorry fürs notwendige OT.
 
Hallo Joe User

Wenn Folgendes nicht klappt, dann hast Du ein ernsthafteres Problem, als Dein ap.

Ich nehm alles zurück. Aufgrund der vielen Einträge gestern, war das Logfile durch logrotate bereits gepackt und auf meinem lokalen Server im Shop. Somit war dieser Eintrag natürlich nicht mehr vorhanden.

Statt
Code:
less /var/log/mail | grep F2D8C509B > mailid_F2D8C509B.txt
sollst Du
Code:
grep F2D8C509B /var/log/mail > mailid_F2D8C509B.txt
verwenden.

Mit einem aktuellen Eintrag funktioniert das natürlich.

Woher hast Du überhaupt den Schwachsinn mit less?

Von meinem Provider der hier im Forum ebenfalls aktiv ist. Es hat ja genau so funktioniert, das Ergebnis war ja das gleiche. Einen Unterschied konnte ich nicht erkennen. ABER darum soll es ja jetzt nicht gehen....

Sorry fürs notwendige OT

Wir lernen alle nicht aus....

Hat irgendjemand schon mal den mail.log Eintrag in der php.ini gesetzt und geschaut ob da Einträge erscheinen beim Scriptaufruf? Bei mir kommt nach wie vor.....nichts an. Ich werde das abend noch mal auf meiner Spielwiese probieren.

tomquenten
 
Hallo,

es ist wieder passiert. 2 Prozesse mit dem Name -ap- liefen urplötzlich. Da ich seit einiger Zeit mit htop alles im Auge behalte fielen mir beide Prozesse sofort auf. Beide schluckten 49% CPU Leistung. Der Traffic blieb im Rahmen. Eine Sichtung aller Logs brachte ebenfalls keinen Hinweis WO diese Prozesse herkommen. mit ps fax gab es folgende Ausgabe...(gekürzt)

Code:
  PID TTY      STAT   TIME COMMAND

31003 ?        R      7:54 /usr/sbin/ap
31004 ?        R      7:54 /usr/sbin/ap


Mit pstree habe ich dann zumindest erfahren das es sich wohl um Perl Scripte handelt. Unter /usr/sbin/ war aber nichts zu finden was ap heißt. Was verflixt noch mal kann das sein?
Code:
server:~ # pstree
init-+-auditd---{auditd}
     |-cron
     |-dovecot-+-dovecot-auth
     |         |-3*[imap-login]
     |         `-5*[pop3-login]
     |-httpd2-prefork-+-10*[httpd2-prefork]
     |                `-split-logfile.p
     |-master-+-anvil
     |        |-pickup
     |        |-qmgr
     |        |-smtpd
     |        |-tlsmgr
     |        `-trivial-rewrite
     |-mingetty
     |-mysqld_safe---mysqld---10*[{mysqld}]
     |-nscd
     |-ntpd
     |-2*[perl]
     |-python
     |-rsyslogd---4*[{rsyslogd}]
     |-saslauthd---4*[saslauthd]
     |-sshd---sshd---bash---pstree
     |-udevd---2*[udevd]
     `-vsftpd

Etwas was mir noch zu denken gibt......Während ich auf der Suche war, erschienen plötzlich 2 find Prozesse in htop.....für kurze Zeit. Ich hab zu dem Zeitpunkt noch nicht gesucht gehabt. Mein SSH Zugang ist mit einem Keyfile gesichert. Alles anderen Verbindungsversuche werden sofort abgelehnt. Auch konnte ich in den SSH Logs keine Verbindungen außer meine eigenen feststellen. (Hätte ja sein können, jemand hat mein Key)

Da beim letzten mal am Folgetag Spam verschickt wurde, werde ich heute abend mal lieber postfix stoppen. Trotzdem will ich raus bekommen wo ap herkommt und besser noch was es macht.

Wie kann ich noch vorgehen und was kann ich noch tun um dem Treiben auf die Schliche zu kommen? Jede Idee ist willkommen.

Gruss
tomquenten
 
Hast du den Eintrag in der richtigen php.ini gemacht? Wenn du sie per cron direkt mit /usr/bin/php ausführst wird (zumindest bei mir, debian) eine andere php.ini als die vom apache verwendet.

Beste Grüße,
Johannes
 
Beim nächsten Mal bitte folgende Ausgaben posten:
Code:
ls -alh /proc/*/task/<PID>/
cat /proc/*/task/<PID>/status
cat /proc/*/task/<PID>/cmdline
 
Back
Top