Was ist JavaScript?

Die Skriptsprache JavaScript hat man entwickelt, um dynamische HTML-Dokumente im Webbrowser anzeigen zu können. Die Verarbeitung von JS-Code erfolgt meist direkt im Webbrowser des Nutzers. Mit der Programmiersprache Java hat JavaScript jedoch nicht viel gemeinsam.

Entwicklungsgeschichte von JavaScript

Die Skriptsprache wurde von Netscape ursprünglich unter der Bezeichnung LiveScript entwickelt. Das Ziel der Netscape-Entwickler war es, dynamische HTML-Inhalte direkt im Webbrowser des Nutzers darstellbar zu machen. Der Einsatz von JavaScript sollte Entwicklern die Möglichkeit geben, statische HTML-Dokumente mit dynamischen Elementen anzureichern, Nutzer-Aktionen zu interpretieren und darauf entsprechend zu reagieren, Webseiteninhalte dynamisch zu ändern und Inhalte auf Abruf zu generieren und darzustellen.
Die Programmiersprache Java erlebte in der zweiten Hälfte der 1990er-Jahre einen beispiellosen Höhenflug und wurde von vielen Entwicklern genutzt, um interaktive Desktop- und Webanwendungen zu programmieren. Aufgrund einer Zusammenarbeit mit dem IT-Giganten Sun Microsystems, der die Programmiersprache Java im Jahr 1995 der breiten Öffentlichkeit vorgestellt hatte, entschied sich Netscape dazu, ihre neue Sprache in Anlehnung an die Programmiersprache von Sun Microsystems JavaScript zu nennen. Allerdings teilen sich diese beiden Sprachen fast keine Gemeinsamkeiten.

Netscape veröffentlichte JS im Jahr 1995. Es war fester Bestandteil des zu dieser Zeit sehr beliebten Webbrowsers Netscape Navigator. Begünstigt durch die schnelle Verbreitung des Internets Ende der 1990er-Jahre verbreitet sich JS sehr schnell. Im Laufe der Jahre wurde die Skriptsprache kontinuierlich weiterentwickelt und durch neue Funktionen und Features ergänzt, sodass JS heutzutage neben PHP (LINK) und Python (LINK) zu den grundlegenden Sprachen des World Wide Web gehört.

Skriptsprache ist sehr dynamisch und äußerst flexibel

Einen wesentlichen Anteil am Erfolg von JavaScript hat die Unabhängigkeit von spezifischen Webbrowsern beigetragen. Die Skriptsprache selbst ist sehr dynamisch und äußerst flexibel. Sie verfügt über objektorientierte Eigenschaften und bietet Unterstützung für verschiedene Programmierparadigmen, wie beispielsweise prozedurale, objektorientierte oder funktionale Paradigmen. Dank Node.js lässt sich JavaScript heutzutage nicht nur clientseitig im Rahmen eines Webbrowsers nutzen, sondern auch direkt auf einem Webserver (Apache oder nginx).

Welche Projekte kann man mit JavaScript realisieren?

Durch den Einsatz von JS lassen sich viele unterschiedliche Projekte und Funktionen realisieren.

Im Folgenden gehen wir auf gängige Einsatzgebiete von JavaScript ein:
– dynamische Veränderung von Webseiteninhalten
– Erstellung interaktiver Menüs
– Aktualisierung von HTML-Elementen und Daten, ohne einen Reload der gesamten Webseite
– Veränderung von Texten oder Grafiken durch Aktionen des Nutzers

Abgrenzung zu Skriptsprache Java

Obwohl JavaScript und Java einen ähnlichen Namen haben, teilen sich die beiden Programmiersprachen jedoch nur wenige Gemeinsamkeiten. Bei Java handelt es sich um eine objektorientierte, vollwertige Programmiersprache, die einen wesentlich größeren Funktionsumfang und Befehlssatz bietet als JavaScript. Experten sehen Java als Derivat von C++ an.
Bei JavaScript hingegen handelt es sich um eine Skriptsprache, die grundsätzlich nicht alleine lauffähig ist. JS-Skripte benötigen eine Laufzeitumgebung wie den Webbrowser oder Node.js, um ausgeführt zu werden. JavaScript war ursprünglich dazu vorgesehen,  um es lediglich im Browser einzusetzen. Inzwischen lassen sich JS-Skripte jedoch auch unabhängig vom Browser direkt auf dem Webserver ausführen.

Sicherheitsaspekte

Mit den Möglichkeiten, die JavaScript mit sich bringt, gibt es auch ebenso viele sicherheitskritische Aspekte bei der Ausführung von JS-Skripten. Viele dieser Problemstellungen werden durch das sogenannte „Sandbox-Prinzip“ effektiv gelöst. Alle Befehlszeilen werden von dem Browser in einem isolierten Bereich ausgeführt und haben ausschließlich Zugriff auf die Ressourcen des Webbrowsers und nicht des gesamten Computers.
So wird  der Zugriff auf das Dateisystem durch die Sandbox unterbunden. Darüber hinaus führen moderne Webbrowser wie Chrome oder Firefox jede aufgerufene Webseite, Webanwendung oder Domain  isoliert voneinander aus. Dies erschwert den Datenaustausch zwischen den einzelnen Instanzen, wodurch das Risiko vor sogenannten „Cross-Site-Scripting-Angriffen“ minimiert wird.

JavaScript im Kontext der Suchmaschinenoptimierung

Suchmaschinen analysieren den JS-Code in der Regel nicht. Suchmaschinen-Crawler können die dynamische Interaktion  nicht nutzen. Ein Crawler besucht die Webseite so, wie ein Besucher, bei dem JavaScript explizit im Webbrowser deaktiviert ist. Demzufolge kann ein Web-Crawler Websites nicht erreichen, die man in JavaScript geschrieben hat. Dies hat negative Folgen für das Suchmaschinenranking der betroffenen Webpräsenz.

Weitere Problemstellungen bei JS

Es kommt immer wieder vor, dass Webseitenbetreiber versuchen, JS-Code für die eigenen Interessen zu missbrauchen. So können zum Beispiel mehrere Pop-Up-Fenster ohne Zustimmung des Nutzers automatisch geöffnet werden. Weitere Funktionen, mit denen man den JS-Code missbrauchen kann, sind:
– ungewollte Änderungen am Browserfenster
– das Tarnen zwielichtiger Links und Internetadressen
– die absichtliche Deaktivierung von Kontextmenüs zum Speichern und Kopieren von Webinhalten

MySQL ist ein relationales Datenbank-Management-System, das auf der Structured Query Language (SQL) basiert. Das Datenbank-System ist Open-Source-basiert und mit nahezu sämtlichen Betriebssystem-Plattformen kompatibel. Sie können das System daher unter Windows, Linux, Unix und einigen weiteren Betriebssystemen nutzen. Die Anwendungsmöglichkeiten MySQLs sind sehr vielseitig, doch findet es überwiegend Einsatz in Webseiten, Online-Publikationen sowie verschiedenen internetbasierten Anwendungen.

Überblick und Allgemeines zu MySQL

Die Abkürzung „MySQL“ setzt sich aus den Komponenten „My“ und „SQL“ zusammen. „My“ bezeichnet dabei den Vornamen der Tochter des Mitentwicklers des Datenbank-Systems Michael Widenius. SQL beschreibt die Structured Query Language, eine Datenbank-Abfrage-Sprache, die der Definition relationaler Datenbankstrukturen dient. SQL findet auch Einsatz zur Bearbeitung und für Abfragen von Datenbeständen, die auf diesen Datenbanken basieren.

Als Datenbanksprache baut SQL auf der relationalen Algebra auf. Die Syntax der Sprache SQL orientiert sich semantisch an der englischen Umgangssprache. Die Sprache ist standardisiert durch ein gemeinsames Gremium von ISO und IEC sowie unter Kooperation mit nationalen Normungsgremien (darunter DIN).

Im Internet ist MySQL eines der am häufigsten verwendeten Datenbank-Systeme. In der Generierung dynamischer Webseiten sowie Anwendungen spielt MySQL daher eine wichtige Rolle. Zahlreiche CMS (Content-Management-Systeme) bedienen sich der Technik des Datenbank-Systems, darunter TYPO3 sowie WordPress.

Als Datenbank-System zeichnet sich die Open-Source-Software insbesondere dadurch aus, besonders große Datenmengen schnell verarbeiten zu können. Die hohe Performance kommt unter anderem durch die Art der Datenspeicherung zustande. Mit MySQL werden Daten in einer Art und Weise gespeichert, dass sie einen möglichst geringen Speicherplatz beanspruchen.

SQL und Abfrage-Tools für MySQL

Das Datenbank-System von MySQL lässt sich über die Datenbanksprache SQL (structured query language) ansteuern. MySQL verfügt über keine eigenständige grafische Oberfläche, doch finden Sie verschiedene externe Programme, mit denen sich eine solche realisieren lässt. Sowohl kostenlose als auch kommerzielle Programme ermöglichen eine grafische Darstellung zur Bedienung und Administration des Datenbank-System. Beispiele hierfür sind die Anwendung phpMyAdmin oder die von Oracle heraus gebrachte MySQL Workbench.

MySQL gilt mittlerweile als sehr ausgereift, sicher und vor allem als stabil. Das flexible Datenbank-System ist zudem mit zahlreichen Schnittstellen zu unterschiedlichen Anwendungen ausgestattet und somit weithin kompatibel. Ebenso ist die Bedienung in zahlreichen Sprachen möglich. Auch gilt die Bedienung des Datenbank-Systems als vergleichsweise einfach und selbsterklärend.

