Archive for the ‘networking’ Category

Wartungsarbeiten

Donnerstag, Dezember 29th, 2011

Manchmal haben wir als Webhoster die Diskussion, ob und wann Wartungsarbeiten akzeptabel sind. Da es hier oft unterschiedliche Ansichten gibt habe ich mittlerweile eine kleine Sammlung von Wartungsseiten, um zu zeigen dass es keine Schande ist, ab und zu seine Seite offline zu schalten um in Ruhe Änderungen vorzunehmen.

Apple Developer:

eBay:

Geocaching.com:

Rittal:

RIPE:

Dear colleagues,

To allow us to update the software behind the RIPE NCC website and RIPE
Labs, functionality on these sites will be reduced between 15:00 and
19:00 (UTC) today, 28 June 2011.

During this time, the sites will remain available. However, they will be
in "read only" mode. Search functionality will be unavailable, and it
will not be possible to comment on articles or join in discussions.

We apologise in advance for any inconvenience this might cause.

If you have any questions about this maintenance work, please contact
webmaster@ripe.net.

flattr this!

Ergänzung zum Thema Wartungsarbeiten-Seite

Dienstag, Oktober 4th, 2011

Ich las kürzlich von jemandem, der aufgrund von Problemen auf einer Webseite eine Umleitung auf eine Fehlerseite bekommen hatte. Ist so eine Umleitung einmal erfolgt, kann man im Browser so oft die Seite aktualisieren, man bekommt trotzdem immer wieder die Fehler- oder Wartungsseite.

Dabei fiel mir mein Posting zum Thema Wartungsseite mit mod_rewrite wieder ein, das in der Hinsicht auch nicht besser war. Daher hier meine Ergänzung zur rewrite-Regel für eine Wartungsseite, bei der man nach erfolgter Wartung von der Wartungsseite auf die Startseite zurückleitet. Auch hier dienen die Bedingungen dazu, dass man von seiner festen IP-Adresse jederzeit die Wartungsseite testen kann:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192.168.28.17$ [NC]
RewriteCond %{REMOTE_ADDR} !^fe80:$ [NC]
RewriteRule ^wartung.html$ / [NC,L]

flattr this!

SNMP-Traps per EEM generieren

Donnerstag, Mai 19th, 2011

Kürzlich habe ich darüber geschrieben, wie man die Alarm-Kontakte an einem Cisco Metro Ethernet Switch, z.B. dem Modell ME 3400EG-2CS-A, nutzen kann. Allerdings hat offenbar Cisco — mal wieder — das nützlichste Feature vergessen, nämlich die Möglichkeit, SNMP-Traps hierzu zu generieren.

Alles, was man bekommt, sind Log-Meldungen, die z.B. so aussehen:

%PLATFORM_ENV-1-EXTERNAL_ALARM_CONTACT_ASSERT:
Alarm asserted: Door
%PLATFORM_ENV-1-EXTERNAL_ALARM_CONTACT_CLEAR:
Alarm cleared: Door

Zum Glück hat man aber heutzutage den Embedded Event Manager zur Verfügung. Hiermit kann man aus den Logmeldungen auch SNMP-Traps generieren:

event manager applet DoorOpen
 event syslog occurs 1 pattern "%PLATFORM_ENV-1-EXTERNAL_ALARM_CONTACT_ASSERT:"
 action 1.0 snmp-trap intdata1 1 intdata2 2 strdata "Door Opened"
event manager applet DoorClose
 event syslog occurs 1 pattern "%PLATFORM_ENV-1-EXTERNAL_ALARM_CONTACT_CLEAR:"
 action 1.0 snmp-trap intdata1 1 intdata2 0 strdata "Door Closed"

Hierbei wird in den Trap-Parametern die Sensor-Nummer 1 sowie der Status als entsprechender Code für das auswertende Nagios-Plugin übermittelt. Der Trap enthält somit diese Daten:

SNMPv2-SMI::enterprises.9.10.91.1.2.3.1.9.11 = INTEGER: 1#011
SNMPv2-SMI::enterprises.9.10.91.1.2.3.1.10.11 = INTEGER: 2#011
SNMPv2-SMI::enterprises.9.10.91.1.2.3.1.11.11 = STRING: “Door Closed”#011

flattr this!

Alarm-Kontakt Cisco ME 3400EG-2CS-A

Donnerstag, Mai 12th, 2011

Bei einigen Cisco-Switches der Metro Ethernet Serie ist ein praktischer Alarm-Port eingebaut. Diesen kann man z.B. verwenden, um einen verschlossenen Verteilerkasten beim Kunden zu überwachen. Leider findet man bei Cisco hierzu nur eine kurze Notiz im Installation Guide:

Alarm Input Port

The switch supports four alarm inputs. The alarm input is a dry-contact alarm port. Use the CLI to define each alarm input to respond to a normally open or closed dry-contact closure and to define the alarm severity as minor, major, or critical. When a condition triggers an alarm, the console displays an alarm message, and the corresponding Alarm LED responds (see the “Alarm LEDs” section).

