WakeOnLAN mit Intel E1000 Gigabit Netzwerkkarte unter ubuntu 9.10 (Karmic Koala)

2. September 2010 // Posted in Linux, Netzwerk, Windows (Tags: , , , , , , , , ) |  No Comments

Es gibt viele Anleitung, welche beschreiben, wie man WakeOnLAN unter Ubuntu dauerhaft aktiviert (z.B. hier). Bei meinem Mainbord MSI MS-9803 mit Intel Gigabit Netzwerkkarte hat aber alles nichts gebracht. Mit ethtool eth0 hat er sogar angezeigt, das die Netzwerkkarte WakeOnLAN nicht mal unterstützt. Das kann bei einem so “aktuellen” Mainboard ja eigentlich gar nicht sein. Das E1000-Modul war richtig geladen und das Netzwerk funktionierte sonst ganz problemlos. Nur WakeOnLAN funktionierte nicht. Nach tagelangem suchen habe ich aber die Lösung gefunden und sie erinnert etwas an MS Windows. Direkt bei Intel habe ich einen aktuellen Treiber gefunden. Runterladen, entpacken, kompilieren und installieren und man hat keinen Ärger mehr mit WakOnLAN und einer Intel E1000-Netzwerkkarte.

Nagios Plugin check_smart.pl funktioniert nicht mit Highpoint RAID Controller

2. September 2010 // Posted in Allgemeines, Linux, nagios (Tags: , , , , , , , ) |  No Comments

mit Nagios üb erwache ich inzwischen eine ganze Menge. 3Ware-Controller funktionieren mit dem bei den Nagios Plugins mitgelieferten Plugin check_smart.pl sehr gut. Nur mit Highpoint Controller hat das Plugin so seine Probleme. Mit einer kleine Änderung am Code funktioniert aber auch das.

Einfach folgende Zeilen:
syntax("Valid --type entries include ata, scsi and 3ware,n")
unless (($type =~ /^ata$/) || ($type =~ /^scsi$/) || ($type =~ /^3ware,\d+$/));

wie folgt abändern:
syntax("Valid --type entries include ata, scsi, 3ware,n and hpt")
unless (($type =~ /^ata$/) || ($type =~ /^scsi$/) || ($type =~ /^3ware,\d+$/) ||($type =~ /^hpt,\d+\/\d+$/));

mit folgendem Aufruf wird der SMART Check für die Festplatte, welche am ersten Controller und dort am ersten Kanal hängt ausgeführt:
./check_smart.pl --type hpt,1/1 -d /dev/sda -t h

Nagios Plugin für F-Secure Signature check

4. Januar 2010 // Posted in amavisd-new, Linux, nagios, Security (Tags: , , , , , , ) |  1 Comment

Da ich F-Secure als AV-Programm einsetze habe ich nach einem Nagios-Plugin gesucht, welches die Signaturen auf Aktualität prüft. Leider bin ich nicht fündig geworden. Für Clam-AV gibt es aber einige Plugins. Dieses check_clamav habe ich dann einfach an F-Secure angepaßt.

Die Zeile chomp(my $fsav_ver = `/usr/bin/chroot /var/spool/amavis $fsav_cmd –version`); muß unter Umständen angepaßt werden, da ich F-Secure mit amavisd-new in einem chroot verwende.

#!/usr/bin/perl -w
#
# Copyright (c) 2005-2008 Darren Spruell <phatbuckett@gmail.com>, Modified by Andreas Gegner <kabeldesigner@web.de>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
################################################################################
# This script is used to compare the version and signature level of the
# currently running f-secure daemon with the current date
#
# In order to use this script, you might need to make the following adjustments:
#  - Set the "use lib" path correctly (where utils.pm is located.)
#  - Set the path to your fsav binary in $fsav_cmd.
#
# This plugin requires the Net::DNS Perl module.
################################################################################

# Plugin directory / home of utils.pm.
use lib "/usr/local/nagios/libexec";
use utils qw(%ERRORS &print_revision &support &usage);
use Getopt::Long qw(:config no_ignore_case bundling);
use File::Basename;
use Net::DNS;

