HostOK - Free Servermonitoring

CreativeDEV

New Member
Hallo liebe Community,

** Projektstart: 01.12.2013 - 12:00 Uhr UTC+01:00 **

derzeit ist ein neues Monitoring Projekt in Planung.


Konzept

Das Projekt soll von Grund auf kostenlos sein. Der User, der Server, Services und / oder Webseiten überwachen lassen will, soll nicht mit lästigen Kosten genervt werden. An diesem Punkt steige ich ein. In den letzten Wochen habe ich mir Gedanken zur Konzeption und Umsetzung eines solchen Projekts gemacht.



Erreichbarkeit des Projekts

Um die Erreichbarkeit des Projekts habe ich mich bereits gekümmert und die Domains hostok.de und host-ok.de registriert. Zudem wird die Datenübertragung über https:// gesichert, wodurch ich eine relativ hohe Sicherheit bezüglich der Nutzung anbieten können.



Prüfintervall

Jeder Server (Host), Service und / oder jede Webseite wird alle 2 Minuten auf Erreichbarkeit geprüft. Diese Option ist im Webinterface nicht einstellbar, da 2 Minuten ein sehr guter Wert für eine Prüfung auf die Uptime ist. Die Benachrichtigungen, wann eine E-Mail oder SMS gesendet wird, können jedoch im Webinterface zu jedem Server und zu jeder Webseite explizit festgelegt werden.



Uptimeberechnung

Das System kann sehr genau die Uptime im Monat bestimmen. Da wir wissen, dass ein Tag 24 Stunden hat und PHP weiß, wie viel Tage der aktuelle Monat haben wird, lässt sich die Zahl X errechnen. X ist die mögliche Anzahl an Prüfungen im Monat. Sollte es nun einmal dazu kommen, dass ein Server offline ist, dann wird ein Eintrag in die Datenbank geschrieben. Jeder Eintrag zu dem Server, Service oder der Webseite ist ein Negativeintrag und bedeutet, dass der Server nicht erreichbar war / ist. Beim Ermitteln der prozentualen Uptime werden alle diese Negativeinträge gezählt, der Zahl X abgezogen und es wird aus diesen Variablen ein Prozentwert ermittelt, der die Uptime in Prozent des laufenden Monats ausgibt.

Eine Uptimeberechnung für vergangene Monate ist derzeit nicht geplant, da die Serverperformance, die derzeit hinter dem Webinterface steckt, nicht dafür ausreicht.


Kontrollebenen

Kontrollebenen heißt in diesem Zusammenhang - zu überwachende Server, Services und Webseiten.


Server

Ein Benutzer darf X Server zur Überwachung in das System eintragen. Diese werden per "ping" (nc) über ein UNIX System geprüft - durch "nc" ist es auch möglich, UDP Ports zu prüfen. Natürlich ist hier vorausgesetzt, dass das ICMP Protokoll auf dem jeweiligen Server aktiv ist und nicht mittels Firewall (folgend FW genannt) blockiert wird, denn dann würde kein Testergebnis zu Stande kommen - die Überlegung geht auch dahingegen, dass die IPs im Interface bekannt gemacht werden (gegen AGB auflagen), sodass eine FW Rule generiert werden kann. Natürlich könnte man auch eine Software entwickeln, die über einen TCP Port alle Informationen herausgibt - aber das möchte ich nicht, denn eine Software zu installieren bedeutet immer, dass man dem Developer etwas Vertrauen entgegnen muss und sobald der Server offline ist, bringt auch eine solche Software herzlich wenig.


Service

Hier wird es verschiedenste Überwachungsmöglichkeiten geben. Umgesetzt sind derzeit schon TCP und UDP Überwachungen/Auswertungen. Die Überwachung geschieht auch hier mittels eines UNIX Systems - alle Daten werden dann in eine Datenbank geschrieben. Die Auswertung erfolgt dann im Webinterface.


Webseite