Welche Pins hierfür benutzt werden müssen geht hieraus leider nicht hervor. Durch Tests habe ich allerdings an unserem Cisco ME 3400EG-12CS-M folgende Belegung ermitteln können:

Pin Signal Farbe (T568A)
1 Alarm1 weiß/grün
2 Alarm2 grün
3 - weiß/orange
4 Alarm3 blau
5 Alarm4 weiß/blau
6 - orange
7 - weiß/braun
8 Masse braun

Die Konfiguration im IOS ist dann entsprechend der Dokumentation schnell erledigt, z.B. wenn an Port 1 der Normalzustand “Geschlossen” ist:

alarm-contact 1 description door
alarm-contact 1 severity critical
alarm-contact 1 trigger open

Update: In der Zwischenzeit ist auch die Dokumentation Configuring Switch Alarms bei Cisco verfügbar geworden

flattr this!

Netzwerk-Kabel-Automat

Freitag, April 1st, 2011

Als Netzwerktechniker ist man im Rechenzentrum manchmal ein wenig aufgeschmissen. Man hat alle Geräte dabei, die eingebaut werden sollen, die Schränke sind vorbereitet und der Strom ist gelegt. Aber dann fehlen einem Kleinteile im Wert von wenigen Cent, die einen Strich durch die Rechnung und die Zeitplanung machen.

Wir buchen, Sie fluchenDie Kollegen von FlexOptix haben kürzlich auf der CeBit den Gearomat vorgestellt. Ein ähnliches Produkt haben wir, ebenfalls unter größter Geheimhaltung, für unser Rechenzentrum entwickelt. Den Automatic Cable Dispenser können Sie demnächst in unseren Rechenzentren finden und benutzen. Nach der Testphase unserer Prototypen werden wir sie auch anderen Interessenten anbieten.

Am Automatic Cable Dispenser können Sie eingeben, welche Länge das gewünschte Netzwerkkabel haben soll, von welchem Typ und mit welchen Steckern es ausgestattet sein soll. Je nach Kabeltyp haben Sie ausserdem die Wahl zwischen verschiedenen Farben. Nach Eingabe dieser Parameter wird das Kabel in gewünschter Länge ausgegeben. Ein zweiter Ausgabeschacht liefert den benötigten Stecker und eventuelles Zubehör aus.

Mit Hilfe der am Automaten befestigten Crimpzange können Sie dann den oder die Stecker montieren. Hierbei wird auf dem Mehrfarbdisplay eine bebilderte Anleitung angezeigt. Ausserdem bietet der Automatic Cable Dispenser Testanschlüsse für alle angebotenen Stecker- und Kabeltypen. Das Ergebnis dieser Kabelmessung wird gespeichert und auf Wunsch auf Thermopapier ausgedruckt.

Die Zahlung erfolgt Bargeldlos, entweder per Kredit- oder Geldkarte, oder mit der Rechenzentrums-Zugangskarte über die nächste Rechnung.

flattr this!

Tipps von Sysadmin zu Webentwickler

Dienstag, März 15th, 2011

Als Systemadministrator beobachtet man bestimmte Fallen immer wieder, in die unerfahrene Entwickler von Webanwendungen tappen. Ich habe hier die Top Ten der mißachteten Punkte zusammengestellt:

  1. Ruft regelmässige Aufgaben über richtige Cronjobs auf, nicht mit Curl/wget/lynx per HTTP, setzt eine E-Mail-Adresse als Empfänger der obigen Cronjobs, die ganz sicher immer funktioniert, und produziert in euren Cronjobs nur dann eine Ausgabe, wenn Fehler auftreten. Keine Debuginfos, zwischen denen echte Fehler einfach untergehen, weil die Mail eh jeden Tag kommt — kurz, schreibt ordentliche Cronjobs
  2. Entwickelt von vornherein in UTF-8, früher oder später kommen Finnen, Franzosen, Dänen, Asiaten, mit lustigen Sonderzeichen
  3. Achtet auf sinnvolle Rechtevergabe, prüft, unter welchem User die Webanwendung per Webserver aufgerufen wird, und mit welchen Privilegien ihr per SSH oder FTP auf die Daten zugreift. Setzt sinnvolle Gruppenrechte oder veranlasst, dass alles unter der selben UID läuft — z.B. per suPHP
  4. Kalkuliert die Datensicherung ein, vor allem daß während eines Datenbank-Snapshots z.B. per mysqldump oft ein globales Write-Lock verhängt wird
  5. Legt gerade bei ausfallsicheren Plattformen auch die Cronjobs entsprechend an — entweder mit globalem Locking oder so, daß auch mehrere gleichzeitig arbeiten können
  6. Baut von vornherein vernünftige Fehlerseiten und Fehlerbehandlung, die so wenig Abhängigkeiten wie möglich haben. Nichts ist peinlicher als die Meldung Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
  7. Bereitet eine Wartungsseite vor, die alle Anfragen sauber beantwortet, wenn die Anwendung mal aktualisiert wird oder aufgrund von technischen Problemen deaktiviert werden muss. Teilt eurem Hoster mit, wie diese Seite aktiviert werden kann, falls mal etwas schlimmes schiefgeht
  8. Stellt sicher, dass zumindest eure Kollegen und der Hoster die Fehlerseite von der Wartungsseite unterscheiden können. Sonst wird im Ernstfall der Sysadmin die Fehler-Wartungsseite zu sehen bekommen und von Wartungsarbeiten ausgehen, wenn vielleicht gerade die Datenbank Probleme macht
  9. Legt nur solche Infos im Cache ab, deren Erzeugung wirklich Rechenzeit spart — Datenbankabfragen sind schneller als ein Festplattenbasierter Cache, und eine Datenbank ist Backup-tauglicher
  10. Räumt von vornherein eure Daten auf — wenn z.B. die an User verschickten Mails erstmal dreistellige Gigabyte in der Datenbank belegen, ist es zu spät