Geschichte und Entwicklung MySQL

Ursprünglich begann die Entwicklung des DBMS als Open-Source-Projekt im Jahr 1994. Das schwedische Unternehmen MySQL AB stand unter der Leitung der Entwickler Michael Widenius und David Axmark. Die erste Veröffentlichung erschien im Jahr 1997. Anfang des Jahres 2008 übernahm dann Sun Microsystems das Unternehmen. Sun Microsystems führte die Entwicklung von MySQL fort, bevor noch im gleichen Jahr die Veröffentlichung der Version 5.0 erfolgte. Im Jahr 2010 übernahm Oracle schließlich Sun Microsystems wodurch MySQL zum Datenbankriesen Oracle „wanderte“. Da Oracle im Bereich der kommerziellen Datenbanken neben Microsoft der Haupt-Wettbewerber von MySQL ist, stieg zunächst die Befürchtung, dass durch den Wechsel zu Oracle nun auch MySQL kostenpflichtig wird.

Oracle arbeitet seither fortlaufend an der Verbesserung des Datenbank-Systems. Zahlreiche neue Releases sind seitdem erschienen. Der in den Programmiersprachen C und C++ geschriebene Quellcode des Systems ist frei verfügbar und veränderbar. Für Entwickler ist die kostenlose Nutzung unter der GNU General Public Licence möglich. Für Unternehmen ist es allerdings erforderlich, eine kommerzielle Lizenz bei Oracle zu erwerben.

Aufbau und Funktionsprinzip des Datenbank-Systems von MySQL

Datenbank-Schema unter MySQL

Datenbank-Schema unter MySQL

Das Datenbank-Management-System besteht aus den Komponenten des MySQL-Servers sowie einem oder mehreren Clients. Das System arbeitet demnach nach dem Client-Server-Prinzip. Der Server stellt hierbei das eigentliche Datenbank-Management-System dar. Dem Server obliegen die Aufgaben der Speicherung sowie der Verteilung der Daten.

Innerhalb der Datenbanken liegen die Daten in zweidimensionalen Tabellen vor. In unterschiedlichen Zeilen und Spalten befinden sich hier unterschiedliche Datentypen. Diese umfassen etwa numerische Daten, aber auch Zeichenketten (darunter Text) sowie Datumsformate und Uhrzeiten.

Clients sind imstande, diese Daten über strukturierte Anfragen an die Engine (d.h. den Server) abzurufen. Auf diese Weise ist ebenso eine Bearbeitung dieser Daten möglich. Die Datenbanksprache SQL ermöglicht das Abrufen sowie auch das Verändern, Einfügen und Löschen der Daten.

Das Datenbank-System ist ebenso geeignet, eine größere Zahl verschiedener Datenbanken zu verwalten. Verschiedene Clients können mehrere Anfragen gleichzeitig an diese Datenbanken senden. Der Zugriff auf diese Datenbanken ist in Abhängigkeit ihrer Verwendung sowohl über das Internet als auch über interne Netzwerke möglich.

Die Regelung des Zugriffs auf die Daten erfolgt, indem Clients bzw. deren Benutzer unterschiedliche Rechte erhalten. Über diese Rechte können Sie steuern, auf welche Daten sowie Datenbanken bestimmte Anwender Zugriff erhalten. Zu den möglichen Clients gehören etwa Internet-Anwendungen sowie Kommandozeilen-Programme.

Zur Optimierung der Performance von MySQL Datenbanken lassen sich die Abfrageergebnisse in einem Cache-Speicher zwischenspeichern. Dieser Cache trägt den Namen Query-Speicher. Dieser ist imstande, eine Anfrage unmittelbar zu beantworten, sofern sie mit einer vorherigen Anfrage identisch ist und es in der Zwischenzeit zu keiner Änderung des Datenbestands in der Datenbank gekommen ist.

Kommt es also zu einem späteren Zeitpunkt zu einer gleichen Anfrage, ist eine sofortige Beantwortung aus dem Query-Cache möglich. Es ist entsprechend kein weiterer Zugriff auf die Datenbank erforderlich. Dies hat eine deutliche Entlastung des Servers zur Folge. Infolgedessen steigt die Performance in Form einer schnelleren Verarbeitungsgeschwindigkeit.

Verbreitung und Einsatzgebiete von MySQL

Bei MySQL handelt es sich um das Open-Source-Datenbank-System mit der weltweit größten Verbreitung. Es existieren mehrere Millionen Installationen des Systems. Ein besonders häufiges Anwendungsgebiet MySQLs sind Webserver. In Kombination mit der beliebten Skriptsprache PHP (Hypertext Preprocessor) lässt sich das Datenbank-System für die Datenspeicherung von Web-Services einsetzen.

Ebenso basieren zahlreiche CMS auf der Open-Source-Software. Insbesondere WordPress, TYPO3 oder Joomla nutzen dieses Datenbank-System in Kombination mit PHP als Grundlage.

Als Architektur liegt das Datenbank-System ebenso vielen Webshops zugrunde. Anbieter von Webhosting-Lösungen bieten daher MySQL-Datenbanken in Kombination mit PHP grundsätzlich als Grundausstattung ihrer Webserver an. Auch große Internet-Konzerne wie Google oder Facebook nutzen das Datenbank-System als Grundlage

Nutzung von MySQL in LAMP

Häufig erfolgt die Nutzung von MySQL im Zusammenhang mit LAMP (Linux, Apache, MySQL und PHP). Hierbei handelt es sich um eine Web-Entwicklungsplattform beziehungsweise Infrastruktur, auf deren Basis sich dynamische Webseiten und Webanwendungen entwickeln lassen. Als Akronym steht LAMP für die Komponenten Linux (Betriebssystem), Apache (Webserver), MySQL und PHP. Es existieren auch Kombinationen, in denen sich die Komponenten von dieser Aufstellung unterscheiden. Gelegentlich kommen Python oder Pearl an Stelle von PHP zum Einsatz. Auch andere Betriebssysteme sind möglich. Hierbei kann sich die Bezeichnung der Plattform ändern, beispielsweise zu WAMP beim Einsatz von Windows.

Versionen und Abwandlungen des Systems

Das Datenbank-System liegt sowohl als Open-Source-basierte Software als auch in kommerziellen Varianten vor. Für den Server existieren mehrere Lizenzmodelle, die für je unterschiedliche Anwendungszwecke vorgesehen sind. Für verschiedene Ansprüche können Sie unterschiedliche Lizenzen erwerben.

Es existieren über die regulären Lizenzmodelle hinaus auch abgewandelte Versionen der Datenbank, die als Fork oder Abspaltung bekannt sind. Dazu gehört Drizzle, ein Datenbank-Management-System, deren Entwicklung auf MySQL basiert. Auch Percona Server ist eine Abwandlung des Systems und stellt eine erweiterte Version mit zusätzlicher Funktionalität dar. Zu den Besonderheiten gehört insbesondere eine bessere horizontale Skalierbarkeit gegenüber der regulären Version.

Eine weitere Fork ist MariaDB, ein Community-Projekt. Nach der Übernahme MySQLs durch Oracle hatte sich dieses Projekt von MySQL abgespalten, nutzt aber weiterhin Befehle sowie Schnittstellen von MySQL.

Trivia: Das Delfin Logo von MySQL

Wer mit MySQL zu tun hat, dem ist sicherlich das Logo von MySQL aufgefallen: Ein Delfin. Doch warum ist ausgerechnet ein Delfin das Symbol von MySQL? Aus Sicht der damaligen Entwickler symbolisierte der Delfin bzw. Delfine im Allgemeinen all das wofür MySQL stehen sollte: Delfine sind schnell, intelligent und freundlich.

Mårten Mickos beschreibt die Frage nach dem Symbol von MySQL auf Quora so: „One of the co-founders, Monty, said ‚I like dolphins. They are fast, intelligent and kind. And in groups, they kill sharks.'“ (Auf Deutsch: Ich mag Delfine. Sie sind, intelligent und nett. Und in Gruppen töten Sie Haie“). Einige Jahre später bekam der Delfin sogar einen Namen. Seitdem heißt der Delfin von MySQL „Sakila“.

Weitere Informationen zu MySQL:

Apache ist ein kostenloser Open Source Webserver. Der Apache Webserver ist der populärste Webserver, der aktuell von rund 46 % aller Webseiten weltweit genutzt wird. Die erste Version wurde 1995 veröffentlicht. Entwickelt und verwaltet wird der Webserver von der Apache Software Foundation (ASF). Der vollständige Name lautet Apache HTTP Server.

Wie funktioniert der Apache Webserver?

Obwohl Apache als Webserver bezeichnet wird, handelt es sich nicht um einen physischen Server. Apache ist eine Software, die auf einem Server ausgeführt wird. Beim Apache-Webserver handelt es sich um eine plattformübergreifende Software, die sowohl auf Unix/Linux wie auch auf Windows Servern ausgeführt werden kann. Seine Aufgabe ist es, eine Verbindung zwischen einem physischen Server mit den gespeicherten Webseiten und den Browsern der Internetuser herzustellen.

Wenn ein User eine URL in seinen Webbrowser eingibt, sendet der Browser eine HTTP oder HTTPS Anforderung an den Server, auf dem die Webseite gespeichert ist. Der auf dem Server installierte Apacheserver verarbeitet die HTTP oder HTTPS Anforderung und gibt die angeforderten Webseiten zurück.