Im aktuellen System gibt es die Möglichkeit, Webseiten mittels Meta-Tag prüfen zu lassen. Man kann sich zum einen eine Datei generieren lassen, in der alle nötigen Informationen stehen, die man anschließend auf den Webspace hochladen muss, oder man benutzt einen vorgefertigten Meta-Tag und bindet diesen auf der Startseite in dem META-Bereich (Header) mit ein.



Benachrichtigungsebenen

Es wird 2 Benachrichtigungsebenen geben, die anbei erläutert werden. Die Intervalle für diese Benachrichtigungen sind jeweils 2 Minuten, sofern der Server offline ist.


E-Mail

Dies ist eine typische und kostenlose Benachrichtigungsebene. Mittels dieser Methode werden E-Mails an eine im Benutzeraccount hinterlegte E-Mailliste gesendet.


SMS

Hier habe ich mir sehr lange Gedanken gemacht, wie ich diesen Punkt umsetzen kann, ohne dass ich Geld vom Benutzer verlangen muss. Ich bin leider zu keiner kostenlosen Lösung für den Benutzer gekommen, dennoch habe ich eine relativ gute Lösung gefunden. Ich habe einen SMS-Gateway Partner im Internet gesucht, der zuverlässig SMS Nachrichten zustellt und eine API anbietet und zusätzlich noch sicher ist. Hier ist mit der Anbieter SMS-Expert aufgefallen. Ich habe den Anbieter getestet und in für gut befunden. Der Benutzer muss, um SMS über das System versenden lassen zu können, ein Konto bei SMS-Expert besitzen und einen API Schlüssel anlegen und diesen anschließend bei uns, zusammen mit seinem Benutzernamen, im System hinterlegen. WICHTIG : Der Benutzer und Key werden in der 256Bit AES Verschlüsselung in der Datenbank gespeichert und ist somit, auch wenn die DB mal geknackt wird, vollkommen sicher, da dieser nicht im Klartextmodus gespeichert wird.



Profilmanagement

Der Benutzer hat bestimmte “Eigenschaften”. Hierzu zählen:
  • Benutzername (nicht editierbar)
  • Vorname
  • Nachname
  • E-Mail (z.B. für die „Passwort vergessen“ Funktion)
  • Mobiltelefonnummer (keine Pflichtangabe)

Zusätzlich hat jeder Benutzer die Möglichkeit bis zu 5 E-Mailadressen festzulegen, an die Statusnachrichten gesendet werden sollen („Nur“ 5 E-Mailadressen um nicht auf Spamlisten zu landen).



Demoaccount

URL: https://panel.hostok.de/
Benutzer: demo
Passwort: demo

** Projektstart: 01.12.2013 - 12:00 Uhr UTC+01:00 **

Bilder

Server:

Übersicht


Details


Neu


Löschen


Service:

Details


Neu


Webseite:

Übersicht


Details


Neu


Löschen


Weitere Bilder:

Login und BenutzerCP
https://hostok.de/leak/login.png
https://hostok.de/leak/benutzercp.png


** Projektstart: 01.12.2013 - 12:00 Uhr UTC+01:00 **
 

Fusl

Blog Benutzer
  • " Benutzer wurde gesperrt oder ist noch nicht aktiviert worden. " sollte anders deklariert werden, wenn das Passwort falsch ist.
  • 2. Warum auch immer es sinnvoll sein sollte, base64 encodierte Werte in der URL zu benutzen, hier reicht ein 'echo -n "<base64>" | base64 -d' um den Wert zu dekodieren und 'echo -n "<wert>" | base64 -w0' um den Wert zu enkodieren. Sollte das die IDs verschleiern, dann benutzt ihr die sehr falsche Funktion. Sollte das SQL Injections verhindern, dann benutzt ihr nochmals die sehr weit falsche Funktion.*