use strict;

# Path to installed fsav binary.
my $fsav_cmd  = "/usr/bin/fsav";

# Leave the rest of this alone:
my $prog_name  = basename $0;
my $prog_ver   = "1.2";

my $warn_val = 1;  # Default - override with -w arg
my $crit_val = 2;  # Default - override with -c arg
my $help_val = 0;  # Off unless -h arg
my $verb_val = 0;  # Off unless -v arg
my $vers_val = 0;  # Off unless -V arg

my ($msg, $rev_word, $rr, $status, $status_print, $sec, $min, $hour, $day, $month, $year, $daylightsavings, $yearOffset, $dayOfWeek, $dayOfYear, $date);

# Gives us a way to print out verbose debug information to the screen when user
# passes in a -v argument.
# print_debug() should receive one parameter: a text string to print out.
sub print_debug() {
my $message = shift;
if ($verb_val == 1) {
print "DEBUG: " . $message . "\n";
}
}

# Looks up and returns the current CVD version information from
# clamav.net.
sub lookup_current() {
#my $res = Net::DNS::Resolver->new;
#my $query = $res->search("current.cvd.clamav.net", "TXT");
#if ($query) {
#    foreach $rr (grep { $_->type eq 'TXT' } $query->answer) {
#        &print_debug("Net::DNS found result: (TXT) " . $rr->txtdata);
#        return $rr->txtdata;
#    }
#} else {
#    warn "query failed: ", $res->errorstring, "\n";
#}
}

# comp_sig_ver() should receive three parameters: remote signature database
# version, local signature database version, and build date of local
# signatures database.
sub comp_sig_ver() {
my $sig_rem   = shift;
my $sig_local = shift;
my $sig_date  = shift;
my $diff = 0;
my $msg = "";

if ($sig_local != $sig_rem) {
$diff = $sig_rem - $sig_local;
$rev_word = ($diff == 1) ? "revision" : "revisions";
if ($diff >= $crit_val) {
&print_debug("Installed daily.cvd is behind clamav.net");
$status = $ERRORS{'CRITICAL'};  # Will exit with CRITICAL status
$status_print = "CRITICAL";
} elsif ($diff >= $warn_val) {
&print_debug("Installed daily.cvd is behind clamav.net");
$status = $ERRORS{'WARNING'};   # Will exit with WARNING status
$status_print = "WARNING";
} else {
&print_debug("Installed daily.cvd is behind clamav.net");
$status = $ERRORS{'OK'};  # Will exit with OK status
$status_print = "OK";
}
$msg  = "fsav " . $status_print . ": daily.cvd " . $sig_local .
" out of date by " . $diff . " " . $rev_word;
} else {
&print_debug("Installed daily.cvd matches latest from clamav.net");
$status = $ERRORS{'OK'};  # Will exit with OK status
$msg    = "ClamAV OK: daily.cvd " . $sig_local . " (" . $sig_date .
") is up to date";
}
return $msg, $status;
}

# Show usage information
sub show_help() {
print <<END;
$prog_name Nagios plugin $prog_ver (c) 2005-2008 Darren Spruell <phatbuckett\@gmail.com>

Perl Check fsav plugin for Nagios

Usage: $prog_name [-w <warn>] [-c <crit>] [-V] [-v] [-h]

-w, --warning=INTEGER
Number of revisions behind current daily.cvd to generate a warning state (Default: 1)
-c, --critical=INTEGER
Number of revisions behind current daily.cvd to generate a critical state (Default: 2)
-V, --version
Output version information for the plugin
-v, --verbose
Enable verbose output
-h, --help
Show this help
END
}

GetOptions (
"w=i" => \$warn_val, "warning=i" => \$warn_val,
"c=i" => \$crit_val, "critical=i" => \$crit_val,
"h" => \$help_val, "help" => \$help_val,
"V" => \$vers_val, "version" => \$vers_val,
"v" => \$verb_val, "verbose" => \$verb_val,
);

if ($help_val != 0) {
&show_help;
exit $ERRORS{'OK'};
}