Multitasking und Multithreading

Ein Apacheserver kann mehrere HTTP-Anforderungen gleichzeitig verarbeiten. Dazu muss der Server auf mehreren „Threads“ ausgeführt werden. Ein Thread ist Teil eines Programms, das vom Hauptprogramm abzweigt und gleichzeitig ausgeführt wird, um eine bestimmte Aufgabe auszuführen. Der Apacheserver erstellt für jede HTTP-Anforderung einen neuen Thread. Jeder Thread verarbeitet die Anforderung eines Users und gibt die abgerufene Webseite. Auf diese Weise können Webseiten für mehrere Benutzer gleichzeitig bereitgestellt werden.

Programm- und Dateidienste

Neben dem Abruf von Webseiten kann der Apacheserver Benutzern das Herunterladen von Dateien ermöglichen. Dazu gehören Audiodateien, Filmdateien oder andere Dateien wie Word-Dokumente oder PDF-Dateien. Zudem ermöglichen serverseitige Skriptsprachen wie PHP, Perl, Python oder Ruby das Erstellen dynamischer Webseiten durch den Server. Um Anforderungen für dynamische Webseiten verarbeiten zu können, muss das entsprechende Modul installiert sein. Diese Module werden beispielsweise als smod_php, mod_python oder mod_perl bezeichnet.

Erweiterung mit Modulen

Für den Apacheserver stehen eine ganze Reihe Module zur Verfügung, mit denen der Funktionsumfang des Servers erweitert werden kann. Hierzu gehören beispielsweise eine Passwortauthentifizierung und digitale Zertifikate, anpassbare Fehlermeldungen, virtuelle Hosting-Funktionen, Proxy-Dienste, SSL und TLS oder eine GZIP-Komprimierung zur Beschleunigung der Ladezeiten von Webseiten und Dokumenten.

Apache für die Webseitenentwicklung

Der Apache HTTP Server steht als eigenständige Software oder zusammen mit anderen Programmen in einem Paket für Website-Entwickler zur Verfügung. Dieses als XAMPP bezeichnete Paket ist keine originäre Entwicklung der ASF, sondern wird von den Apache Friends zusammengestellt. XAMPP wird auf lokalen Computern installiert und für die Entwicklung von Webseiten genutzt.

Das Paket beinhaltet den Apacheserver, eine MariaDB Datenbank, die Skriptsprachen PHP, Perl und PEAR sowie zwei FTP-Programme. Wird die Skriptsprache Phyton benötigt, muss diese als eigenständiges Modul zusätzlich installiert werden. XAMPP ist für MacOS, Linux (Unix), Solaris und Windows Betriebssysteme erhältlich.

Apache im Vergleich mit anderen Webservern

Da der Apache eine threadbasierte Struktur verwendet, können bei Webseiten mit hohen Besucherzahlen Leistungsprobleme auftreten. Im Gegensatz zum Apacheserver nutzt der Nginx (ausgesprochen Engine X) Webserver eine ereignisgesteuerte Architektur. Das heißt, Nginx erstellt nicht jedes Mal einen neuen Prozess für jede einzelne Anforderung.

ApacheDer Server behandelt stattdessen alle eingehenden Anforderungen in einem einzigen Thread. Dieser sogenannte Masterprozess verwaltet mehrere Arbeitsprozesse, die die eigentliche Verarbeitung von Anforderungen durchführen. Das ereignisbasierte Modell von Nginx verteilt Benutzeranforderungen effizient auf sogenannte Worker-Prozesse. Dies ermöglicht eine wesentlich bessere Skalierbarkeit bei hohen Besucherzahlen.

Tomcat ist ein weiterer noch relativ junger Webserver, der ebenfalls von der ASF entwickelt wurde. Es handelt sich bei Tomcat um einen HTTP-Server, der jedoch speziell für Java-Apps entwickelt wurde. Tomcat kann verschiedene Java-Spezifikationen ausführen, zum Beispiel Java Servlet, JavaServer Pages (JSP), Java EL und WebSocket.

Der Apache Webserver ist Open Source und kostenlos – sowohl für die private wie auch die kommerzielle Nutzung. Der Server wird regelmäßig aktualisiert und bietet eine hohe Flexibilität durch die modulbasierte Struktur. Er ist einfach konfigurierbar und kann von unerfahrenen Nutzern problemlos eingerichtet werden. Ein weiterer Vorteil ist, dass der HTTP-Webserver plattformübergreifend auf unterschiedlichen Betriebssystemen eingesetzt werden kann. Nicht zuletzt steht im Hintergrund eine große Community, die eine schnell verfügbare Unterstützung bei Problemen bietet.

In der öffentlichen Wahrnehmung sitzen sie in dunklen Stuben vor ihrem Computer. Sie lehnen in schwarzen Hoodies über ihrem Laptop und prellen Unschuldige um ihr Erspartes: Hacker. Doch was steckt tatsächlich hinter dem Computerhacker. Wie verschaffen sie sich Zugriff auf Rechner und Netzwerke und sind Hacker wirklich immer Kriminelle?

Hier geht es um den Begriff des Hackers, die Definition und die wichtigsten Persönlichkeiten. Und natürlich auch um die gängigsten Klischees und deren Entkräftung.

Der Computer gehört nicht zwangsläufig zum Hacker

Klischeebild eines Hackers

Der Begriff des Hackens hat inzwischen seine ursprüngliche Bedeutung in der Popkultur fast schon zurückgewonnen. Bei kreativen Lösungen und beim Tüfteln spricht man vom HackenZopfgummis als Kabelsortierer etwa sind ein Life-Hack.

Entsprechend ist der Begriff des Hackens auch älter als der des Computerhackers. Es geht beim Hacken eher darum, kreative Lösungen zu finden und Probleme zu lösen. Das können kleinere Probleme des Alltags sein, aber eben auch Sicherheitslücken in Programmen und Websites. Der Begriff ist eigentlich gleich mehrfach neutral besetzt, auch moralisch.

Hacker früher und heute

In den 1950er Jahren fanden Hacker dann im Computer ein neues Tool. Sie suchten sich Wege, die Programme und die Technik auszuloten. Mit der Einführung der Vernetzung und der Verbreitung des PC in Haushalten in den 1980er Jahren gewannen Hacker und die gesamte Hackerszene zunehmend an Bedeutung.

Durch das Sammeln privater Nutzer- und Bankdaten, das Aufbrechen von Sicherheitsmechanismen und das Knacken von Datenbanken von Websites oder Phishing bekam der Begriff eine negative Konnotation. Dabei ist der Sammelbegriff für diese Form der Internetkriminalität und den Cyber-Terrorismus eigentlich Cracker.

Phishing, Mal- und Ransomware – die kriminellen Methoden der Cracker

Hacker

Ein Hacker ist nicht zwangsläufig kriminell

In der Hackerszene ist man darauf bedacht, den Begriff des Hackers von dem des Crackers deutlich zu trennen. Angelehnt an den klassischen Western ist im Englischen auch von „White Hats“ und den böswilligen „Black Hats“ die Rede.

So sind es eben Cracker, die mit verschiedenen Formen der Cyberkriminalität versuchen, auf Computer von Nutzern Zugriff zu erhalten. Dies kann verschiedene Formen annehmen. Mal geht es nur darum, blanken Schaden anzurichten. In solchen Fällen werden Anhänge verschickt, welche Computer mit einem Virus infizieren und eine Nutzung unmöglich machen.

Solche Malware kann aber auch nach sensiblen Informationen wie Bankdaten oder persönlichen Fotos suchen oder aber den Computer als Geisel nehmen. Ransomware übernimmt den Rechner und macht eine Nutzung unmöglich, es sei denn der Nutzer zahlt ein Lösegeld.

Auch Phishing-Versuche wie falsche Warnungen zu Konten, Kreditkarten, PayPal oder Phishing-Versuche (wie der nigerianische Prinz) werden oft landläufig als Hacking bezeichnet. Allerdings sind solche Taktiken eher verpönt.

In der Hackerethik ist die verbreitete Sichtweise, dass ein Eindringen (auch böswilliges) in geschlossene Systeme so lange in Ordnung ist wie kein Schaden angerichtet wird.

Hacker und ihr Nutzen für Unternehmen

Große Unternehmen setzen auf Hacker. Start Ups wie Facebook und Google veranstalten regelmäßig sogenannte Hackathons. Hier probieren die Programmierer sich in langen Sessions aus und lassen ihre Kreativität arbeiten.

Auch im Sicherheitsbereich braucht die Industrie Hacker, ansonsten werden Sicherheitslücken am Computer oder in einem Programm eben erst dann bemerkt, wenn es zu spät ist. Wird eine Lücke frühzeitig entdeckt (entweder intern oder durch vergleichsweise harmlose Hacks), so kann sie geschlossen werde, ehe es wirklich zu spät ist.

Denn durch böswillige Hacks wie die massenhafte Erbeutung von Kreditkartendaten bei Sony, Brute Force-Attacken gegen Apples iCloud oder die vorgebliche Akquise von Nutzerdaten der Datingseite Ashley Madison können Unternehmen in ernsthafte Schwierigkeiten geraten. Mit dem Verlust des Kundenvertrauens geht schließlich auch ein finanzieller Verlust einher. Alleine deswegen sind „gesunde“ Hacks auch im wirtschaftlichen Interesse von Unternehmen.

Sind Hacker eine Gefahr für die moderne Informationswelt?

Hacking kann auch sinnvoll sein