* Für die enkodierten URLs würde ich euch dieses Snippet sehr empfehlen, das die URLs auch verschlüsseln kann, sodass niemand draufkommt, welche ID eigentlich hinter der URL steckt: http://kvz.io/blog/2009/06/10/create-short-ids-with-php-like-youtube-or-tinyurl/
 

rootieX4

New Member
Da du auf Sicherheit viel wert zu legen scheinst, wäre es nicht schlecht wenn du bei der SSL Verschlüsselung nicht auf RC4 setzen würdest.
 

d4f

Kaffee? Wo?
[OT]
Da du auf Sicherheit viel wert zu legen scheinst, wäre es nicht schlecht wenn du bei der SSL Verschlüsselung nicht auf RC4 setzen würdest.
Da wäre die Verwendung von CBC empfehlenswerter, nachdem Apple nachgezogen ist sind alle aktuell(st)en Browser/OS-Kombinationen aktiv client-seitig gegen CBC-Weakness mitigiert.

Besser wäre aber das weniger Rechenleistung benötigende und als sicher geltende Verfahren (EC)DHE mit AES-256bit. Übrigens darf das StartSSL Class-1 Zertifikat nur für privaten Gebrauch eingesetzt werden, ob die Seite als privat ein zu stufen ist halte ich für fragwürdig.
[/OT]

Soviel ich sehe läuft alles von einem Standort. Bei Ausfall deines Servers oder Störungen im Uplink würde hier also das Testergebnis stark verfälscht. Ist dahingehend eine Redundanz geplant?

Schön wäre es in heutigen Smartphone-Zeiten wenn es eine mobile App mit Push-Unterstützung geben würde um die Notwendigkeit von SMS-Benachrichtigungen zu umgehen. Eine solche cross-platform zu bauen ist ja gott-sei-dank mit entsprechenden Java-Frameworks mittlerweile leicht realisierbar wenn auch natürlich die Erst-Veröffentlichung einen nennenswerten Kostenpunkt darstellt.

Paar spontane Mängeleien:

Der Benutzer und Key werden in der 256Bit AES Verschlüsselung in der Datenbank gespeichert und ist somit, auch wenn die DB mal geknackt wird, vollkommen sicher, da dieser nicht im Klartextmodus gespeichert wird.
Wie wird vorgegangen wenn der AES-Key dem Angreifer bekannt ist? Dass _nur_ Zugriff auf den Datenbankserver besteht ohne dass er den Webspace lesen kann ist recht unwahrscheinlich.

die Überlegung geht auch dahingegen, dass die IPs im Interface bekannt gemacht werden (gegen AGB auflagen), sodass eine FW Rule generiert werden kann.
Zumal bei HTTP-Requests ist es trivial die IP des Clients zu sehen. Du kannst also davon ausgehen dass sie eh bekannt ist.
 

CreativeDEV

New Member
Hallo ihr lieben,

die XSS-Lücken bin ich derzeit am Stopfen. Bis zum 01.12.2013 werden diese auch dicht sein. (REQUEST Filtering bereits implementiert - weitere Maßnahmen folgen)

Das Base64 Encoding soll nichts verschlüsseln oder sonst was - es soll lediglich der Maskierung dienen ;)

Bezüglich der Redundanz:

Es gibt Messerver an versch. Standorten - Datenbankserver und es wird für die Grafiken einen getrennten Server geben. Aus diesem Grund kommt es zu ziemlich genauen Messergebnissen.

Grüße
 

CreativeDEV

New Member
Wie versprochen,

am 01.12.2013 ist das Projekt online gegangen und es läuft inzwischen stabil.

Es gibt 2 Frontend DB Server, 2 Backend DB Server, 2 API Server, 1 Webserver und 5 Messserver, die aus Deutschland, den USA, der Schweitz, Frankreich und Kanada messen.

Liebe Grüße
 

Fusl