if ($vers_val != 0) {
&print_revision($prog_name,$prog_ver);
exit $ERRORS{'OK'};
}

# Make sure the binary exists.
if (-x $fsav_cmd) {
&print_debug("Found fsav at $fsav_cmd");
} else {
&print_debug("Can't execute fsav at $fsav_cmd");
die("FATAL: Unable to execute $fsav_cmd");
}

&print_debug("Threshhold values: warning=$warn_val, critical=$crit_val");

#
chomp(my $fsav_ver = `/usr/bin/chroot /var/spool/amavis $fsav_cmd --version`);

#chomp(my $dnstxt_ver = &lookup_current());
($sec, $min, $hour, $day, $month, $yearOffset,$dayOfWeek, $dayOfYear, $daylightsavings) = localtime();
$year = 1900 + $yearOffset;
$date = "$year-$month-$day";
chomp(my $dnstxt_ver = $date;

# Parse what we get from clamd -V and our DNS query
my @fsavresults = split(/\//,$fsav_ver);
my @txtresults   = split(/:/,$dnstxt_ver);

# Get the currently running ClamAV sig level and cvd date out of this
my $local_latest_daily   = $fsavresults[1];
my $local_latest_date    = $fsavresults[2];

&print_debug("Local daily.cvd dated $local_latest_date");
&print_debug("Local daily.cvd version = $local_latest_daily");

# Get the latest ClamAV daily signatures version out of this
my $fsav_latest_daily   = $txtresults[2];
&print_debug("Latest daily.cvd version = $fsav_latest_daily");

my @prog_sig_res = &comp_sig_ver($fsav_latest_daily, $local_latest_daily,
$local_latest_date);

print $prog_sig_res[0] . "\n";
exit $prog_sig_res[1];

Spickzettel / Cheat Sheets für den Admin

4. Januar 2010 // Posted in bash, Netzwerk (Tags: , , , , , , , , , , , , , , , ) |  No Comments

ich habe heute zwei Seiten mit Spickzetteln für den alltäglichen Bedarf eines Admins gefunden. Auf der Seite www.catonmat.net findet Ihr unter anderem Spickzettel zu den Themen awk, sed, perl, bash bzw screen. Auf der zweiten Seite packetlife.net gibt es sehr viele Informationen zu Netzwerkprotokollen wie z.B. WLAN, IPsec, IPv6, Spanning tree, VLANs und noch viel mehr….

Wissenschaft und Humor passen gut zusammen

30. Dezember 2009 // Posted in Allgemein  |  No Comments

Das Wissenschaft und Humor sehr gut zusammen passen zeigen die östereichischen Science Busters. Allein die Idee, auszurechnen wie viele Atome von Jesus in jedem von Uns sind, finde ich klasse.

warum stürzt mein PC/Server immer ab? (Fehlersuche bei Computern)

30. Dezember 2009 // Posted in Allgemeines, Hardware, Tips, Windows (Tags: , , , , , , , , ) |  No Comments

Jeder hat bestimmt schon einmal einen bluescreen bei Windows erlebt oder der PC blieb einfach stehen. Es gibt hierfür viele Ursachen. Ein paar Tips zur Fehlerbehebung möchte ich hier geben.

Falls der PC sich nicht starten läßt, sollte man erstmal zusätzlich eingebaute Hardware wie z.B: Soundkarten, Grafikkarten (falls eine Onboard-Grafikkarte vorhanden ist) wieder ausbauen. Hat das Mainboard keine Onboard-Grafik, kann man die Karte erstmal eingebaut lassen. Es wäre aber praktisch, eine Ersatzkarte parat liegen zu haben. Hilft alles nichts kann man auch alle Laufwerke und sogar die RAM-Riegel entfernen. Hiermit kann man Kurzschlüsse bei Laufwerken bzw. RAM-Fehler ausschliessen. Jetzt sollten nur noch das Mainboard, eventuell eine Grafikkarte und das Netzteil angeschlossen sein. Startet der PC immernoch nicht, hilft vielleicht noch der Wechsel des Netzteiles. Hier muß man darauf achten, das das Netzteil auch ausreichend Strom für die angeschlossenen Komponenten liefert. Läuft das Netzteil an der Grenze und eine neue große Grafikkarte wird eingebaut, läuft der PC wahrscheinlich normal hoch. Wird, wie bei einem aufwendigen Spiel, der Grafikkarte alles abverlangt steigt auch ihr Strombedarf. Ein Absturz ist hier vorprogrammiert. Hilft auch dies nicht is definitiv das Mainboard und/oder die CPU defekt. Bastler, die über Elektronikkenntnisse verfügen können noch die Elko’s auf dem Mainboard überprüfen und gegebenenfalls wechseln. An sonsten kann sich nur noch nach einem neuen Mainboard/CPU umschauen.

Startet der PC und stürzt sporadisch ab kann man mit einer Linux-CD (z.B. Knoppix oder opensuse) den RAM testen. Ich rate von Windows-Programmen ab, da hier nicht der komplette Speicherbereich geprüft werden kann. Der Test sollte mind. eine Stunde laufen. Als nächstes lohnt ein Blick in die Ereignisanzeige unter Windows bzw. in die Log-Dateien von Linux unter /var/log.  Defekte Festplatten melden sich z.B. hier mit Log-Einträgen über fehlgeschlagene Lese-/Schreibversuche. Stürzt der PC oft mit einem Bluescreen ab hilft es, sich den gesamten Text aufzuschreiben und sein Glück bei google zu versuchen. Der Fehlercode hilft z.B. dabei das fehlerhafte Gerät bzw. den Treiber zu lokalisieren.

Laptop / Notebook reparieren

29. Dezember 2009 // Posted in Hardware, Laptops (Tags: , , ) |  No Comments

Einen Laptop zu reparieren oder einfach mal die Festplatte tauschen ist mit unter nicht so einfach wie bei einem Desktop-PC. Gute Notebooks haben einen durch ein oder zwei Schrauben gesicherten Festplatten-Schacht. Hier ist der Wechsel sehr einfach. Es gibt aber auch Laptops, wo man die Festplatte nicht so einfach wechseln kann. Bei Sony-Geräten ist die Festplatte links neben dem Mouspad unter der Abdeckung. Man muß also für einen Festplatten-Wechsel den halben Laptop auseinander nehmen. Ich hatte vor kurzem einen “Glühwein”-Unfall. Die halbe Tastatur war betroffen. Wenn man noch nie einen Laptop auseinander genommen hat ist hier guter Rat teuer. Zum Glück hilft diese Seite . Die Seite ist zwar auf Englisch, aber hier findet man für viele Notebooks mit Bildern ausgeführte Schritt-für-Schritt-Anleitungen. Etwas handwerkliches Geschick und Fingerspitzen-Gefühl sollte man aber trotzdem mitbringen. Denn nicht alles ist verschraubt. Viele Teile sind nur eingerastet. Falls das Notebook noch Garantie besitzt rate ich unbedingt davon ab, das Gerät auseinander zu nehmen. Die Chance das man irgendwelche Haken o.ä. abbrechen ist relativ hoch.

Ohne Anleitung sollte man als erstes den Akku und alle sichtbaren Schrauben entfernen und gut aufbewahren. Unter Umständen muß man sich die Position der einzelnen Schrauben notieren, da es viele unterschiedliche Schrauben im Laptop gibt. Danach ist die Tastatur dran. Bei vielen Notebooks ist die Tastatur in einer Art Blech-Wanne eingelassen. Bei Sony-Laptops wird die Tastatur von einer Schraube auf der Rückseite des Gerätes und zwei kleinen Plaste-Nippeln oben links und oben rechts an der Tastatur gehalten. Diese können einfach mit einem kleinen Schraubendreher beiseite gedrückt werden und die Tastatur kann entfernt werden. Ab jetzt kann man leider nur noch intuitiv oder nach Anleitung vorgehen.

Ich habe mal eine kleine Gallerie mit Laptop-Bildern von einem Freund mit angehängt.

was ist besser? Hardware-Raid oder Software-Raid?

19. Juli 2009 // Posted in Datenrettung, Linux, Security, Windows (Tags: , , , , , , ) |  No Comments

Der Artikel über Raid auf wikipedia ist ja sehr interessant. Im Artikel wird aber, meiner Meinung nach, ein Software-Raid besser dargestellt als ein Hardware-Raid. Ich persöhnliche würde z.B. nie auf ein Software-Raid oder Fake-Raid setzen, da ich selbst halt weniger gute Erfahrungen gemacht habe. Falls Software-Raids besser als Hardware-Raid-System sind, warum gibt es dann noch Hardware-Raids? Hierzu würden mich nun eure Meinungen und Erfahrungen interessieren. Wo würdet Ihr welches Raid-System einsetzen und warum?

Gerüchte über Lücke in openssh nicht bestätigt

10. Juli 2009 // Posted in Linux, openssh, Security (Tags: , , , , , , , , , , ) |  No Comments

Die Gerüchte um eine Sicherheitslücken in openssh hab sich nicht bestätigt. Die Einbrüche basieren angeblich auf einer erfolgreichen Brute-Force-Attacke gegen ältere openssh-Server. Brute-Force-Attacken können aber normalerweise relativ einfach abgewehrt werden. Man muß einfach nur einen ungewöhlichen Benutzernamen und ein gutes Passwort oder Zertifikate verwenden.

Um sich auch komplizierte Passwörter zu merken gibt es einen einfachen Trick. Man bildet einfach einen Satz wie z.B. “Linux ist das Beste was mir je passiert ist” und nimmt von jedem Wort den Anfangsbuchstaben. Daraus ergibt sich das Passwort “LidBwmjpi”. Auch wenn SSH-Angriffe inzwischen verteilt über Bot-Netze laufen ist es sehr unwahrscheinlich das dieses Passwort geknackt werden kann. Passwort-geschütze Zertifikate sind noch sicherer. Bei der Verwendung von Zertifikaten kann es aber bei größeren Latenzzeiten (>500ms) zu Problemen kommen.

Wie openssh noch weiter abgesichert werden kann habe ich schon hier beschrieben. Ich empfehle trotzdem jedem ein Update auf die aktuellste openssh-Version 5.2. Falls es keine Packete für die Distribution gibt kann man openssh auch sehr einfach selber bauen.

tar -xf openssh….
cd openssh….
./configure &> conf_log   (in der conf_log-Datei findet man aufgetretene Fehler beim configure-Durchlauf)
oder alternativ
./configure –with-pid-dir=/var/run/my_piddir  (nur notwendig, falls man mehr als einen sshd auf einem PC einsetzt)
make
make install

Falls beim configure-Durchlauf Fehler auftreten fehlen normalerweise einfach ein paar Packete (z.B. gcc,make,openssl-devel). Statt make install kann man die Binaries auch von Hand in die entsprechenden Verzeichnisse kopieren. Unter Umständen muß, z.B. bei einem Update von einer openssh-Version 4.x, die Konfiguration angepaßt werden.

Hilfe bei Regulären Ausdrücken

6. Juli 2009 // Posted in programmieren, Tips (Tags: ) |  No Comments

Reguläre Ausdrücke (engl. regular expression) findet man an vielen Stellen in der Software-Programmierung oder bei der Konfiguration. Häufig finden Reguläre Ausdrücke z.B. Anwendung bei Perl-Scripten, PHP-Webseiten oder unter Linux bei der Konfiguration von Programmen (z.B. Postfix).

Einen Regulären Ausdruck entwickeln ist teilweise sehr kompliziert bzw. fehleranfällig (wenn man nicht gerade ein RegEx-Guru ist). Abhilfe schafft ein Windows-Tool von Ultrapico mit dem Namen Expresso. Man muß sich nur kostenlos registrieren und bekommt per Mail einen Key zugeschickt. Mit diesem Programm kann man Reguläre Ausdrücke entwickeln und sogar direkt mit dem entsprechenden Text auf ihre richtige Funktion testen.