Eine große Gefahr, die derzeit am Computer entsteht, und wirklich massive Auswirkungen auf unsere Informationslandschaft und die westliche Demokratie hat, hat mit Hacks nicht einmal etwas zu tunCyberangriffe wie die koordinierten Desinformationskampagnen vor den US-Wahlen fallen nicht unter die Kategorie Hacking. Plattformen wie Facebook und Twitter wurden nicht gehackt, sondern wie vorgesehen genutzt und so missbraucht.

Organisationen wie der deutsche CCC (Chaos Computer Club) haben sich sogar einer sehr deutlichen Ethik verschrieben. Und diese steht eigentlich im Sinne einer besseren Informationskultur und des Datenschutzes der Nutzer: weniger Überwachung, dafür mehr Information und Archivierung durch Verbreitung.

Die Entstehung von „Open Source“

Bereits in den 80ern entwickelte sich in den USA eine Open Source-Kultur, welche quelloffene Programme erstellte. Oder aber die Quellcodes von Programmen veröffentlichte. Daraus entstanden etwa die Betriebssysteme Linux, die Variante Ubuntu, die Photoshop-Alternative GIMP oder Open Office. Die Öffnung des zugrunde liegenden Codes ermöglichte es der Community, beständig Verbesserungen vorzunehmen und entzog die Programme einer zentralisierten Kontrolle. Zudem kann man Lücken und Fehler im Code schneller finden und ausmerzen.

Auch im Sinne einer Software-Archivierung ist die „Erbeutung“ von Programmen relevant, diese Form der Piraterie ist oftmals die einzige Möglichkeit der Erhaltung. Wenn Unternehmen ältere Programmversionen aus ihrem Angebot nehmen, verschwinden diese inzwischen ganz. Ohne physische Medien geht so ein Teil der Informationsgesellschaft verloren. Hacking und Piraterie sind hier – wenn auch nicht legal – die einzigen Wege eines schlüssigen Informationsverzeichnisses.

Hacking auf staatlicher Ebene

Die Guy Fawkes-Maske verbinden viele mit Hackern

Auch auf staatlicher Ebene werden indes Hacker eingesetzt, Deutschland zog mit einer Cyber-Initiative der Bundeswehr vor einigen Jahren erst etwas spät nach. Der Cyber-Terrorismus stellt eine reale Gefahr dar, die im großen Stile sensible Daten erbeuten kann und Infrastruktur wie Stromnetze gefährdet.

Staaten wie Nordkorea stehen seit längerem im Verdacht, durch Hacking an Bitcoin-Börsen eine unauffällige Finanzquelle zu unterhalten. Auch Russland unterhält mehrere Divisionen der Cyber-Kriegsführung. Die Gefahr ist also durchaus real, typisch für den Hacker und die klassische Ethik der Freiheit ist dies allerdings nicht.

Dies hat seit einigen Jahren sogar zu einer besonderen Kategorie unter Hackern geführt, den sogenannten Hacktivists. Diese Mischung aus Hackern und Aktivisten nutzen nichtautorisierte Zugriffe auf Systeme, um auf Missstände und Gefahren hinzuweisen oder gegen illegale Aktivitäten (auch von Regierungen) aufmerksam zu machen.

Die „Namen“ der Szene – einige der größten Hacker

Ein Bild, das immer wieder mit Hackern assoziiert wird, ist der Mann mit der Guy Fawkes-Maske, der am Rechner sitzt. Die Maske erlangte durch den Film „V for Vendetta“ Berühmtheit in der Popkultur und ist ein Symbol des Putsches, historisch bedingt durch den Kanonenpulverplot gegen das britische Parlament.

Die Maske steht außerdem in Verbindung zur Gruppe Anonymous, die seit den frühen 2000ern vage organisiert für soziale Gerechtigkeit steht bzw. stand. Anonymous sind eher digitale Whistleblower, die sich vor Jahren einen Streit mit Scientology lieferten.

Beispiele einzelner bekannter Hacker

Die meisten Hacker bleiben anonym

Einer der Urväter des Hackings ist der US-Amerikaner Kevin Mitnick, in den frühen 80ern hackte er sich ins nordamerikanische Verteidigungsnetzwerk NORAD, später verkaufte er Sicherheitslücken an Meistbietende.

Ein klassisches Beispiel für einen „White Hat“ ist der Amerikaner Adrian Lamo, der aufgrund seiner minimalistischen Ausrüstung und seines Auftretens mit nichts als einem Rucksack auch obdachloser Hacker genannt wurde. Lamo manipulierte etwa Presseartikel und kontaktierte seine Opfer, bisweilen beseitigte er den von ihm zugefügten Schaden sogar.

Deutlich gefährlicher wurde es etwa im Falle des Hackers ASTRA. Ein griechischer Mathematiker, dessen Identität nie öffentlich wurde, erbeutete Software und Datensätze zu Waffentechnologien, die er verkaufte – 2008 wurde er allerdings verhaftet.

Kein System ist sicher

Hacker rein moralisch zu beurteilen ist zu kurz gegriffen. Die teils legale, teils illegale und teils in der Grauzone befindliche Arbeit am Computer ist ein komplexes Feld. Deswegen sollte Hacking keinesfalls auf CyberkriminalitätPhishing und Trojaner reduziert werden.

Vielmehr geht es bei dem Begriff des Computerhackers – ohne Wertung – um die kreative Ausnutzung von Sicherheitslücken, Schwachstellen und Exploits (also ausnutzbaren Fehlern). Diese Denkweise ist, solange kein Schaden entsteht, wichtig für die Softwareoptimierung und die Sicherheit jedes Einzelnen am Computer.

Doch natürlich ist Hacking ein stetes Spannungsfeld zwischen Lausbubenstreich, Freiheitsstreben, böswilligen Angriffen und koordiniertem Aktivismus. Aber so ist dies natürlich nicht nur beim Computerhacking, sondern bei allen kreativen Strategien, die neue Prozesse zu erkunden suchen.

Einleitung – Software-Verteilung

Software-Installation bzw. Verteilung auf PCs wird in vielen Netzwerken immer noch nach der „Turnschuh“-Methode gemacht. Ein Administrator läuft an den betroffenen Rechner, installiert die gewünschte Software per CD/DVD oder USB-Stick. In den besseren Fällen erfolgt die manuelle Installation remote über Teamviewer oder andere Fernwartungs-Software. – Alles in allem ist die manuelle Installation von Software bzw. Ganzen PCs oder Notebooks vor allem aus zeitlichen Gesichtspunkten nicht effizient.

Besser wäre es einen PC möglichst vollautomatisch zu installieren. Gleiches gilt natürlich für die nachträgliche Installation von Software auf Windows-PCs. Wie lange bräuchte wohl ein IT-Administrator um auf 30 Endgeräten die Aktualisierung der Java-Runtime, des Adobe Acrobat Readers oder einer anderen Software die auf praktisch jedem Endgerät vorhanden ist?

Die Lösung für diesen Zeitfresser sind Software-Tools, die die Inventarisierung und Software-Verteilung im Idealfall vollautomatisch übernehmen. Zum Glück existieren neben kommerziellen Systemen wie SCCM von Microsoft, PDQ-Deploy oder DeskCenter auch Opensource-Kandidaten aus der Gruppe der Software-Deployment-Tools. Eines davon – OPSI (kurz für Open PC Server Integration) – möchten wir heute vorstellen.

OPSI ist Opensource und wird von der deutschen Firma UIB aus Mainz entwickelt. Da OPSI zur Benutzung nicht lizenziert werden muss, kommt die Software oft bei öffentlichen Verwaltungen (Behörden, Schulen, etc.) vor. Aber auch kleinere mittelständische Firmen nutzen OPSI um PCs zu installieren und Software auszurollen.

Was kann OPSI

Der Leistungsumfang von OPSI ist durchaus ansehnlich. Mit dem Software-Deployment-Tool kann der IT-Administrator die folgenden Aufgaben erledigen:

  • Betriebssystem-Installationen (via PXE-Boot oder Boot-CD)
  • Software-Installationen – in der Regel als „Silent“ oder unattended Installation
  • De-Installationen und Updates bestehender Software
  • Betriebssystem-Updates
  • Konfigurationen von Endgeräten (bspw. Domain-Beitritt) etwa in der Registry
  • Inventarisierung von Software und Hardware

Interessant ist hierbei, daß über die Skript-Sprache von OPSI ganz normale cmd Befehle von Windows im Kontext eines Administrators ausgeführt werden können. Damit kann bspw. mit wenigen Zeilen Code etwa die Windows Firewall ein- oder ausgeschaltet werden.

Konzept der Softwareverteiling mit OPSI

OPSI besteht aus einem Linux-Server, auf dem neben mysql (bzw. mariadb) noch Samba installiert sein muss. Der eigentliche Verteilungsmechanismus erfolgt vom Server aus über einen in Java geschriebenen Client, vom den aus der IT-Administrator die Software-Pakete auf die Notebooks und PCs der Anwender verteilt. Auf den Endgeräten muss ein Agent als Dienst für OPSI installiert sein.

Wie auch bei kommerziellen Deployment-Produkten muss zunächst aus der Installations-Datei des jeweiligen Software-Herstellers ein „Paket“ zur automatischen Installation erstellt werden. Diese Paketierung erfolgt bei OPSI in einer Skript-ähnlichen Sprache.

Voraussetzungen

