PDA

Bekijk Volledige Versie : service httpd kapt ermee, wil niet herstarten omdat poort bezet is



MortyDot
23/07/09, 20:54
Hallo,

Ik heb de laatste tijd last van een webserver met directadmin waarvan apache op ongeregelde (geen vaste) tijden gestopt word.

DirectAdmin probeert vervolgens netjes met een tooltje httpd weer op te starten maar dat lukt niet omdat deze poort al bezet is. Na wat zoeken kwam ik erachter dat de poort niet door httpd bezet was (service httpd stop succesvol)

Mijn vraag is alsvolgt:


Wat stopt httpd
Wat zit er te luisteren op die poort
Hoe voorkom ik dit in de toekomst?



[root@web2]# service httpd start
Starting httpd: [Thu Jul 23 17:47:47 2009]
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
[root@web2]# fuser 80/tcp
80/tcp: 5106
[root@web2]# ps 5106
PID TTY STAT TIME COMMAND
5106 ? Ss 0:00 ./mech
[root@web2]# kill -n 9 5106
[root@web2]# service httpd start
Starting httpd: [Thu Jul 23 17:49:18 2009]
[root@web2]#


Ik zie uit naar jullie reacties,
Sven

marsipulami
23/07/09, 21:16
wanneer het weer voorkomt even kijken wat er op die poort zit. moet volgens mij met dit commando kunnen:


netstat -l -n -p |grep 80

ichosting
23/07/09, 21:20
Lijkt er op dat er een fake httpd process draait? Mogelijk een lek scriptje op een account?

Kijk eens in de apache cron of je daar iets geks ziet staan?

t.bloo
23/07/09, 21:25
Wat stopt httpd

Httpd maakt regelmatig nieuwe processen van zichzelf aan. Als dat niet lukt, dan stopt het. Daarnaast herstart DirectAdmin deze service na wijzigingen in de vhosts, bijvoorbeeld als er een nieuwe user aangemaakt wordt of iemand z'n config wijzigt.


Wat zit er te luisteren op die poort

Het programmaatje ./mech blijkbaar.


Hoe voorkom ik dit in de toekomst?

Zorgen dat men deze programmaatjes niet meer op je server kan plaatsen en kan starten. Je hebt ergens een lekje.

phreak
23/07/09, 21:36
mech... dat ziet eruit als een ircbotje.. classic :)

xaban
23/07/09, 22:29
Kijk eens in je /tmp of je een executable mech tegen komt? :)

MortyDot
23/07/09, 22:35
@marsipulami
Dit had ik al gedaan, zie de console log wat ik in begin topic geplaatst had, dit was "fuser 80/tcp". resultaat was PID 5106.

@ichosting
Het gebeurt onregelmatig, zoms week niet, zoms dagelijks.

@t.bloo en @phreak
Oke, duidelijk, ben aan het zoeken gegaan en heb "locate mech" uit en kom verschillende dingen tegen. Waaronder mapjes van dovecot (voor mail meende ik) maar ook in mapjes en bestanden van users. Echter zijn dit er zoveel dat ik hier geen conclusie uit kan trekken.

Kan ik de volgende keer dat dit weer gebeurd ook achterhalen welke bestanden aan het betreffende PID gebonden zitten?



Maar belangrijker, na vinden van de oorzaak, hoe voorkom ik het in de toekomst? Jullie noemen gaten dichte, logisch, maar waarmee en hoe? Hoe voorkomen jullie dit zelf? :-)

Software draait allemaal op nieuwste versie (php, apache, etc.) safe mode is altijd on.

t.bloo
23/07/09, 22:44
zorg ook dat /tmp noexec nosuid gemount is
geef niemand ssh toegang
draai apache met een UID changer

Dirkje
23/07/09, 23:25
zorg ook dat /tmp noexec nosuid gemount is
geef niemand ssh toegang
draai apache met een UID changer

Doe /var/tmp dan ook maar meteen ;) Maar zorg er ook zeker voor dat je niet een clean apxs PHP draait maar wel wat beveiliging toepast (php-cgi, suphp, mod_security, fastcgi... je kan het zo gek maken als je wilt).

Randy
23/07/09, 23:33
safe_mode biedt enkel schijnveiligheid. Heb je een linkje naar een php.ini op een server zodat ik eens wat kan kijken?

MortyDot
24/07/09, 08:36
wanneer het weer voorkomt even kijken wat er op die poort zit. moet volgens mij met dit commando kunnen:

Nog even voor marsipulami:
Kreeg vannacht weer dit probleem, mogelijk kun jij er wat mee, word er zelf niks wijzer uit....



[root@web2 ~]# fuser 80/tcp
80/tcp: 591
[root@web2 ~]# ps 591
PID TTY STAT TIME COMMAND
591 ? Ss 0:00 ./mech
[root@web2 ~]# netstat -l -n -p |grep 80
tcp 0 0 195.216.246.80:5252 0.0.0.0:* LISTEN 9196/logs
tcp 0 0 195.216.246.80:6667 0.0.0.0:* LISTEN 9196/logs
tcp 0 0 195.216.246.80:6668 0.0.0.0:* LISTEN 9196/logs
tcp 0 0 195.216.246.80:53 0.0.0.0:* LISTEN 5118/named
tcp 0 0 :::80 :::* LISTEN 591/mech
udp 0 0 195.216.246.80:53 0.0.0.0:* 5118/named
unix 2 [ ACC ] STREAM LISTENING 8030 4394/pcscd /var/run/pcscd.comm
unix 2 [ ACC ] STREAM LISTENING 8235 4480/acpid /var/run/acpid.socket
Ben dus maar opzoek gegaan naar /mech (locate mech)


[root@web2 ~]# locate /mech
/home/hoekstra/domains/leavelytse.nl/public_html/images/cmss/ps/mech
/home/hoekstra/domains/leavelytse.nl/public_html/images/cmss/ps/mech.help
/home/hoekstra/domains/leavelytse.nl/public_html/images/cmss/ps/mech.levels
/home/hoekstra/domains/leavelytse.nl/public_html/images/cmss/ps/mech.pid
/home/hoekstra/domains/leavelytse.nl/public_html/images/cmss/ps/mech.session
/home/hoekstra/domains/leavelytse.nl/public_html/images/cmss/ps/mech.set
/home/null/pa/mech
/home/null/pa/mech.help
/home/null/pa/mech.levels
/home/null/pa/mech.pid
/home/null/pa/mech.session
/home/null/pa/mech.set
/home/wws10/domains/0564sp.com/public_html/cgi-bin/cmss/px/mech
/home/wws10/domains/0564sp.com/public_html/cgi-bin/cmss/px/mech.help
/home/wws10/domains/0564sp.com/public_html/cgi-bin/cmss/px/mech.set
/usr/include/gssapi/mechglue.h
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-anonymous.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-anonymous.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-apop.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-apop.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-cram-md5.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-cram-md5.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-digest-md5.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-digest-md5.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-gssapi.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-gssapi.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-login.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-login.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-ntlm.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-ntlm.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-otp.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-otp.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-plain.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-plain.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-rpa.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-rpa.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-skey.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-skey.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-winbind.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech-winbind.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech.c
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech.h
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/mech.o
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-anonymous.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-apop.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-cram-md5.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-digest-md5.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-gssapi.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-login.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-ntlm.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-otp.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-plain.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-rpa.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-skey.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech-winbind.Po
/usr/local/directadmin/custombuild/dovecot-1.1.8/src/auth/.deps/mech.Po
/usr/share/doc/cyrus-sasl-lib-2.1.22/mechanisms.html
@randy
url voor phpinfo(); is: http://webcenter.mortydot.com/php-info.php
Inhoud van php.ini op zelfde server: http://webcenter.mortydot.com/php-info-ini.php

Cakkie
24/07/09, 08:57
Die mech in die folder van die twee users (en die in /home/null) is blijkbaar een IRC bot.

Beginnen met die handel gewoon te verwijderen, verder kijken of die user geen cronjobs heeft draaien die uw httpd de mist in doen gaan (of die dat proces opnieuw proberen te starten of downloaden/installeren).

Verder ook die gebruikers er op aanspreken. Ofwel heeft hij het moedwillig gedaan, ofwel heeft hij mss een weak password of een bug in zijn website waardoor iemand anders het heeft kunnen laden.

//edit: die 0564sp.com lijkt me trouwens maar een 'dubieuze' site.

marsipulami
24/07/09, 09:32
//edit: die 0564sp.com lijkt me trouwens maar een 'dubieuze' site.

Google denkt dat ook, maar dat terzijde.

@TS, wat je al zei dat je dat al gedaan had, maar dan met fuser. is precies hetzelfde uitgekomen, en mech ken ik verder ook niet, maar enkele anderen denken dus dat het om een irc bot gaat.