Ich hoffe, damit dem ein oder anderen angehenden Programmierer hilfreiche Tipps gegeben zu haben, und vielleicht auch die Nerven manches Sysadmins zu schonen…

flattr this!

Nagios: Check-Ergebnis invertieren mit negate

Dienstag, Februar 8th, 2011

Schon seit längerer Zeit hatte ich eine Idee im Hinterkopf, einen speziellen Nagios-Check zu schreiben, der das Ergebnis eines anderen Checks invertiert, d.h. meldet der Check “OK”, ist das Ergebnis “Critical” und umgekehrt. “Unknown” und “Warning” bleiben erhalten.

Dieser Check war zum Beispiel dafür gedacht, dass ein Router sich, wenn eine Standleitung ausfällt, über eine alternative Verbindung einwählt. Diese soll aber, wenn sie nutzungsabhängige Kosten verursacht, nicht ständig aufgebaut sein. Es ist also ein Ping-Check nötig, der dann alarmiert, wenn die Verbindung aufgebaut ist. Ein anderes Beispiel ist, dass man auf einem SSH-fähigen Cisco-Router sicherstellen möchte, dass telnet deaktiviert ist.

Jetzt habe ich festgestellt, dass ich nicht der einzige mit dieser Idee war, und sie offenbar schon vor einiger Zeit in dem “negate“-Check umgesetzt wurde. Dieser macht genau das oben beschriebene, und kann zusätzlich noch im Ergebnis die Zeichenketten “OK” und “WARNING” entsprechend ersetzen.

Hier ein Konfigurationsbeispiel. Man nimmt die ursprüngliche Konfiguration, um Telnet zu checken:

define command{
	command_name	check_telnet
	command_line	/usr/lib/nagios/plugins/check_tcp -H '$HOSTADDRESS$' -p 23
}

Vor die command_line stellt man dann das negate-Plugin:

define command {
        command_name    check_telnet_disabled
        command_line    /usr/lib/nagios/plugins/negate /usr/lib/nagios/plugins/check_tcp -H '$HOSTADDRESS$' -p 23
}

Und fertig ist ein Check-Command, das Alarm gibt, sobald Telnet aktiviert ist.

flattr this!

Apache-Passwortschutz

Donnerstag, September 2nd, 2010

Wie schützt man einfach ein Verzeichnis, so daß nur mit einem Password darauf zugegriffen werden kann? Ganz einfach, erstmal legt man eine Datei namens .htaccess an, mit folgendem Inhalt:

AuthUserFile /home/user/pwd_file
AuthName "Secret Area"
AuthType Basic
require valid-user

Hierbei muss der Dateiname des AuthUserFile angepasst werden. In dieser Datei stehen die Benutzerdaten, am einfachsten pflegt man sie auf der Kommandozeile mit dem Befehl htpasswd. Der erste Befehl legt die Datei gleich an (-c):

htpasswd -cm /home/user/pwd_file username1
htpasswd -m /home/user/pwd_file username2

flattr this!

Spam-Vorwürfe prüfen

Donnerstag, August 26th, 2010

Es kann jederzeit passieren: Man hat den Verdacht, dass ein Mailserver zum Spam-Versand missbraucht wird. Aber wie prüft man das nach? Hier zwei Tipps — Nur noch die IP-Adresse des Servers eintragen, und los gehts!

TrustedSource grapht Mailaufkommen: http://www.trustedsource.org/query.php?q=127.0.0.1

Google hilft bei der Suche in Newsgroups: http://groups.google.com/groups?scoring=d&q=127.0.0.1+group:*abuse*

Weitere Tipps nehme ich gerne in den Kommentaren entgegen!

flattr this!

ICQ-Transport via Jabber in Adium nutzen

Dienstag, August 17th, 2010

Um weniger Accounts in meinem Instant Messenger einrichten zu müssen habe ich auf meinem Server zusätzlich zum ejabberd noch den pyICQt installiert. Die Anleitung war klar und verständlich, und der Dienst schnell eingerichtet. Doch dann die grosse Frage: Wie benutze ich ihn?

Ganz einfach:

  1. im Menü auf File -> <Jabber-Account> -> Discovery-Browser
  2. Doppelklick auf ICQ Transport
  3. im dann erscheinenden Dialog die ICQ-Zugangsdaten eingeben
  4. die auftauchenden Authorisierungsanfragen beantworten, damit alle Kontakte übernommen werden können

flattr this!