Um OPSI zu testen oder produktiv zu nutzen, benötigt man lediglich einen einfachen Linux-Server. Opsi funktioniert unter allen wesentlichen Linux-Distributionen (Debian, Ubuntu, RHEL, SLES, CentOS, etc.). Für Interessierte stellt der Hersteller UIB auch noch eine fertige virtuelle Maschine für VMWare oder Hyper-V zur Verfügung. Diese kann bereits mit nur einer CPU und 1 GB RAM betrieben werden.

Wer OPSI produktiv einsetzen möchte, sollte eher 2 CPUs und 2-4 GB RAM veranschlagen. Die Größe des Festplatte richtet sich je nach Kundensituation nach

  • Der Anzahl an Endgeräten (diese werden in einer mysql Datenbank gespeichert)
  • Der Summe der Software-Pakete, die später auf der lokalen Freigabe /var/lib/opsi/repository liegen.

Insbesondere die Software-Pakete benötigen Platz. Wer also ein ansehnliches Arsenal an Software hat, die automatisch verteilt werden soll, sollte hier großzügig Plattenplatz einplanen. Hier bietet sich die Installation einer eigenen Partition unter LVM für das Verzeichnis /var/lib/opsi an.

 

Für alles weiter unten Beschriebene nutzen wir ein aktuelles und frisch installiertes CentOS 7 System. Auf diesem haben wir zur Vereinfachung selinx unter /etc/sysconfig/selinux deaktiviert und den firewalld-Daemon deaktiviert. Das Centos selbst bringen wir mit „yum –y update“ und einem Reboot auf den aktuellen Stand.

Installation von OPSI

Der OPSI-Server sollte unbedingt eine statische IP-Adresse erhalten. In unserem Fall hat der Host die IP 10.42.136.89 aus unserem Testnetz.

Wichtig: Hostname und IP müssen einwandfrei im DNS aufzulösen sein. Wer auf Nummer sicher gehen möchte, der trägt in die /etc/hosts Datei die eigene IP und den Hostnamen ein:

1
10.42.136.89 opsiserver2.intern.local

 

Im Test störte dabei noch die per dhcp vergebene IPV6 Adresse. Diese deaktivieren wir wie folgt:

vi /etc/sysctl.conf => dort einfügen

1
2
3
net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

anschließend

1
sysctl -p

Vorbereiten der Installation von OPSI

Zum Betrieb braucht OPSI zwingend eine SQL-Datenbank – hier mariadb – und SAMBA für die Dateifreigaben. Daher installieren wir die Pakete Samba und mariadb:

1
yum -y install mariadb-server samba

Anschließend starten und aktivieren wir Samba, NMB und mariadb

1
2
3
4
5
6
7
8
9
10
11
systemctl start smb.service

systemctl start nmb.service

systemctl start mariadb.service

systemctl enable smb.service

systemctl enable nmb.service

systemctl enable mariadb.service

Mariadb sichern wir anschließend noch ab, setzen ein root-Password für die mysql-Datenbank und unterbrinden außerdem den Zugriff von extern per mysql. Eine ausführliche Anleitung zur Installation von mysql bzw. mariadb finden Sie bei uns im Blog.

1
mysql_secure_installation

Zur Abwärtskompatibilität sollte noch folgendes in die Datei /etc/my.cnf im Abschnit [mysqld] eingefügt werden:

1
sql_mode=NO_ENGINE_SUBSTITUTION

Danach starten wir mysqld bzw. mariadb einmal neu

1
Service mariadb restart

Last but not least installieren wir 5 kleine Helferlein, damit wir gleich OPSI richtig herunter laden und installieren können.

1
yum -y install wget mlocate net-tools yum-utils sysstat

OPSI Installation

Die eigentliche Installation von OPSI erfolgt durch das Herunterladen eines Repositories und dem anschließenden Installieren von zwei Opsi-Paketen, die ihrerseits gut zwei Dutzend Software-Pakete nach sich ziehen.

1
2
3
4
5
6
7
8
9
cd /etc/yum.repos.d/

wget https://download.opensuse.org/repositories/home:uibmz:opsi:4.1:stable/CentOS_7/home:uibmz:opsi:4.1:stable.repo

yum makecache

yum –y install opsi-server opsi-configed

yum –y install opsi-windows-support

Hinweis: Bei den obigen Befehlen werden Sie zwischendurch aufgefordert einen „GPG-Schlüssel 0xD8361F81“ zu importieren. Bestätigen Sie dies mit „j“.

OPSI für den ersten Einsatz konfigurieren

Opsi wird mit wenigen Befehlen für den Einsatz vorbereitet:

1
[root@opsiserver2> opsi-setup --configure-mysql

In der sich öffnenden Maske lassen Sie die ersten beiden Zeilen so wie sie sind. Geben Sie bei “Database admin password“ das root-Passwort des mysql-Benutzers root ein. (Das sollten sie weiter oben bei mysql_secure_installation eingegeben haben).

Sofern Sie das mysql-Passwort des neuen mysql-Benutzers „opsi“ mit setzen möchten, so geben Sie ein entsprechendes neues Passwort in der letzten Zeile ein. Der mysql-Benutzer „opsi“ mit diesem Passwort wird anschließend automatisch angelegt.

Tippen Sie mit der TAB-Taste solange bis SIe auf das Feld “OK” gelangen und drücken Return/Enter.

Die eigentliche Konfiguration von OPSI wird mit dem folgenden Befehl erstellt:

1
2
3
4
5
6
7
8
9
[root@opsiserver2 ~] opsi-setup --init-current-config

(...)

Mit dem folgenden Befehl werden alle notwendigen Berechtigungen gesetzt:

[root@opsiserver2 ~] opsi-setup --set-rights

(...)

Danach werden die beiden Services “opsiconfd” sowie “opsipxeconfd” neu gestartet

1
2
3
[root@opsiserver2 ~] systemctl restart opsiconfd

[root@opsiserver2 ~] systemctl restart opsipxeconfd

Der folgende Befehlt bereitet die für OPSI notwendige Samba-Konfiguration vor.

1
opsi-setup --auto-configure-samba

Anschließend sollten die Samba-Dienste neu gestartet werden:

1
2
3
systemctl restart smb.service

systemctl restart nmb.service

Last but not least benötigt OPSI noch zwei Benutzer (pcpatch und „adminuser“) und passende Berechtigungen

1
opsi-admin -d task setPcpatchPassword

Anschließend legen wir einen neuen Benutzer namens “adminuser” an.

1
useradd -m -s /bin/bash adminuser

Wir vergeben nun Passwörter für Unix:

1
passwd adminuser

Ebenso ein Passwort für Samba für den Benutzer „adminuser“

1
smbpasswd -a adminuser

 

Zum Schluss wird die Gruppenmitgliedschaft für den Nutzer „adminuser“ eingerichtet und getestet. Dies erfolgt mit:

1
usermod -aG opsiadmin adminuser

Der getent-Befehl sollte dann so etwas ausgeben wie:

1
2
3
[root@opsi01 ~] getent group opsiadmin

opsiadmin:x:1001:opsiconfd,adminuser

Alle User, die Software packen (opsi-makepackage), installieren (opsi-package-manager) oder Konfigurationsdateien manuell bearbeiten wollen, müssen zusätzlich in der Gruppe pcpatch sein. Daher fügen wir den neuen Benutzer „adminuser“ der Gruppe pcpatch hinzu:

1
usermod -aG pcpatch adminuser

Anschließend lassen wir OPSI noch zwei Dinge anapssen:

1
2
3
opsi-setup --patch-sudoers-file

opsi-set-rights

Zu guter Letzt starten wir den OPSI-Dienst einmal neu

1
systemctl restart opsiconfd.service

Damit haben wir die eigentliche Installation von OPSI geschafft.

DHCP für OPSI einrichten

OPSI benötigt an sich keinen eigenen DHCP-Server zur reinen Software-Paketverteilung. Lediglich eine funktionierende Namensauflösung mit DNS ist erforderlich. Wer aber mit PXE (Preboot Execution Environment) ganze Betriebssystem-Installationen auf „nackten“ Endgeräten vornehmen möchte, der muss zumindest die PXE-Boot Option mit einem dhcp-Server vornehmen.

Das geht entweder mit einem bestehenden dhcp-Server in dem die next-Server Option passend eingetragen wird. Oder man installiert auf dem OPSI-Server einen dhcp-Dienst, der PCs und Notebooks das PXE-Boot-Image übermittelt, wenn Sie neu installiert werden sollen.

Die gleiche Konfiguration funktioniert übrigens auch mit einer pfsense Firewall und dort aktiviertem dhcpd-Dienst. Hier muss im Abschnitt „Network Boot“ die IP-Adresse des OPSI-Servers im Feld „Next Server“ eingegeben werden. In das Feld „Default Bios file name“ wird „linux/pxelinux.0“ eingetragen

Übrigens: Mit OPSI lassen sich nicht nur Windows 7,8 sowie Windows 10 installieren. Auch die Server-Betriebssysteme Windows 2008 R2, 2012 und Windows 2016 Server lassen sich mit OPSI von der Pike auf installieren.

OPSI Pakete herunter laden.

Um die öffentlich verfügbaren Vorlagen und fertigen Software-Pakete zu nutzen, müssen diese einmalig aus dem Internet herunter geladen werden. Das erledigen Sie mit dem folgenden Befehl „opsi-package-updater“.

Achtung: das dauert je nach Internet-Anbindung zwischen 15 und 30 Minuten – an einer dünnen DSL-Leitung auch gerne länger:

1
opsi-package-updater -v install

Eine bestehende Installation aktualisieren Sie mit:

1
opsi-package-updater -v update

 

Mit der OPSI-Konsole starten

Für den Aufruf der Konsole von OPSI benötigen Sie eine aktuelle Java Runtime (Version 1.8) und einen Browser. Um nun OPSI zu nutzen und die Verwaltungs-Oberfläche aufzurufen, öffnen Sie einen Browser und rufen die nachfolgende URL auf:

Die Java/Web-Konsole von Opsi

Die Java/Web-Konsole von Opsi

https://<servername oder IP>:4447/configed.jnlp

Die Zertifikatswarnung bestätigen Sie. Anschließend wählen Sie die oberste Option „opsi configuration editor (java web start)“ oder direkt über https://<servername oder IP>:4447/configed.jnlp . Es öffnet sich eine Java-Anwendung, die einige Sekunden braucht bis sie vollständig geladen ist. In der anschließenden Maske geben Sie den Admin-User „adminuser“ als Benutzer ein und das vorhin für den Benutzer „adminuser“ vergebene Passwort.

Die Übersicht der Verwaltungskonsole von OPSI sieht dann wie folgt aus. Hier gibt es allerdings im Moment noch nicht viel zu sehen – es fehlen noch die Laptops und PCs.

OPSI-Client Agent einrichten

OPSI Client auf dem PC installieren

OPSI Client auf dem PC installieren

Das Salz in der Suppe jeder Software-Verteilung sind neben den Software-Paketen die Clients (also PCs und Notebooks) die in den Genuss der installierten Software kommen sollen.

Damit Software-Pakete via OPSI auf den Clients automatisch installiert werden können, benötigt jeder PC einen OPSI-Client. Dieser muss einmal installiert werden und stellt anschließend die Verbindung zwischen PC und OPSI-Server her.

Es gibt dabei zwei Möglichkeiten, wie der OPSI-Client installiert werden kann:

  • Vom PC aus über die Freigabe \\<opsiserver>\opsi_depot
  • Vom OPSI-Server aus über die c$ Freigabe des Clients

Installation des Agenten über die „Opsi_depot“ Freigabe

Dazu verbinden Sie von dem PC, den Sie in Opsi einbinden möchten die OPSI-Freigabe \\<opsiserver>\opsi_depot mit einem freien Laufwerksbuchstaben auf dem PC.

Dort wechseln Sie ins Verzeichnis opsi-client-agent und führen die Datei „service_setup.cmd“ aus. Sobald das abgeschlossen ist, rebooten Sie den PC.

1
C:\Users\&gt;net use z: \\opsiserver2\opsi_depot /user:pcpatch

Geben Sie das Kennwort für „pcpatch“ ein, um eine Verbindung mit „opsiserver2“ herzustellen:

1
2
3
4
5
6
7
Der Befehl wurde erfolgreich ausgeführt.

C:\Users\&gt; z:

Z:\&gt;cd opsi-client-agent

Z:\opsi-client-agent&gt;service_setup.cmd (return)

Nach der eigentlichen Installation wird noch der Zugang zu OPSI benötigt. Dazu muss interaktiv am Client der Benutzername (bspw. pcpatch oder adminuser) sowie das dazu passende Passwort eingegeben werden.

Achtung: Direkt danach bootet der PC ohne weitere Rückfragen.

Hinweis: Das Skript „service_setup.cmd“ kann auch mit dem Parameter /u aufgerufen werden und verhält sich dann fast „silent“.

 

Nach dem Reboot sollte der PC mit seinem Clientnamen in der OPSI GUI auftauchen.

Installation des OPSI-Agenten vom Server aus

Mit dem Befehl „opsi-client-agent“ aus dem Verzeichnis „/var/lib/opsi/depot“ können Sie auch vom Server aus einen PC aufnehmen. Voraussetzung ist das Vorhandensein der Datei winexe.exe . Außerdem benötigt der PC eine offene c$ Freigabe. Außerdem brauchen sie ein Benutzerkonto auf dem PC sowie das Passwort dazu.

In unseren Tests hakte es bei der Vorgehensweise deutlich öfter als bei der Installation vom PC aus.

Der Vollständigkeit halber:

1
2
3
[root@] cd /var/lib/opsi/depot/opsi-client-agent

[root@] ./opsi-deploy-client-agent -u boehmichen -p --h

 

Mit OPSI Software automatisiert auf dem PC installieren

Mit OPSI ein Software-Paket auf den Client installieren

Mit OPSI ein Software-Paket auf den Client installieren

Auch wenn in der nackten Installation von OPSI kaum fertige Pakete für Windows vorhanden sind, kann man doch zumindest das Paket zur Hardware-Inventarisierung sowie das für die Software-Inventarisierung installieren.

Um grundsätzlich eine vorhandene Software als Paket zu installieren muss man

– Den Client links auswählen (1)

– Im Reiter „Produktkkonfiguration“ (2) die gewünschte SW auswählen.

– In der Spalte „Angefordert“ (3) der jeweiligen Zeile der Software „Setup“ auswählen (4) – das ist relativ klein geschrieben.

– Anschließend die Zeile nochmal auswählen (1) und rechts-Klick -> Speichern (2)

– Danach kann ebenfalls mit einem Rechts-Klick die „On demand“ (3) Installation starten (Alternativ: booten)

 

Sofern ein Benutzer angemeldet ist, erscheint nur wenige Sekunden danach beim Anwender ein kleines Popup. Danach startet die jeweilige Installation.

 

Sofern kein Benutzer angemeldet ist, so startet die anstehende Software-Installation oder Software-Änderung nach dem nächsten Reboot vor der ersten Anmeldung

 

Schritt 2 der Software-Zuweisung: Speicher und Starten

Schritt 2 der Software-Zuweisung: Speicher und Starten

 

Für den Administrator ist direkt nach der Installation durch ein erneutes Laden der Daten vom OPSI Server sichtbar, ob die Installation erfolgreich war. Falls ja, wird die Versions-Nummer der Software in grün in der betreffenden Zeile angezeigt.

Wer jetzt auf den Geschmack gekommen ist, der sollte nach Möglichkeit den OPSI-Agenten automatisiert per Group-Policy auf den betroffenen Rechnern einrichten.

OPSI – weitere Schritte

Die eigentliche Arbeit besteht bei OPSi wie auch allen anderen Software-Deployment Tools darin, die genutzte Software zu paketieren und testen.

Um diese anstehenden Aufgaben zu vereinfachen, werden bei OPSI zwei Software-Produkte zur Verfügung gestellt. Dies sind zum einen eine Analyse-Software für bestehende *.exe oder MSI-Installer und eine weitere mit der die eigentliche Paketierung und Veröffentlichung erfolgt.

Der OPSI Setup Detector analysiert bestehende MSI und EXE-Installer

Der OPSI Setup Detector analysiert bestehende MSI und EXE-Installer

Der „opsi Setup Detector“ ermittelt aus bestehenden Installern möglichst viele Informationen um anschließend eine möglichst automatische und Bediener-lose Installation zu ermöglichen.

Mit dem OPSI Package Builder werden die Software-Installationen paketiert.

Mit dem OPSI Package Builder werden die Software-Installationen paketiert.

Mit dem  „Opsi Package Builder“ können IT-Administratoren mit relativ wenig Aufwand die Paketierung der notwendigen Software selbst vornehmen.

Ebenso ist es natürlich möglich bestehende, fertige paketierte (freie) Software aus öffentlichen Repositories herunter zu laden und in den eigenen OPSI Server zu integrieren.

An dieser Stelle sei der Hinweis auf das öffentliche Wiki bzw. das Forum von OPSI für die weitere Lektüre erlaubt.

Mehr Infos zu Opsi

Opsi an sich ist sehr gut dokumentiert. Allein die Doku zur Erst-Installation umfasst fast 100 Seiten. Die Dokumentation zur Paketierung ist ebenfalls mehr als ausführlich.

Darüber hinaus finden sich bei Youtube (https://www.youtube.com/watch?v=KW5J3Ymw9NQ&feature=youtu.be ) einige kurze Videos, die interessierten IT-Entscheidern den ersten Überblick erleichtern:

Wer sich intensiver mit OPSI auseinander setzen möchte, dem rate ich zuerst zur Lektüre des „OPSI Getting Started“ PDF . Dort wird nicht nur die Installation von OPSI beschrieben. Im zweiten Teil wird auch exemplarisch beschrieben, wie eine Software-Paketierung abläuft und welche Schritte man als IT-Administrator durchführen muss um eigene bzw. lizenzierte Software zu paketieren.

Im eigentlichen Handbuch zu OPSI 4.1 wird auf knapp 400 Seiten sehr ausführlich erläutert, wie die Verwaltung der PCs sowie Software mit OPSI funktioniert. Die OPSI-Skript-Sprache zur Paketierung selbst ist ebenfalls mit einem separaten über 200 Seiten langen PDF ausführlich dokumentiert.

Fazit zu Opsi

OPSI macht als Software-Verteilungs-System einen sehr robusten und mittlerweile auch ausgereiften Eindruck. Geübte Admins mit Basis-Linux-Kenntnissen sollten in wenigen Stunden in der Lage sein, ein funktionierendes Test-System zu installieren und zu nutzen. Wie hoch der tatsächliche Nutzen im Tagesgeschäft ist, hängt natürlich von Fall zu Fall von der Diversität der eingesetzten Software ab.

IT-Admins, die Netze mit mehr als 30 PCs verwalten, sollten auf jeden Fall OPSI einmal testen. Es lohnt sich.

Einleitung mysql

Mysql ist unter Linux neben postgres das am häufigsten genutzten Datenbank-Systeme. Mysql ist als Opensource Projekt im Jahr 1994 entstanden und gehört mittlerweile zu Oracle. Obwohl es zu mysql seit geraumer Zeit auch kommerzielle Angebote gibt, ist die Datenbank-Software mysql selbst immer noch ein Opensource-Produkt. Das bedeutet, daß es von jedermann herunter geladen und genutzt werden kann.

https://de.wikipedia.org/wiki/MySQL

Homepage: https://www.mysql.com/de/

Da es nach der Übernahme von Oracle jedoch zu Konflikten zwischen dem kommerziellen Anspruch und der Opensource-Gemeinde kam, hat sich im Jahr 2012 mit mariadb ein so genannter Fork (~Abspaltung) von mysql gebildet, der wieder vollkommen quelloffen entwickelt wird und so mehr dem Opensource Gedanken entspricht.

https://de.wikipedia.org/wiki/MariaDB

Homepage: https://mariadb.org/

Im nachfolgenden Tutorial erklären wir Schritt für Schritt die Installation von mariadb auf einem Linux-Server mit Centos sowie die Absicherung und Inbetriebnahme der Datenbank-Software.

Hinweis: Wir verwenden CentOS als Basis für unsere Installation. Mysql bzw. mariadb lassen sich aber genauso auf Debian, Ubuntu und praktisch allen anderen Linux-Servern mit dem jeweiligen Paketmanager installieren. Sobald die Erst-Installation unter Linux erledigt ist, können Sie diese Anleitung dennoch Schritt für Schritt abarbeiten.

Vorüberlegungen zu mysql

Wer mysql einfach mal so ausprobieren möchte, muss sich um Geschwindigkeit von Abfragen und Performance im Allgemeinen vermutlich keine Gedanken machen.

Sofern Sie allerdings mysql produktiv einsetzen möchten, so sollten wir einige wenige Gedanken über das System-Design machen.

Hauptspeicher / RAM

In Sachen Hauptspeicher (RAM) sind praktisch alle Datenbanksysteme extrem „hungrig“. Da macht mysql keine Ausnahme. Die generelle Regel lautet: Je mehr desto beser.

Festplatten

Wer seinen mysql Server auf einer dedizierten Hardware betreibt, der tut gut daran dem mysql Dienst eine separate Festplatte zuzuweisen. Ideal sind mehrere, eher kleine Festplatten, die über ein Raid10 (Verbund aus gespiegelten Platten) an einem RAID-Controller angeschlossen sind.

Wer mysql virtuell betreibt, der sollte zumindest das mysql-Datenverzeichnis /var/lib/mysql auf einer separaten Partition einrichten. Wie das geht, zeigen wir weiter unten.

 

Linux-Server vorbereiten

Zur Vorbereitung unserer mysql Installation deaktivieren wir zuerst temporär SELinux und schalten ebenfalls den eingebauten firewalld Dienst aus.

1
Mysql01# systemctl disable firewalld

In der Datei /etc/sysconfig/selinux ändern Sie die Zeile „SELINUX=enforcing“ auf „SELINUX=disabled“

Anschließend loggen wir uns per ssh auf dem Server an und aktualisieren alle Software-Pakete mit „yum –y update“. Das dauert je nach Hardware und Internetanbindung ein paar Minuten. Anschließend rebooten Sie den Server.

Mysql auf eine separate Partition bzw. Festplatte legen

Wer wie weiter oben angesprochen mysql bzw. mariadb produktiv einsetzen möchte, der sollte das Verzeichnis /var/lib/mysql auf ein separates Filesystem legen.

In unserem (virtuellen) Beispiel haben wir eine zweite Festplatte /dev/sdb erstellt.

Auf dieser erstellen wir mit fdisk /dev/sdb die neue Partition /dev/sdb1 und speichern fdisk mit „w“ ab.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@mysql01 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x8f093467.

Befehl (m für Hilfe): n
Partition type:
p   primary (0 primary, 0 extended, 4 free)
e   Erweiterte
Select (default p): p
Partitionsnummer (1-4, default 1): 1
Erster Sektor (2048-125829119, Vorgabe: 2048):
Benutze den Standardwert 2048
Last Sektor, +Sektoren or +size{K,M,G} (2048-125829119, Vorgabe: 125829119):
Benutze den Standardwert 125829119
Partition 1 of type Linux and of size 60 GiB is set

Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert!
Rufe ioctl() um Partitionstabelle neu einzulesen.
Synchronisiere Platten.

Anschließend formatieren wir die neue Partition z.B. mit dem xfs Filesystem

1
2
3
4
5
6
7
8
9
10
[root@mysql01 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=3932096 blks
=                       sectsz=512   attr=2, projid32bit=1
=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=15728384, imaxpct=25
=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =Internes Protokoll     bsize=4096   blocks=7679, version=2
=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =keine                  extsz=4096   blocks=0, rtextents=0

Last but not least legen wir einen Eintrag in der /etc/fstab an, damit das zusätzliche Filesystem bei einem Reboot auch ordentlich gemounted wird, bevor der mariadb bzw. mysqld Dienst startet.

Ergänzen Sie die Datei /etc/fstab um die folgende Zeile

1
/dev/sdb1       /var/lib/mysql  xfs     defaults        0 0

Anschließend legen wir den notwendigen Mountpoint (Einhängepunkt für die Partition) noch manuell an und setzen die Berechtigungen:

1
2
[root@mysql01 ~]# mkdir /var/lib/mysql
[root@mysql01 lib]# chown –R mysql.mysql /var/lib/mysql/

Mysql unter Linux installieren

Die eigentliche Installation von mariadb (bzw. mysql) übernimmt der Befehl „yum install mariadb-server mariadb“. Im Schlepptau werden ca 2 Dutzend Perl-Pakete mit installiert.

1
[root@mysql01 ~]# yum –y install mariadb mariadb-server

Nun müssen wir den Dienst mariadb noch aktivieren und anschließend starten:

1
2
3
4
[root@mysql01 ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@mysql01 ~]# service mariadb start
Redirecting to /bin/systemctl start mariadb.service

 

Erste Anmeldung an mariadb / mysql

Um nun „interaktiv“ zu prüfen ob mariadb wirklich funktioniert, loggen wir uns einmal als Benutzer root an mariadb an.

In der Standard-Installation ist der Benutzer „root“ in mariadb/mysql bereits angelegt. Ein Passwort hat der Benutzer (noch) nicht.

Syntax: mysql –u<Benutzer> -p<Passwort>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@mysql01 ~]# mysql -uroot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]&gt; show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]&gt; exit

Der Befehl “show databases” zeigt uns die bestehenden Datenbanken an. Dies sind neben der Standard-Datenbank „mysql“ die Datenbanken „information_schema“ und „performance_schema“ sowie „test“.

mysql / mariadb absichern

Im Moment kann man sich noch ganz ohne Passwort an mysql anmelden. Ebenfalls sind Anmeldungen von entfernten Rechnern über das Netzwerk möglich. Das möchten wir dauerhaft so nicht belassen.

Ein Weg mysql auf einen Rutsch deutlich sicherer zu machen ist der Aufruf der Anpassungs-Routine „mysql_secure_installation“.

Mit diesem Skript können Sie

  • Ein Passwort für den Benutzer root setzen
  • Die Test-Datenbank entfernen
  • Den Zugriff über das Netzwerk unterbinden

Beantworten Sie einfach die gestellten Fragen mit y[es] oder n[o]. Nach Abschluss des Skripts wird die mysql-Datenbank, welche die Benutzer enthält neu geladen und Sie können sich mit ihrem gerade erstellten Passwort wieder anmelden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[root@mysql01 ~]# mysql_secure_installation

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them.  This is intended only for testing, and to make the installation go a bit smoother.  You should remove them before moving into a production environment.

Remove anonymous users? [Y/n] y
... Success!

Normally, root should only be allowed to connect from 'localhost'.  This ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!

By default, MariaDB comes with a database named 'test' that anyone can access.  This is also intended only for testing, and should be removed before moving into a production environment.

Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB installation should now be secure.
(…)

Wir prüfen  nun ob die Anmeldung als Benutzer root immer noch ohne Passwort möglich ist (Das sollte es nicht ,mehr sein).

1
2
[root@mysql01 ~]# mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Die Fehlermeldung ist ausnahmsweise einmal „positiv“ im Sinne von so gewollt. Dafür sollte die Anmeldung mit „mysql –uroot –p<ihr Passwort> klappen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@mysql01 ~]# mysql -uroot -p
Enter password: ç hier Passwort eingeben
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]&gt; show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Wir sehen: Die Anmeldung ist weiter mit Passwort möglich und außerdem ist die Datenbank „test“ ebenfalls verschwunden.

 

mysql / mariadb: Benutzer verwalten

Zwei administrative Aufgaben kommen beim Betrieb von mysql bzw. mariadb immer wieder vor: Neue Benutzer anlegen und von bestehenden Benutzern das Passwort zurücksetzen. Daneben gilt es „mal eben so“ eine neue Datenbank anzulegen.

Hinweis: Alle Beispiele gehen davon aus, daß Sie sich zuerst mit „mysql –uroot –p“ an mysql anmelden.

Eine neue (leere) Datenbank in mysql anlegen

Eine neue und leere Datenbank legen Sie mit dem Befehl „create database <DATENBANKNAME>;“ an.

Beispiel:

1
create database sbtest;

Der obige Befehlt erstellt die leere Datenbank „sbtest“.

Neuen Benutzer unter mysql anlegen

Die Syntax unter mysql zum Anlegen eines neuen Benutzers ist:

1
2
3
use mysql;
create user 'USERNAME'@'HOST' identified by 'PASSWORD';
flush privileges;

Username und Password ersetzen Sie mit dem echten Benutzer-Namen sowie einem möglichst sicheren Passwort. Mit „HOST“ ist dabei der Rechner gemeint, von dem aus der Anwender zugreifen darf.

Sofern hier nur der Zugriff über den Rechner erlaubt ist, auf dem mysql läuft, so verwenden Sie „localhost“ . Alternativ können Sie bei HOST auch eine IP-Adresse verwenden. Ebenso gehen normale Hostnamen, die sich über das DNS auflösen lassen.

Beispiel: Wir legen einen Benutzer mit Namen „max“ an, der von überall aus zugreifen darf. Sein Passwort lautet „Imitoguli835“.

1
2
3
use mysql;
create user 'max'@'*' identified by 'Imitoguli835';
flush privileges;

Auf Datenbanken zugreifen (dürfen)

Damit der frisch angelegte Benutzer auch das Recht hat, eine bestehende Datenbank zu bearbeiten, muss ihm mit dem „Grant“ Befehl dazu die Berechtigung erteilt werden. Die Syntax dazu lautet:

1
Grant ALL on DATABASE.TABLE TO 'USERNAME'@'HOST';

Beispiel: Wir gewähren dem Benutzer „Max“ den Zugriff auf die Datenbank „sbtest“ – aber nur wenn er sich über den mysql-Server anmeldet (also über den Localhost).

1
2
3
use mysql;
grant all on sbtest.* to 'max'@'localhost';
flush privileges;

Noch ein Beispiel: Wir gewähren unserem Testbenutzer „Max“ den Zugriff auf alle (!) Datenbanken, egal von wo aus er zugreift.

1
2
3
use mysql;
grant all on *.* to 'max'@'*';
flush privileges;

Der Befehl “flush privileges;“ schreibt alle Berechtigungen in mysql zurück und lädt die aktualisierten Berechtigungen neu. Erst danach greift das neue Rechtesystem für den gerade veränderten mysql-Benutzer.

Von einem bekannten mysql Benutzer das Passwort zurück setzen

Wenn ein Benutzer sein Passwort für mysql nicht mehr weiß, dann kann es der mysql-Administrator mit dem folgendem Befehl zurück setzen:

1
2
use mysql; update user set password=PASSWORD('NEUESPASSWORT') where User='BENUTZERNAME';
flush privileges;

Wichtig: ‚User‘ wird wirklich mit großem ‚U‘ geschrieben.

Die Begriffe „NEUESPASSWORT“ und „BENUTZERNAME“ ersetzen Sie natürlich durch ein wirklich sicheres Passwort und den echten Benutzernamen.

Mysql Benchmark

Um mysql nun ein wenig unter Last zu setzen, installieren wir den Benchmark-Test sysbench. Dafür benötigen wir allerdings zuerst das EPEL-Repository, das wir zuerst installieren.

1
2
yum –y install epel-release
yum -y install sysbench

Da sysbench eine Testdatenbank (die meistens sbtest heißt) benötigt legen wir die Datenbank „sbtest“ an und außerdem gleich einen passenden Benutzer „testdb“, der sich lokal auf dem Server an mariadb anmelden darf.

1
2
3
mysql –uroot –p –e "create database sbtest;"
mysql –uroot –p –e “grant all on sbtest.* to testdb@localhost identified by 'test123';"
mysql –uroot –p –e "flush privileges;"

Sysbench besteht in der Regel aus zwei aufeinaderfolgenden Aktionen. Im ersten Schritt (der mit ‚prepare‘ endet) werden die Tabellen und ggf. Inhalte angelegt, auf die beim eigentlichen Durchlauf des Benchmarks zugegriffen wird. Der eigentliche Benchmark-Befehlt endet auf „run“.

Was konkret wie geprüft und getestet wird, ist bei sysbench seit einiger Zeit in vordefinierten Skripten fest gelegt. Diese liegen nach der Installation von sysbench unter /usr/share/sysbench/ .

Beispiel:

Der nachfolgende erste Befehl bereitet die leere Datenbank sbtest mit 4 Tabellen vor.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sysbench /usr/share/sysbench/oltp_common.lua  --threads=4 --mysql-host=localhost --mysql-user=testdb --mysql-password=test123 --mysql-port=3306 --tables=4 --db-driver=mysql  --table-size=100000 prepare
sysbench 1.0.9 (using system LuaJIT 2.0.4)
Initializing worker threads...
Creating table 'sbtest2'...
Creating table 'sbtest1'...
Creating table 'sbtest3'...
Creating table 'sbtest4'...
Inserting 100000 records into 'sbtest3'
Inserting 100000 records into 'sbtest1'
Inserting 100000 records into 'sbtest4'
Inserting 100000 records into 'sbtest2'
Creating a secondary index on 'sbtest1'...
Creating a secondary index on 'sbtest4'...
Creating a secondary index on 'sbtest2'...
Creating a secondary index on 'sbtest3'...

Der anschließende Aufruf startet den allgemeinen Lese/Schreiben Benchmark für 60 Sekunden und gibt alle 5 Sekunden eine Statistik aus.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
sysbench /usr/share/sysbench/oltp_read_write.lua --threads=4 --events=0 --time=60  --mysql-host=localhost --mysql-user=testdb --mysql-password=test123 --mysql-port=3306 --tables=4 --table-size=100000 --range_selects=off --db-driver=mysql --db-ps-mode=disable --report-interval=5 run
sysbench 1.0.9 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Report intermediate results every 5 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 5s ] thds: 4 tps: 164.51 qps: 2643.40 (r/w/o: 1653.13/432.57/557.71) lat (ms,95%): 95.81 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 4 tps: 185.81 qps: 2973.73 (r/w/o: 1858.08/528.62/587.03) lat (ms,95%): 95.81 err/s: 0.00 reconn/s: 0.00
[ 15s ] thds: 4 tps: 257.17 qps: 4114.80 (r/w/o: 2571.75/764.93/778.12) lat (ms,95%): 58.92 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 4 tps: 232.42 qps: 3718.67 (r/w/o: 2324.17/743.45/651.05) lat (ms,95%): 63.32 err/s: 0.00 reconn/s: 0.00
[ 25s ] thds: 4 tps: 256.43 qps: 4102.95 (r/w/o: 2564.34/850.91/687.69) lat (ms,95%): 55.82 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 4 tps: 199.19 qps: 3185.91 (r/w/o: 1991.95/679.58/514.39) lat (ms,95%): 89.16 err/s: 0.00 reconn/s: 0.00
[ 35s ] thds: 4 tps: 237.75 qps: 3805.25 (r/w/o: 2377.53/823.84/603.88) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 4 tps: 243.02 qps: 3888.26 (r/w/o: 2430.16/852.06/606.04) lat (ms,95%): 70.55 err/s: 0.00 reconn/s: 0.00
[ 45s ] thds: 4 tps: 234.79 qps: 3756.71 (r/w/o: 2347.94/830.78/577.99) lat (ms,95%): 63.32 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 4 tps: 239.43 qps: 3830.93 (r/w/o: 2394.33/851.92/584.68) lat (ms,95%): 66.84 err/s: 0.00 reconn/s: 0.00
[ 55s ] thds: 4 tps: 276.78 qps: 4422.67 (r/w/o: 2763.79/995.93/662.95) lat (ms,95%): 51.94 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 4 tps: 274.40 qps: 4396.27 (r/w/o: 2748.04/995.22/653.01) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00

