Massachusetts Institute of Technology. Vorlesung # 6.858. "Sicherheit von Computersystemen." Nikolai Zeldovich, James Mickens. 2014 Jahr
Computer Systems Security ist ein Kurs zur Entwicklung und Implementierung sicherer Computersysteme. Die Vorträge behandeln Bedrohungsmodelle, Angriffe, die die Sicherheit gefährden, und Sicherheitstechniken, die auf jüngsten wissenschaftlichen Arbeiten basieren. Zu den Themen gehören Betriebssystemsicherheit, Funktionen, Informationsflussmanagement, Sprachsicherheit, Netzwerkprotokolle, Hardwaresicherheit und Sicherheit von Webanwendungen.
Vorlesung 1: „Einführung: Bedrohungsmodelle“ 
Teil 1 / 
Teil 2 / 
Teil 3Vorlesung 2: „Kontrolle von Hackerangriffen“ 
Teil 1 / 
Teil 2 / 
Teil 3Vorlesung 3: „Pufferüberläufe: Exploits und Schutz“ 
Teil 1 / 
Teil 2 / 
Teil 3Vorlesung 4: „Trennung von Privilegien“ 
Teil 1 / 
Teil 2 / 
Teil 3 Unsere Zeichnung zeigt also ein „Kunstwerk“, das seine Schöpfer vor Bedrohungen schützen wollten. In ihrem Fall waren sie meiner Meinung nach sehr besorgt, weil sie mit der Erstellung der Dating- 
Website okcupid.com wirklich sicherstellen wollten, dass der Ruf der Benutzer der Website nicht durch die Offenlegung personenbezogener Daten beeinträchtigt wird. Aus einem Gespräch mit einem der Entwickler der Website, der den Artikel darüber geschrieben hat, ist bekannt, dass sie nicht wirklich kompromittiert wurden. Zumindest trat kein Datenverlust aufgrund der Verwendung der 
OKWS- Architektur und teilweise aufgrund der Überwachung böswilliger Aktivitäten auf.
Der Grund, warum Benutzer ihre Anwendungen nicht in kleinere Komponenten aufteilen, liegt darin, dass dieser Prozess einige Anstrengungen erfordert. Es ist notwendig, alle Teile des Codes auszuwählen, klare Schnittstellen zwischen ihnen zu definieren und zu entscheiden, auf welche Daten jede Komponente Zugriff haben soll. Wenn Sie eine neue Funktion implementieren möchten, müssen Sie die Daten ändern, auf die jede Komponente des Programms Zugriff hat, um ihr neue Berechtigungen zu erteilen oder einige auszuwählen, und so weiter. Dies ist also ein ziemlich zeitaufwändiger Prozess.

Versuchen wir zu verstehen, wie der Webserver aufgebaut ist. Eine Möglichkeit, dies zu tun, besteht darin, zu verfolgen, wie die http-Anforderung vom 
OKWS- Server verarbeitet wird. Ähnlich wie in der vorherigen Abbildung haben wir einen Webbrowser, der zu 
okcupid.com gehen 
möchte . Die Entwickler des Site-Projekts stellten sich vor, dass sie eine Reihe von Maschinen haben würden, aber wir werden uns nur die Oberfläche der Site ansehen, auf der 
OKWS arbeiten wird, und eine andere Maschine im Hintergrund, auf der die Datenbank gespeichert wird. Diese zweite Maschine verwendet 
MySQL, da sie für viele Aufgaben eine gute Software ist. Sie möchten diese Daten wirklich schützen, da es sehr schwierig ist, auf eine 
unformatierte Festplatte oder Datenbank mit rohen Rohdatagrammen zuzugreifen.
Wie funktioniert die Anfrage, wie wird die Anfrage vom 
OKWS- Server verarbeitet? Zuerst kommt es an und wird von einem Prozess namens 
okd für den 
OKWS- Dispatcher verarbeitet. Er prüft, ob er nach dieser Anfrage fragt, und erledigt dann einige Dinge. Da Sie diese Anforderung möglicherweise zuerst registrieren müssen, wird sie an eine Komponente namens 
oklogd umgeleitet. 
Anschließend müssen Sie einige Vorlagen erstellen, und es kann erforderlich sein, sie noch vor dem Eintreffen der Anforderung zu erstellen. Und es macht eine andere Komponente namens 
pubd .