daar zou ik ook mee verder gaan zoeken

phreak
24/07/09, 09:59
cd /
find ./ -type f -name 'mech*' -exec rm -f {} \;

Cakkie
24/07/09, 10:25
Als je die leavelytse.nl/images/cmss/ps/mech.set bekijkt, dan zie je overduidelijk dat het om een irc bot gaat.

Japje
24/07/09, 10:28
tijd voor een mod_ruid/suphp toevoeging aan je apache, wat mooie php flag instellingen voor bv url_include en eens goed kijken voor een iptables firewall.. kom je denk ik al een eindje mee ;)

bami82
24/07/09, 10:35
cd /
find ./ -type f -name 'mech*' -exec rm -f {} \;


Hmm, lijkt me niet handig om alles met mech* weg te gooien waaronder al die dovecot dingen en /usr/include/gssapi/mechglue.h

dreamhost_nl
24/07/09, 10:37
Dat commando zou ik zeker niet zo uitvoeren. Alle bestanden beginnend met "mech" worden zo verwijderd zonder dat je vantevoren weet welk.
Dus ook :


/usr/share/doc/cyrus-sasl-lib-2.1.22/mechanisms.html

Lijkt me toch een gangbaar bestand dat moet blijven bestaan.
Sowieso zou ik aanraden om op zulke bestanden een "chown root.root" en "chmod 0" uit te voeren. De bestanden blijven dan te raadplagen maar kunnen niet worden uitgevoerd.

Japje
24/07/09, 10:39
Sowieso zou ik aanraden om op zulke bestanden een "chown root.root" en "chmod 0" uit te voeren. De bestanden blijven dan te raadplagen maar kunnen niet worden uitgevoerd.

Je kunt beter moeite steken in het voorkomen dat ze er op komen te staan.. als ik de uploader was zou ik ze de volgende keer ergens anders neerzetten ;)

X-Hosted
24/07/09, 11:48
Zo klaar als een klontje; IRC Botje, server niet tot niet goed beveiligd. Dit is echt wel een beetje de basis van beveiliging waar we over praten hoor.

Indien je daar zelf niet de know-how voor hebt zou je misschien eens kunnen kijken naar een secuirity audit door een derde partij zodat je ook in de toekomst en misschien op meerdere van je servers hiermee geen ge-emmer krijgt in de toekomst.

Verm_Hans
24/07/09, 12:16
misschien die poorten blocken in je firewall.

6667 is duidelijk een IRC poort :)

mikeh
24/07/09, 13:31
Bestond /home/null al voordat je dit ondekte ?

Randy
24/07/09, 16:37
Begin eens met wat functies te disablen in PHP, zoals bijvoorbeeld: show_source, system, shell_exec, passthru, exec, proc_open.
Eventueel kun je CSF als firewall installeren. Deze heeft een security audit die je aardig op weg zal helpen met allerlei instellingen. Verder moet je zeker geen mod_php gebruiken en alles en iedereen onder apache:apache draaien. PHP via CGI met suPHP is het makkelijkste voor DA doosjes. mod_ruid (en dan een actuele variant) is nog beter.

phreak
24/07/09, 16:43
Hmm, lijkt me niet handig om alles met mech* weg te gooien waaronder al die dovecot dingen en /usr/include/gssapi/mechglue.h

Was een voobeeld..

XBL
24/07/09, 22:22
Verder moet je zeker geen mod_php gebruiken en alles en iedereen onder apache:apache draaien. PHP via CGI met suPHP is het makkelijkste voor DA doosjes. mod_ruid (en dan een actuele variant) is nog beter.

mod_ruid kan gewoon met mod_php, heb je niet die vertraging erin zitten van de CGI binary.

Verder zou ik eens kijken waar het lek zit. Grote kans dat het een lek in 1 van de websites is, dan zou ik achter de klant aan gaan zitten om het lek te fixen (mogelijk is het standaard software waar updates voor zijn).

Als je de bestanden verwijderd en je een beetje geluk hebt, komt de 'hacker' terug. Heb je dan mod_ruid draaien ben je er zo achter wat het lek veroorzaakt.

pid
16/08/09, 20:51
Doe /var/tmp dan ook maar meteen ;) Maar zorg er ook zeker voor dat je niet een clean apxs PHP draait maar wel wat beveiliging toepast (php-cgi, suphp, mod_security, fastcgi... je kan het zo gek maken als je wilt).

Knikt nee.
/var/tmp zou ik linken aan /tmp...