SQL statistics:
queries performed:
read:                            140130
write:                           46750
other:                           37328
total:                           224208
transactions:                        14013  (233.52 per sec.)
queries:                             224208 (3736.38 per sec.)
ignored errors:                      0      (0.00 per sec.)
reconnects:                          0      (0.00 per sec.)

General statistics:
total time:                          60.0050s
total number of events:              14013

Latency (ms):
min:                                  3.48
avg:                                 17.12
max:                                440.18
95th percentile:                     68.05
sum:                             239970.51

Threads fairness:
events (avg/stddev):           3503.2500/12.74
execution time (avg/stddev):   59.9926/0.00

Ein Hinweis zum Schluss: Wenn Sie mit sysbench einen gänzlich anderen Performance-Test durchführen wollen, so müssen Sie zuerst die Tabellen innerhalb der Datenbank sbtest löschen. Ansonsten erhalten Sie von sysbench eine Fehlermeldung.

Das Löschen der Tabellen erfolgt mit „drop table <tablename>;“. Schneller ist es aber die ganze Datenbank „sbtest“ zu löschen und anschließend leer wieder anzulegen.

1
2
Drop database sbtest;
Create database sbtest;

Fazit zu mysql

Die Installation und erste Einrichtung von mysql ist für geübte Linux-Administratoren in wenigen Minuten erledigt und auch für Gelegenheits-Admins kein Hexenwerk. Wer durch das Tutorial auf den Geschmack gekommen ist, der sollte sich ein wenig mehr mit dem Thema Performance von mysql bzw. mariadb beschäftigen.

Wie man die Konfigurations-Datei ( /etc/my.cnf ) anpasst und so mysql weiter optimiert, erklären wir in einem weiteren Tutorial.