Und schließlich gibt es einen bestimmten Dienst, an den diese Anforderung gesendet wird. In 
okd gibt es also eine Tabelle der unterstützten Dienste. Vermutlich kommt diese Anfrage zu einem dieser Dienste. Nach dem Überprüfen von 
okd wird diese Anforderung an einen bestimmten 
SVC- Dienstprozess weitergeleitet. Dieser Dienst wird genau das tun, was die Anforderung erfordert, z. B. den Benutzer für den Newsletter abonnieren oder es ermöglichen, das Verzeichnis der Benutzer von 
ocupid mithilfe der Datenbank usw. 
anzuzeigen .
Und dafür benötigen Sie wahrscheinlich den Dienst, um die Anwendungsinformationen im 
oklogd- Komponentenprotokoll zu 
belassen . Und am Ende des Tages sollte er mit der Datenbank "sprechen". Die Ersteller der Site haben diesen Prozess der "Kommunikation" etwas anders implementiert als normalerweise in 
Apache , wo Sie einfach mit der Datenbank kommunizieren und beliebige 
SQL- Abfragen ausgeben. Sie entwickelten das Konzept eines Datenbank-Proxys, 
dbproxy , der sich vor der 
MySQL-Datenbank befindet und Anforderungen des 
SVC- Dienstes zur Ausführung akzeptiert. Ich denke, diese Abbildung zeigt im Grunde, wie 
OKWS funktioniert.

Es gibt eine andere Komponente, die all dies initiiert. Sie heißt 
okld und ist für das Starten aller Prozesse in der Schnittstelle dieses Webservers verantwortlich. Ich hoffe, einige dieser Dinge kommen Ihnen bekannt vor, denn genau diese Architektur wurde im Labor berücksichtigt. Es sieht so aus, als wäre es ein gutes Design. Sie hatten nicht 
pubd , 
logd und 
dbproxy in LR , aber Sie hatten 
okd und 
svc . Haben Sie Fragen zu 
OKWS ?
Zielgruppe: Haben wir richtig verstanden, dass 
dbproxy keine SQL-Abfragen akzeptiert, sondern eine andere Art von Abfrage?
Professor: Ja, richtig! Wie sieht diese Schnittstelle aus? Sie beschreiben dies nicht sehr detailliert, aber eine Sache, die Sie mit diesem 
Datenbankproxy tun 
könnten, ist, viele Argumente für 
SQL- Abfragevorlagen aufzubewahren . Beispielsweise könnte es sich um eine Suchanfragevorlage für Ihre Freunde handeln, bei der diese nach 
ID ausgewählt werden .

Angenommen, es gibt eine Vorlage wie "Wählen Sie 
^ ID aus Ihrer Freundesliste aus, wobei 
^ ID ="% S " . Angenommen, Sie möchten 
Alice unter Ihren Freunden finden und eine 
S- Anfrage senden, in der das Argument 
„Alice“ lautet. 
Teilen Sie unserer in der Benutzeroberfläche verfügbaren Anwendung mit, dass 
dbproxy bereit ist, drei Arten von Anforderungen in seinem Namen auszuführen. Wenn Sie die Abfrage Nr. 1 ausführen möchten und das Argument 
"Alice" lautet, erhalten Sie Zugriff auf die Datenbank.
Zielgruppe: Kann ein externer Benutzer auf der Ebene eines Webbrowsers eine solche Anfrage an die Datenbank senden oder gilt dies nur für interne Benutzer des Netzwerks?
Professor: Ja, vielleicht. Wie funktioniert es? In der Tat ist es seltsam, dass sich diese Datenbank auf einem separaten Computer befindet, weil Sie einfach eine Verbindung zur 
OKWS- Datenbank oder zum 
MySQL- Server herstellen können. Was hält das auf?
Zielgruppe: Firewall?
Professor: Ja, wahrscheinlich auf einer bestimmten Ebene. Die Entwickler beschreiben dies nicht zu ausführlich, aber auf dem zweiten Computer befindet sich wahrscheinlich ein internes Netzwerk, und es gibt einen Wechsel zwischen der Schnittstelle und der Datenbank, der von außen nicht erreichbar ist. Tatsächlich befinden sich beide Computer im selben Netzwerk, aber es gibt eine 
Fw- Firewall mit bestimmten Regeln. Möglicherweise können Sie nur über Port 80 eine Verbindung zu diesem Schnittstellencomputer herstellen, nicht jedoch direkt zum internen Server. Dies ist eine der Schutzoptionen.