Blog Benutzer
Die Beschreibung darf nur aus folgenden zeichen bestehen: (A-Z a-z 0-9 . , _ -)
Okay. Ich möchte aber keine Beschreibung eingeben. Und nun? Nungut, ich hab den Servernamen zur Beschreibung gemacht, da ich im Servernamen punkte haben wollte, wo man nun allerdings keine Sonderzeichen haben darf...
 

Fusl

Blog Benutzer
Wollte mir gerade mein Passwort zuschicken lassen und hier war auch schon der nächste Bug:

In der Registrierung wurde folgender Link zum Aktivieren angegeben:
https://hostok.de/en/register.html?activate=xxx
In der "Neues Passwort" Mail aber folgendes:
https://hostok.de/registrieren.html?activate=xxx

Ich versuch da wie verrückt mir also das Passwort zuschicken zu lassen und da kommt absolut nichts, außer dass ich nur auf die Startseite weitergeleitet werde. Nun, ich konnte mich - Gott sei Dank - noch leicht daran erinnern, dass man beim Copypasten dieser URL nicht auf die Startseite sondern zu einer "The user has been successfully activated! An email with your password has been sent to." Seite weitergeleitet wird. Also mal eben den Link modifiziert und Passwort kam an. :)

/Edit: Und zufälligerweise *hust* eine Injection-Lücke gefunden. CreativeDEV hat soeben eine privmsg mit weiteren Details erhalten. Den Ort der Lücke werde ich euch vermutlich erst sagen können, wenn er es gefixt hat :X
 
Last edited by a moderator:

Fusl

Blog Benutzer
Dienst hört nicht auf mich mit "offline"-Nachrichten zuzuspammen, obwohl der Server schon seit über einer Stunde wieder online ist und ich mit SSH hier keine Probleme habe :(
 

CreativeDEV

New Member
Hallo Fusl,

danke nochmal für das Melden der Injectionlücke.
Das Nachrichten und Messsystem wurde am Wochenende überarbeitet - es sollte sich nun etwas signifikant an der "Spamwelle" geändert haben.

In der nächsten Panelversion sind dann auch Punkte in der Serverbeschreibung zugelassen.

LG
 

Fusl

Blog Benutzer
Ein weiterer Fehler den ich soeben gefunden habe:

Accountlimits Server ist bei mir auf 3 gesetzt. Ich habe soeben meinen 3ten Server hinzugefügt und die Fehlermeldung erhalten, dass ich bereits das Limit erreicht habe, konnte also nicht fortfahren. Der Server wurde trotzdem hinzugefügt und ich kann ihn auch bearbeiten, wenn ich nun auf "Services Und Informationen" (hier sollte das "Und" kleingeschrieben werden) klicke.

Nachtrag: Ein Klick auf das Logo links oben sollte auch (wie "Startseite") auf /startseite.html verlinken.
 

Fusl

Blog Benutzer
(teilweise geht es über SYN-SYNACK Teil des Handshake)
Wobei immer ein Handshake geht, egal ob sich der SSH-Dienst nun aufgehängt hat oder nicht. (Ich meine damit nicht, dass der SSH-Dienst komplett offline ist)
 

Fusl

Blog Benutzer
Ich sollte echt von HostOK wieder wegwechseln, bevor ich noch einen 1. Anfall und 2. Herzinfarkt bekomme. (Siehe Anhang)
 

Attachments

  • snapshot155.png
    snapshot155.png
    58.3 KB · Views: 262

yago

Member
Naja vielleicht war ja kurz das Netzwerk weg, bei deinen Servern...
Stehen ja scheinbar bei Hetzner, und zumindest laut meinem Monitoring hatte mein Hetzner Server auch wieder mal gegen 01:42 kurzzeitig Packet loss.
 

Fusl

Blog Benutzer
Außer, dass ich hätte aus'm Game fliegen müssen weil mein VPN darüber läuft :)
 

yago

Member
Wie gesagt mein Hetzner Server hatte fast zur gleichen Zeit Netzwerkprobleme, aber vielleicht war das auch nur ein Zufall ;)
 
Top