Bekijk Volledige Versie : Host commando in apache error logs
Ik kom deze heel veel tegen in de apache error logs:
Usage: host [-aCdlriTwv] [-c class] [-N ndots] [-t type] [-W time]
[-R number] [-m flag] hostname [server]
-a is equivalent to -v -t ANY
-c specifies query class for non-IN data
-C compares SOA records on authoritative nameservers
-d is equivalent to -v
-l lists all hosts in a domain, using AXFR
-i IP6.INT reverse lookups
-N changes the number of dots allowed before root lookup is done
-r disables recursive processing
-R specifies number of retries for UDP packets
-s a SERVFAIL response should stop query
-t specifies the query type
-T enables TCP/IP mode
-v enables verbose output
-w specifies to wait forever for a reply
-W specifies how long to wait for a reply
-4 use IPv4 query transport only
-6 use IPv6 query transport only
-m set memory debugging flag (trace|record|usage)
Zo te zien wordt dus het host commando gebruikt, misschien door een webshop of zoiets? Geen idee maar het werkt storend als je de logs moet doorzoeken.
Nu ben ik dus op zoek naar iets wat van dit commando gebruik zou kunnen maken.
Ik heb wel een vermoeden van welk gebruikersaccount het afkomstig is, want een paar dagen geleden kwam dit bericht van CSF/LFD:
Onderwerp: lfd on server.mydomain.nl: Excessive resource usage: ppxxxxxx (32543 (Parent PID:32050))
Time: Wed Jan 15 17:12:26 2014 +0100
Account: ppxxxxxx
Resource: Virtual Memory Size
Exceeded: 250 > 150 (MB)
Executable: /usr/bin/host
Command Line: host -W 1 157.56.93.93
PID: 32543 (Parent PID:32050)
Killed: No
Deze heeft hoofdzakelijk wordpress installaties en webshops op zijn account. Hoe kan ik nu het beste uitzoeken door welk script precies dit commando gebruikt wordt? Want dat stond helaas niet in de mail van de firewall en ook niet in de apache error log. In de domeinlog zag ik er ook niets van zo vlug.
Het gaat om een server met Directadmin.
systemdeveloper
17/01/14, 22:24
Ik kom deze heel veel tegen in de apache error logs:
Zo te zien wordt dus het host commando gebruikt, misschien door een webshop of zoiets? Geen idee maar het werkt storend als je de logs moet doorzoeken.
Nu ben ik dus op zoek naar iets wat van dit commando gebruik zou kunnen maken.
Ik heb wel een vermoeden van welk gebruikersaccount het afkomstig is, want een paar dagen geleden kwam dit bericht van CSF/LFD:
Deze heeft hoofdzakelijk wordpress installaties en webshops op zijn account. Hoe kan ik nu het beste uitzoeken door welk script precies dit commando gebruikt wordt? Want dat stond helaas niet in de mail van de firewall en ook niet in de apache error log. In de domeinlog zag ik er ook niets van zo vlug.
Het gaat om een server met Directadmin.
grep ?
Ja al geprobeerd... Doe ik zoeken op host -w dan vindt ie niets.
Doe ik zoeken op host of host met een spatie, dan vindt ie zowat alle files omdat overal wel ergens iets van host of localhost in staat.:(
Of ik doe iets verkeerd, kan ook. Ik gebruikte deze:
grep -H -i -n -r 'host ' /home/user/domains/*/public_html
systemdeveloper
18/01/14, 00:02
Ja al geprobeerd... Doe ik zoeken op host -w dan vindt ie niets.
Doe ik zoeken op host of host met een spatie, dan vindt ie zowat alle files omdat overal wel ergens iets van host of localhost in staat.:(
Of ik doe iets verkeerd, kan ook. Ik gebruikte deze:
grep -H -i -n -r 'host ' /home/user/domains/*/public_html
Je kunt het resultaat pipen naar een 'grep -v localhost' om snel grote groepen regels eruit te filteren
Dus je bedoeld dat localhost er dan niet meer als resultaat uit komt? Phuu.. ik ben niet thuis in grep.
Hoe doe je zoiets?
Dus je bedoeld dat localhost er dan niet meer als resultaat uit komt? Phuu.. ik ben niet thuis in grep.
Hoe doe je zoiets?
Zo dus:
grep -H -i -n -r 'host ' /home/user/domains/*/public_html | grep -v 'localhost'
Oh gewoon er achter zetten? Ik dacht dat ie hem dan juist ging bekijken. Bedankt, ga ik onthouden!
Helaas helpt het niet. Er blijven honderden files in de output komen:
Met worden als "ihost =", "dbhost", "host =" en ik kwam er zelfs een tegen met veel spaties;
class-snoopy.php:44: var $host =
Buiten alle foutmeldingen van host refused to connect, contact your webhost etc. etc. etc.
Dus vermoedelijk ga ik hem zo niet vinden.
Is er niet een mogelijkheid om de log van apache wat uitgebreider te maken op een of andere manier (desnoods tijdelijk), zodat je niet alleen die foutmelding in de error_log krijgt maar dat er ook bij komt te staan van waaruit (welk script ofzo) het geinitieerd wordt?
systemdeveloper
18/01/14, 15:13
Mja, kan toch niet zo lastig zijn om even wat logs te bekijken als je weet wat erin staat?
vi <jouw apache error log file>
/Usage en [enter] om naar de eerste regel te springen met je Usage: etc melding
En dan in de buurt even kijken wat er aan de hand is. Eventueel tijdstip opzoeken in je apache request log file.
Het is niet lastig om logs te bekijken. Ik doe dat overigens normaliter met nano en dan ctrl-w om te zoeken.
Maar ik probeerde met grep te zoeken welke logfile dat ik dan moet gaan bekijken. Die gebruiker heeft iets van 20 domeinen in zijn account en dan ben ik er nog niet eens zeker van dat hij de enige is die deze fout veroorzaakt.
De errorlog laat alleen zien wat ik in mijn eerste bericht in de quote zette. Dus welke log moet ik dan kijken?
Dit is wat er net boven staat:
[Sun Jan 12 03:35:41 2014] [error] [client 69.58.178.56] File does not exist: /var/www/html/404.shtml
Usage: host [-aCdlriTwv] [-c class] [-N ndots] [-t type] [-W time]
[-R number] [-m flag] hostname [server]
Ik kan best een logfile doorzoeken, maar als er niets anders staat dan alleen dit.... waar moet ik dan nog kijken? Dan lijkt het mij toch dat het alleen nog aangeroepen kan worden door een of ander script, toch?
Ik begrijp alleen niet waarom dat stukje van het script wat het aanroept niet erbij staat in de error_log. Daarom dus zoeken. Er staat niet eens een tijd bij, niks, alleen die usage melding die je ook ziet als je host intypt in console en dan enter er achter.
systemdeveloper
18/01/14, 15:46
Je hebt dan toch het tijdstip ongeveer (voor en na de error) ? In je normale logs moet je dan wel iets kunnen vinden rond die tijd? Eventueel in je cron logs.
Of grep eens in de scripts op system() of exec() e.d. commando's. Iets in de trant van : grep 'host' | grep 'exec' en dat soort combinaties.
De error is vrijwel doorlopend. Dus die tijdstippen zijn dan wel heel erg globaal. Maar dat is nog niet zo erg.
Maar wat bedoel je met normale logs? In /var/log/messages staan rond die tijden alleen wat iptables regels. In de httpd access logs zie je er totaal niets van.
Cronlogs gaan het in elk geval niet worden, de user draait geen cron, heb wel voor de zekerheid gekeken.
Met grep gezocht in de user directory op die commando's wat je schrijft.....
grep -H -i -n -r 'system()' /home/user/domains/*/public_html | grep 'exec'
geen resultaat.
Ben nu aan het zoeken met de melding in het bericht van CSF, die command line "host -W 1 157.56.93.93" moet toch ook ergens in te vinden zijn, maar die zie ik ook niet terug, ook niet in de apache logs van de gebruikers.
Ik denk dat ik het voor gezien houdt of nog maar eens ga kijken als er weer een firewall melding komt. Maar ik blijf het wel vaag vinden dat er geen uitgebreidere melding van komt in de error_log.
systemdeveloper
18/01/14, 18:00
De error is vrijwel doorlopend. Dus die tijdstippen zijn dan wel heel erg globaal. Maar dat is nog niet zo erg.
Maar wat bedoel je met normale logs? In /var/log/messages staan rond die tijden alleen wat iptables regels. In de httpd access logs zie je er totaal niets van.
Cronlogs gaan het in elk geval niet worden, de user draait geen cron, heb wel voor de zekerheid gekeken.
Met grep gezocht in de user directory op die commando's wat je schrijft.....
grep -H -i -n -r 'system()' /home/user/domains/*/public_html | grep 'exec'
geen resultaat.
Ben nu aan het zoeken met de melding in het bericht van CSF, die command line "host -W 1 157.56.93.93" moet toch ook ergens in te vinden zijn, maar die zie ik ook niet terug, ook niet in de apache logs van de gebruikers.
Ik denk dat ik het voor gezien houdt of nog maar eens ga kijken als er weer een firewall melding komt. Maar ik blijf het wel vaag vinden dat er geen uitgebreidere melding van komt in de error_log.
Dat je zo niks vind kan ik me voorstellen. system() zul je als regexp moeten invullen (idem voor andere dingen) aangezien het een functie is die normaal parameters heeft ;)
Pfff... ik was al blij een kleinigheid van grep te weten. Van regexp dingen en code enzo... is niet mijn ding.:(