Ein weiterer 
Grund ist wahrscheinlich, dass Sie beim 
Herstellen einer Verbindung zu diesem 
Datenbankproxy- Datenbankproxy ein 20-Byte-Kryptografietoken oder einen Schlüssel bereitstellen müssen. Wenn Sie diesen nicht bereitstellen, 
lehnt dbproxy Ihre Verbindung ab. Die Regel ist also, dass Sie eine TCP-Verbindung öffnen, Ihre 20 Bytes senden und wenn sie falsch sind, wird die Verbindung geschlossen. Ich denke, das ist die Bedeutung eines solchen Systemdesigns.
Versuchen wir also herauszufinden, wie diese verschiedenen Prozesse hier isoliert sind. Wie können Sie sicherstellen, dass sich alle diese Komponenten nicht gegenseitig überfordern?
Zielgruppe: Unterschiedliche Root-Rechte und unterschiedliche Benutzer-IDs?
Professor: Ja, fast jede dieser Komponenten arbeitet als eine andere 
UID. Daher gibt es hier in der Beschreibung des Systems eine ganze Tabelle, die für jede Komponente beschreibt, wo sie funktioniert und mit welcher 
UID . Wir können also schreiben, dass 
okd eine eigene 
UID hat , 
pubd eine eigene 
UID und 
oklogd auch eine eigene 
UID .
Okld arbeitet als 
Root , was eher erfolglos ist, aber vielleicht ist das keine große Sache. Dann gibt es eine ganze Reihe von dynamisch zugewiesenen Benutzer-IDs für jeden Dienst, zum Beispiel ID 51001 usw.

Auf diese Weise wird sichergestellt, dass nicht jeder Dienst die Prozesse anderer Dienste stören kann. 
Chroot wird auch hier häufig verwendet, sodass einige dieser Komponenten 
Chroot- Rechte in separaten Verzeichnissen haben. Zum Beispiel sind 
okd und 
svc in einigen Verzeichnissen mit gemeinsamen 
Chroot- Rechten ausgestattet. Warum haben diese beiden Komponenten Ihrer Meinung nach eine separate und nicht mit anderen 
Chroot- Komponenten gemeinsame?
Zielgruppe: Weil 
okd keine Root-Rechte hat.
Professor: Ja, aber warum setzen sie nicht 
pubd , 
oklogd und alle anderen in die gleiche 
Chroot ?
Zielgruppe: Ist es möglich, dass Dienste, die viele Daten gemeinsam nutzen müssen, voneinander isoliert werden sollten?
Professor: vielleicht. Ich denke, dass sie einige Daten teilen sollten, aber diese Daten sind nicht in den Dateien, sie werden über Sockets von 
okd zu Diensten übertragen. Tatsächlich speichert jedoch keine dieser Komponenten etwas Interessantes im Dateisystem.
Daher gibt es im 
chroot- Verzeichnis nichts Interessantes, und ich denke, dass die Leute von 
OKWS einfach beschlossen haben, die unproduktiven Kosten für 
chroot zu reduzieren, beispielsweise die Notwendigkeit, eine Kopie des Verzeichnisses zu erstellen. Vielleicht wollten sie auch den Verwaltungsaufwand für jeden 
Chroot- Befehl loswerden. Da es hier aber keine echten Dateien gibt, ist alles in Ordnung.
Der Grund, warum diese Leute den Umgebungskomponenten unterschiedliche 
Chroot zugewiesen haben, sind einige interessante Dinge. Möglicherweise gibt es Vorlagen, aber hier gibt es möglicherweise eine Protokolldatei, sodass die Protokolldatei nicht versehentlich gelesen werden soll, und dergleichen.
Zielgruppe: Verfügen diese Dienste beispielsweise über Dateien wie 
aspx ?
Professor: Wie im Artikel beschrieben, handelt es sich bei dem Dienst um eine einzelne kompilierte 
C ++ - Binärdatei, sodass tatsächlich keine zusätzlichen Dateien vorhanden sind.
Es gibt Vorlagen, aber sie werden wirklich über diesen seltsamen Mechanismus übertragen: 
pubd hat Vorlagen in seinem Verzeichnis, zeigt sie in einem 
Vorcomputer an , Home-Form in 
okd , und 
okd stellt bereits Vorlagen für alle Dienste über 
RPC- Aufrufe bereit. Sie befinden sich also im Speicher, sind jedoch direkt über das Dateisystem nicht zugänglich. Dies ist ein etwas paranoides Design, wenn ich die Vorlagen nicht einmal lesen kann.
Was bringt es also, all diese Komponenten zu trennen? Warum brauchen wir ein separates 
oklogd ?
Zielgruppe: Um die Möglichkeit des Überschreibens oder Zuschneidens des Journals auszuschließen?
Professor: Ja, also wollen wir wirklich sicherstellen, dass das Tagebuch zumindest nicht beschädigt wird, wenn etwas schief geht. Daher gibt es eine separate Protokolldatei, die von dieser 
UID geschrieben werden kann , und alle Protokollnachrichten werden als 
RPC für diesen Protokolldienst gesendet. Und selbst wenn alles andere ruiniert ist, 
bleibt das Magazin mit Ausnahme von 
okld unversehrt.
Teilnehmerin: Was ist, wenn Sie versehentlich einen Weg gefunden haben, das Magazin zu lesen und nicht sehen, was die anderen damit gemacht haben?
Professor: Nein, ich denke, wenn Sie einen Dienst, eine 
Kneipe oder etwas anderes „gehackt“ haben, können Sie alles in das Tagebuch schreiben. Daher ist es 
sinnvoll , einen separaten 
oklogd-Eintrag zu erstellen . Tatsächlich ist 
oklogd ein separater Prozess und wird nicht nur durch Anhängen von Dateien als 
Nur-Anhängen-Datei aktualisiert. Daher kann 
oklogd nicht jedem Protokolleintrag zusätzliche Informationen hinzufügen. Wenn das Betriebssystem die 
Nur-Anhängen- Datei unterstützt, wissen Sie in diesem 
Fall nicht, dass jemand in die Datei geschrieben hat. Während 
oklogd für jede Nachricht einen Zeitstempel setzt und Sie herausfinden können, welcher Dienst die Aufnahme gemacht hat oder von 
okd stammt . Daher erhalten Sie in dieser Protokolldatei tatsächlich zusätzliche Informationen, da es sich um einen separaten Dienst handelt.
Und was bedeutet 
okld Separation und warum sollte es mit Root-Rechten funktionieren? Ich denke, dafür gibt es mehrere Gründe.
Zielgruppe: Wenn Sie möchten, dass niemand anderes mit Root-Rechten handelt, müssen Sie die 
okld- Benutzerauthentifizierungsfunktion delegieren.
 Professor:
Professor: Ja. Jemand muss diese ganze Sache 
uid chroot konfigurieren, und Sie benötigen 
root für dieses 
Unix , also bietet 
okld dies an. Dies ist einer der Gründe. Noch etwas?
Zielgruppe: 80 Port Definition?
Professor: Ja natürlich! Sie müssen das Abhören von Port 80 binden, der 
okkld ist und noch etwas bietet?
Zielgruppe: Das Öffnen der 
oklogd- Protokolldatei wird abgeschlossen, da 
oklogd nicht geöffnet 
bleiben soll , um den Zugriff auf die Protokolldatei zu verhindern.
Professor: vielleicht. Aber ich weiß nicht, ob die Entwickler es wirklich getan haben, weil sie ihren Quellcode nicht angesehen haben. Denken Sie, dass 
okld die Protokolldatei öffnet und 
oklogd übergibt ? Möglicherweise.
Zielgruppe: Andernfalls könnte ein Angreifer, der 
oklogd kompromittiert 
hat, das gesamte Protokoll löschen.
Professor: Ja, das ist richtig. Vielleicht möchten Sie es im 
Anhänge- Modus öffnen und dann 
oklogd übergeben , dann haben Sie mehr Sicherheitsgarantien für das Protokoll. Dies ist etwas, was Sie ohne Root-Rechte nicht tun können.
Wir hatten also eine Frage zu den Hausaufgaben, was passieren wird, wenn dieses 20-Byte-Token für den Zugriff auf die Datenbank "durchgesickert" ist. Welchen Schaden kann dies verursachen? Sollten wir uns darüber Sorgen machen?
Zielgruppe: In diesem Fall kann ein Angreifer die Kontrolle über einen bestimmten Dienst übernehmen.
Professor: Ja, richtig, denn jetzt können Sie alle Abfragevorlagen verbinden und abrufen. Es scheint eigentlich ziemlich einfach. Sie müssen wahrscheinlich eine dieser Komponenten kompromittieren, um zuerst eine Verbindung zur Serverdatenbank herstellen zu können. Ich denke also, wenn Sie dieses Token haben und eine dieser in der Abbildung gezeigten Komponenten kompromittieren können, könnten Sie alle diese Abfragen verwenden.
Nun wollen wir sehen, wie dieses 
OKWS- Design verbessert werden kann. Beispielsweise wäre es möglich, jedem Benutzer eine separate 
UID- Einheit 
zuzuweisen und zusätzlich jedem Dienst eine separate 
UID zuzuweisen . Hier hat jeder Dienst, z. B. Nachrichten, die Suche nach Freunden oder das Erstellen eines Kontos, eine separate 
Benutzer-ID , aber jeder 
OKWS- Benutzer 
wird nicht als 
Unix-UID dargestellt . Eigentlich gibt es hier keine 
Benutzer-ID, hier sind nur Service- 
IDs vorhanden. Denken Sie, dass 
Sie für jeden 
OKWS- Client eine andere 
UID benötigen ?
Zielgruppe: In diesem Fall stellt sich heraus, dass ein Benutzer, der einen Dienst „hackt“, auf alle Daten anderer Benutzer dieses Servers zugreifen kann.
Professor: Ja, das stimmt!
Zielgruppe: Wenn Sie jedoch tatsächlich einen separaten Dienst und einen separaten 
Datenbankproxy für jeden Benutzer hätten, wäre es unmöglich, auf die Daten anderer Personen zuzugreifen.
Professor: Ja, aber könnte dies ein stärkeres Modell sein? Ich denke, dass 
OKWS- Entwickler aus zwei Gründen keinen solchen Schritt unternehmen. Das erste ist die Leistung. Wenn Sie ein paar Millionen Benutzer der 
okcupid- Site, mehrere Millionen laufende Prozesse und ein paar Millionen 
dbproxie haben , sind Leistungs-Overheads möglich. 
Dadurch kann nicht die gleiche Leistung 
erzielt werden , die die vorhandene 
OKWS- Architektur 
bietet .
Zielgruppe: Die OKWS- Beschreibung besagt, dass die Leistung dieses Systems besser ist als bei anderen Systemen. Wie wurde dies erreicht?
Professor: Ich denke, das liegt zum Teil daran, dass sie ihr Design auf eine bestimmte Arbeitslast abgestimmt haben. Außerdem haben sie dies alles in 
C ++ geschrieben . Eine Alternative besteht darin, einige Dinge in 
PHP zu schreiben, dann werden Sie wahrscheinlich Vorteile in dieser Hinsicht erzielen.
Darüber hinaus verfügen sie nicht über viele der Funktionen, die 
Apache bietet. Es hat ein universelles Design, hat also viele Arbeitsprozesse und lädt sie von Zeit zu Zeit neu. Es gibt viele 
TTP- Verbindungen, die die Dauer des Verbindungsprozesses sicherstellen und ihre Aktivität beibehalten. Es erhöht auch die Anzahl der auf dem System ausgeführten Prozesse. 
Apache wurde universeller gestaltet und kann alles tun, was Sie vom Internet-Server 
erwarten. Die Mitarbeiter von 
OKWS konzentrieren 
sich mehr auf die Lösung spezifischer Probleme.
Aber ich denke, es gibt 
heutzutage andere Webserver, die wahrscheinlich mit der 
OKWS- Leistung 
mithalten können. Zum Beispiel ist 
Nginx ein sehr optimierter Webserver, den Sie heutzutage ausführen können. Wenn Sie Hochleistungsanwendungen auf der Serverseite wünschen, möchten Sie wahrscheinlich, dass der lange Prozess dem 
OKWS- Service sehr ähnlich ist. Und damit es einen Mechanismus für eine schnelle gemeinsame 
CGI- Gateway-Schnittstelle zum Verbinden eines externen Programms mit einem Webserver oder eine Art Protokoll gibt, das auf der Serverseite verwendet werden könnte, um dies sogar in 
Apache oder 
Nginx zu implementieren. Daher denke ich, dass viele dieser Ideen nicht nur 
OKWS vorbehalten sind , sondern auch auf anderen Webservern implementiert werden können. Sie zeigen lediglich, dass die Verbesserung der Sicherheit die Verwendung dieser "Tricks" nicht ausschließt. Ich denke, sie haben mit einem ähnlichen Schema wie 
Apache begonnen , aber sie dachten, es wäre nicht sicher genug.
Daher denke ich, dass einer der Gründe, warum die 
Entwickler von 
OKWS keine separaten Berechtigungen für Benutzer einführen wollten, eine mögliche Leistungsverschlechterung war.

Ein weiterer Grund ist, dass sich das vollständige Anwendungsmodell um einen Dienst dreht, der versucht, auf die Daten jedes Benutzers zuzugreifen, z. B. die Suche nach Freunden auf 
okcupid oder nach jemandem, den Sie zu einem Datum einladen können. Infolgedessen ist dieses Modell der Benutzerisolation nicht sehr sinnvoll, da es letztendlich einen Dienst geben sollte, für den Sie eine Anfrage senden, und der alle anderen Daten überprüft, um eine Übereinstimmung für Ihre Anfrage zu finden. Selbst wenn Sie über Benutzer-IDs oder einen Mechanismus zum Isolieren verfügen, müssen Sie dennoch für jeden Benutzer den Zugriff auf den Dienst öffnen.
Bei anderen Diensten wie 
Google Mail oder 
Dropbox , die sich viel stärker auf einen bestimmten Benutzer konzentrieren und keine offene Möglichkeit zum Freigeben ihrer Dateien bieten, kann das Isolieren von Benutzern weitere Vorteile bieten. Auf dem 
Dropbox- Server gibt es beispielsweise eine 
Benutzer-ID für jeden 
Dropbox- Client. Und wenn ein Prozess für Sie und ein Prozess für eine andere Person ausgeführt wird, können Sie selbst mit einem böswilligen Exploit nicht auf die Informationen anderer Personen zugreifen.
Lassen Sie uns nun sehen, ob es 
OKWS wirklich gelungen ist, die Sicherheit in einem solchen 
Servermodell zu verbessern. Um die Sicherheit zu bewerten, müssen Sie jede Komponente des Systems berücksichtigen und bestimmen, welche Art von Angriffen es beschädigen könnte.
Beginnen wir mit 
okd . Es kann beispielsweise mit Anfragen über den Browser angegriffen werden, was zu einem Pufferüberlauf führt. c++, , - , 
okd . ?
 :
: ?
: , , . ?
: , .
: , . , , , 
http , , , . , .
: ?
: , . , , , , , 
match.com . , , 
OkCupid . , - ? ?
: , , 
okd . , ?
: . , 
okd .
: , ?
: ! , , , , , . , , , , . , , . «» 
okd , , , .
: DOS-?
: , , , «» «» , DOS- - .
: okd , , …
: , . , , 
okd , 
okd , . 
okd , . , 
okd , , , , .
: .
: , . , 
okd . , 
oklogd ? ?
: .
: , , , ? 
pubd , , , - .
: , , «» 
oklogd .
: , . , , 
append-only , .
: , …
: , , . .
svc ? , , . , , 
okd oklogd . , , .
svc - -, , , . , , , .
okld ? , root. ? , . 
dbproxy . 
okld ? «»? ?
: , - ?
: , . , , . , , - , , , - . - . root- .
: -, , - 
dbproxy .
: !
: , , , 
RPC , , , , , ! .
 :
: , . 
dbproxy ? , . , «» , 
dbproxy - .
: , 
svc …
: , 
svc , !
: , , !
: , , 
«» , …
: dbproxy .
: . , 
dbproxy , .
Ich hoffe, Sie verstehen, was uns das Teilen von Anwendungsberechtigungen gibt. Und wie wir sehen können, ist dies nicht perfekt. Es gibt noch viele andere Dinge, die schief gehen können. Es scheint jedoch, dass diese Lösung auf jeden Fall besser ist als das Entwerfen einzelner Anwendungen ohne Zugriffsrechte, mit denen wir begonnen haben.Die Vollversion des Kurses finden Sie hier .Vielen Dank für Ihren Aufenthalt bei uns. Gefällt dir unser Artikel? Möchten Sie weitere interessante Materialien sehen? Unterstützen Sie uns, indem Sie eine Bestellung 
aufgeben oder sie Ihren Freunden empfehlen. 
Habr-Benutzer erhalten 30% Rabatt auf ein einzigartiges Analogon von Einstiegsservern, das wir für Sie erfunden haben: Die ganze Wahrheit über VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s $ 20 oder wie teilt man den Server? (Optionen sind mit RAID1 und RAID10, bis zu 24 Kernen und bis zu 40 GB DDR4 verfügbar).
Dell R730xd 2 mal günstiger? Nur wir haben 
2 x Intel Dodeca-Core Xeon E5-2650v4 128 GB DDR4 6 x 480 GB SSD 1 Gbit / s 100 TV von 249 US-Dollar in den Niederlanden und den USA! Lesen Sie mehr über 
den Aufbau eines Infrastrukturgebäudes. Klasse mit Dell R730xd E5-2650 v4 Servern für 9.000 Euro für einen Cent?