Aus Linux-Magazin 02/2002

Portierung einer Linux-Firewall auf IBM zSeries (S/390)

Linux läuft theoretisch seit 1999 auf IBMs Großrechnern – und wie sieht die Praxis aus? Unser Beispiel zeigt, was alles schief gehen kann und wie dabei eine Firewall auf den Dino kam.

Für IBM ist Linux auf dem oft als Dinosaurier verspotteten Mainframe zum unerwarteten Erfolg geworden und trägt derzeit, zusammen mit dem Trend zur Konsolidierung, zur Renaissance der S/390 bei, die jetzt im neuen Gewand als zSeries auftritt. Mainframes sind unter anderem im Finanzsektor stark verbreitet. Dort steht Sicherheit an erster Stellen, deshalb hier ein Erfahrungsbericht über eine Firewall-Portierung.

Nach den ersten erfolgreichen Gehversuchen im Jahr 1999 steht für Linux auf Großrechnern seit 2000 eine installierbare Distribution zur Verfügung. Inzwischen sind die schlimmsten Kinderkrankheiten überstanden – ein guter Zeitpunkt, um alle möglichen Anwendungen zu portieren.

Eine dieser Anwendungen ist eine Personal Firewall. Niemand wird auf die Idee kommen, den kompletten Mainframe als eine einzige Firewall zu verwenden, aber innerhalb des Großrechners erweisen sich Filter zum jeweiligen Netz als sehr nützlich. Ein Mainframe ist heute schließlich kein allein stehender Computer mehr, sondern die Basis für viele virtuelle Maschinen, die gleichzeitig laufen und einen ganzen Park an Servern ersetzen. In der Server-Farm sind Firewalls Stand der Technik, warum also nicht auch im Großrechner?

Die Welt der Mainframes dreht sich nicht nur um besondere Architekturen, sie hat auch ihre eigenen Begriffe und Abkürzungen. Der Kasten “S/390 und zSeries” erklärt einige davon, während der Kasten “Virtuelle Maschinen” näher auf das Konzept einer VM eingeht.

Konfiguration

Wie sieht die Konfiguration eines VM-Users als Linux-System konkret aus? Die Firewall-Portierungs-Maschine der Autoren dieses Artikels dient hier als Beispiel. Im CMS (Conversational Monitor System) gibt es eine Minidisk mit einem CMS-Dateisystem, auf der sich eine Skriptdatei befindet, die beim CMS-Start automatisch ausgeführt wird. Dort können beispielsweise über CP-Befehle virtuelle Netzwerkverbindungen definiert und aktiviert und auch das IPL (Initial Program Load) eines anderen Betriebssystem angestoßen werden.

Die Geräte einer VM werden über einen Device Identifier (0000 bis FFFF) angesprochen. Für einen VM-User spielt die Zuordnung der physischen Anschlüsse zu den Geräten keine Rolle, man hat also freie Hand bei der Auswahl. Es haben sich aber bestimmte Adressen eingebürgert. So hat die erste Minidisk für das CM-System in der Regel die Adresse 191 (Listing 1, Markierung 11); die Adressen für virtuelle Konsole (5), virtuellen Lochkartenleser (6) und -stanzer (7) und einen virtuellen Drucker (8) entsprechen in Listing 1 dem Standard.

Als Erstes sind der Username, das Passwort, eine initiale und eine maximale Hauptspeichergröße und die Sicherheitsklasse hinter dem »USER«-Statement definiert (1). Die zweite Zeile bewirkt, dass das System bei einem Neustart des VM mit hochgefahren wird (2). Als Nächstes wird der Prozessoranteil zugeordnet (3): Unser System erhält so viel CPU-Leistung wie möglich, jedoch mindestens drei Prozent der Gesamtleistung.

Die nächste Zeile bewirkt den Autostart des CM-Betriebssystems (4). Die vier »Link«-Statements (9) erlauben den Read-only-Zugriff (RR) auf benötigte Systembereiche von VM und VM-TCP/IP. So befindet sich auf der Minidisk 592 des Users »TCPMAINT« beispielsweise der FTP-Client des VM – ohne diese Zeile wäre unser User vom Rest der Welt abgeschnitten.

Die nächsten beiden Einträge (10) reichen zwei reale Adressen (1012 und 1013) der VM-LPAR direkt an unsere virtuelle Maschine weiter, jedoch unter den neuen virtuellen Adressen 112 und 113. Dahinter verbergen sich zwei Verbindungen zu dem OSA-Adapter, die eine virtuelle Netzwerkkarte ermöglichen (Read- und Write-Kanal).

Die »MDISK«-Statements (11) definieren jeweils Minidisks mit den virtuellen Adressen gemäß der zweiten Spalte. In der dritten Spalte steht der Gerätetyp, danach der Startzylinder, die Zylinderanzahl und der Name des zugrunde liegenden DASD-Device. Die weiteren Parameter betreffen Zugriffsrechte anderer VM-Guests sowie Zugriffspasswörter.

Listing 1: Linux als VM-Guest

02658 ***********************************************************
02659 ***  L390VM07 *** FIREWALL PORTIERUNG *********************
02660 ***********************************************************
02661 USER L390VM07 PASSWORT 500M 512M G                   (1)
02662  AUTOLOG AUTOLOG1                                    (2)
02663  OPTION QUICKDSP
02664  SHARE ABS 3%                                        (3)
02665  IPL CMS                                             (4)
02666  CONSOLE 009 3270                                    (5)
02667  SPOOL 00C 2540 READER A                             (6)
02668  SPOOL 00D 2540 PUNCH  A                             (7)
02669  SPOOL 00E 1403 X                                    (8)
02670  LINK MAINT 190 190 RR                               (9)
02671  LINK MAINT 19D 19D RR
02672  LINK MAINT 19E 19E RR
02673  LINK TCPMAINT 592 592 RR
02674 * OSA TCP/IP
02675   DEDICATE 112 1012                                  (10)
02676   DEDICATE 113 1013
02677  MDISK 191 3390 6061 0600 LINUX3 MW ALL  WPAS  MPAS  (11)
02678  MDISK 291 3390 1451 0200 VMSPG2 MR ALL  WPAS  MPAS
02679  MDISK 192 3390 0925 0180 VMSWK9 MR ALL  WPAS  MPAS
02680 * 193 + 293 für Development + Frozen Releaselevel - wechselweise
02681  MDISK 193 3390 1105 1000 VMSWK9 MR ALL  WPAS  MPAS
02682  MDISK 293 3390 0001 1000 LINUX4 MR ALL  WPAS  MPAS

Wozu das Ganze?

Vor der Entwicklung eines neuen Produkts sollte immer die Frage stehen: Wer braucht es und warum? Die Argumentation ist – nach anfänglicher Verwunderung über die ungewöhnliche Kombination – relativ einfach. Die Großrechner sollen schließlich als große Web-, Mail-, News- und sonstige Server ihren Dienst verrichten und haben außer der Unternehmens-Firewall keinen Schutz.

Das ist in solchen Umgebungen nicht akzeptabel. Die Alternative zu einer Firewall auf dem Großrechner ist eine Firewall vor dem Großrechner, die natürlich auch so ausgelegt sein muss, dass sie 24 Stunden am Tag zur Verfügung steht. Diese Nebenbedingung katapultiert die Kosten sofort in mittlere fünfstellige Euro-Bereiche.

Bei einer Firewall auf dem Mainframe gibt es keine zusätzliche Hardware, die ausfallen könnte. Das Operating betreut die Firewall zusammen mit den übrigen virtuellen Rechnern und kann bei Störungen selbst aktiv werden. Klar ist, dass eine Firewall auf einem Großrechner nur den Mainframe und dessen virtuelle Maschinen schützen kann und keinesfalls als Ersatz für eine Firmen-Firewall zu sehen ist.

Der Schutz im Großrechner wirkt nicht nur gegen Angriffe aus dem Internet, auch Zugriffe aus dem Intranet lassen sich entsprechend filtern. Die Einzelsysteme können sich sogar voreinander schützen. Außerdem kann die Firewall als VPN-Gateway dienen – damit sind verschlüsselte Verbindungen auch zu Systemen möglich, die dies von sich aus nicht vorsehen. Beispielsweise lassen sich die 3270-Sitzungen (Telnet-Protokoll auf Zeilenbasis) verschlüsseln, um Benutzernamen und Passwörter abgesichert zu übertragen.

Abbildung 1: Bereits die Größe eines eServers der zSeries von IBM ist beeindruckend. Im Bild: Cyril Price und Kyle Vankleeck neben einer z900.

Abbildung 1: Bereits die Größe eines eServers der zSeries von IBM ist beeindruckend. Im Bild: Cyril Price und Kyle Vankleeck neben einer z900.

Im Großrechner ist vieles anders

Wer zum ersten Mal mit Großrechnern arbeitet, dem wird schnell klar, dass diese Architektur wenig mit einem PC zu tun hat. Bei einem PC trennt Betriebssystem und Hardware nicht gerade besonders viel, der Firewall-Spezialist kann den Rechner also gleich mitbetreuen. Bei einem Mainframe liegt zwischen der Firewall und ihrem Betriebssystem auf der einen und der Hardware auf der anderen Seite noch ein komplettes Softwaresystem, das man nicht mal schnell nebenher booten kann.

Für die Installation sind daher zwei Experten nötig, einmal für den Rechner einmal für die Firewall. Auch der geforderte Support ist bei Großrechnern typischerweise anders; eine 24-Stunden-Betreuung mit kurzen Reaktionszeiten unterscheidet sich doch sehr stark von der Mo-Fr/9-17-Mentalität.

Als nach langer und reiflicher Überlegung (eine Nacht) die Entscheidung für eine Entwicklung gefallen und die Dauer für die Portierung auch beschlossen war (zwei bis fünf Tage – ist ja Linux), vereinbarten wir einen Termin zu einem ersten Versuch.

Ein Erlebnisbericht: Die Portierung

Wie entwickelt man eine Firewall für einen Großrechner, wenn man gerade keinen Mainframe übrig hat und die Entwicklung zentral für alle Plattformen auf einem Entwicklungsrechner laufen soll? Man nimmt einen Cross-Compiler, schließlich gibt es ja den Gcc. Eine IBM-Entwicklerseite[1] stellt dazu jede Menge Tipps und Patches bereit. Also sucht man in den verschiedenen Archiven nach den Grundversionen (Debian) für die Patches und holt sie, dann geht alles nach Anleitung: Binutils auspacken, patchen, übersetzen und installieren, Gcc 2.95.3 (nicht 3.0) ebenso, den Kernel cross-kompilieren, dann die Glibc und so weiter.

Soweit die Theorie. Die Praxis sieht anders aus: Abbrüche, Trial-and-Error-Durchläufe, nach der Übersetzung ein verkonfiguriertes Entwicklungssystem, Neuinstallation und Neubeginn. Und natürlich gibt es Patches, die erst erscheinen, sobald die Cross-Entwicklungsumgebung fertig ist. Die ändern schon mal den Ziel-Assembler, so dass alles von vorn losgeht.

Nicht zu vergessen ist auch, dass die für Cross-Kompilierungen wichtigen Optionen »–build=«, »–host=« und »–target=« umso wüster durcheinander gewürfelt sind, je weiter man sich vom Kernel entfernt. Viele Pakete sind offensichtlich nicht für die Cross-Kompilierung gemacht.

Jeder, der einmal eine komplexe Aufgabe gelöst hat, wird unser Gefühl des Stolzes verstehen können, als nach gut einer Woche (also der vorgesehenen Portierungszeit) der Kernel und “Hello World” übersetzt waren. Nun konnte es ja nicht mehr lange dauern, denn das Schlimmste lag hinter uns. Jetzt nur schnell mal den Kernel auf dem vorgesehenen System booten, um die Kernel-Meldungen zu sehen – die Panic-Meldung wegen des fehlenden Dateisystems ist schon in Ordnung -, und als zweiten Test das “Hello World” in einer Linux-Maschine auf dem Großrechner laufen lassen, das funktioniert sowieso. Also weg damit per Mail und auf das Feedback gewartet.

Abbildung 2: Im Unterschied zu einer klassischen Firewall läuft diese Linux-Firewall in dem Großrechner und nicht auf einer eigenen Maschine vor dem Mainframe.

Abbildung 2: Im Unterschied zu einer klassischen Firewall läuft diese Linux-Firewall in dem Großrechner und nicht auf einer eigenen Maschine vor dem Mainframe.

Plug & Pray

Nichts funktionierte. Meldungen beim Booten: Fehlanzeige, auch das “Hello World” konnte nicht ausgeführt werden. Für den Portierungstermin vor Ort sah es nicht gut aus. Übertragungsfehler in den Mails konnten wir von vornherein ausschließen, wir hatten sogar die MD5-Summen verglichen.

Für die Portierung waren zwei Tage vereinbart. Danach sollte das Grundsystem laufen und nach und nach der Rest der Software portiert werden. Stattdessen verglichen wir die Assembler-Ausgaben von “Hello World” zwischen Cross-Compiler auf dem PC und Native-Compiler auf dem Großrechner. Wir assemblierten und disassemblierten, verglichen Binaries und linkten auch noch über Kreuz. Die Binaries unterschieden sich tatsächlich an einer Stelle im Header, nicht aber im Code. Änderten wir dieses Byte, lief der cross-kompilierte Code auf dem Linux-Zielsystem.

In einer versteckten Mail und später im Kernel fanden wir endlich die Erklärung: Zwischen der Kernelversion 2.4.3 (Linux-Zielsystem) und 2.4.5 (Linux-Entwicklungssystem) war die Magic-Nummer für S/390-Binaries geändert worden. Der neue Kernel verstand beide Magics, aber der alte Kernel selbstverständlich nur das alte.

Es blieb uns also nichts anderes übrig, als die neue Kernelversion zum Laufen zu bringen. Am Ende des zweiten Portierungstags kam der Kernel zumindest bis zum Start der Ramdisk und zum Bash-Prompt, wenn auch ohne Plattentreiber (die hatten beim Übersetzen einen Fehler gemeldet). Die Bash des alten Kernels hatten wir auf das neue System kopiert, unerklärlicherweise lief unsere neu übersetzte Shell nicht.

Abbildung 3: Durch das Netzwerk-API ist es leicht, den Virenschutz auf einen anderen Rechner zu verlegen. Selbst innerhalb des Großrechners wird über dasselbe API kommuniziert.

Abbildung 3: Durch das Netzwerk-API ist es leicht, den Virenschutz auf einen anderen Rechner zu verlegen. Selbst innerhalb des Großrechners wird über dasselbe API kommuniziert.

Hercules

Zum Ausgleich funktionierte etwas anderes: Hercules[3], ein Hardware-Emulator, der einen Großrechner auf einem normalen PC emuliert. Er simuliert einen oder mehrere Prozessoren, Netzwerkkarten und Platten, also ein komplettes System (siehe Listing 2). Das geht zwar manchmal etwas langsam, aber es funktioniert weitgehend. Unser bisheriges Portierungsergebnis konnten wir auf Hercules-Basis immerhin zum Laufen überreden und waren damit im Großen und Ganzen unabhängig von einem realen Großrechner.

Aber kein einziges cross-kompiliertes Programm lief. Weder unter Hercules, noch auf dem Zielsystem. Auch die Versuche mit den Vorversionen von Glibc 2.2.4 scheiterten. Da ein IBM-Mitarbeiter sich als Glibc-Tester geoutet hatte, wurde er kurzerhand angemailt und ohne große Hoffnung mit dem Problem konfrontiert. Am nächsten Morgen kam eine Mail (von hier aus noch mal ein Dank an Martin Schwidefsky, wir säßen heute noch ratlos da) mit einem Ein-Zeilen-Patch für die Binutils.

Listing 2: Hercules-Konfiguration

01 CPUSERIAL 002623    # CPU serial number
02 CPUMODEL  3090      # CPU model number
03 MAINSIZE  280       # Main storage size in megabytes
04 XPNDSIZE  0
05 CNSLPORT  3270      # TCP port number to which consoles connect
06 NUMCPU    1         # Number of CPUs
07 LOADPARM  0582      # IPL parameter
08 OSTAILOR LINUX
09 PANRATE FAST
10 ARCHMODE ESA/390
11 CFCCIMAGE cfcc_level8
12 
13 # .-------------------Device number
14 # |   .---------------Device type
15 # |   |     .---------File name and parameters
16 # |   |     |
17 # V   V     V
18 #---  ----  --------------------
19 000D  3525  punch00d.txt  ascii
20 000E  1403  print00e.txt  crlf
21 001F  3215
22 0020  1052
23 0194  3370  tapes/zguard.0194
24 018f  3420  linux.aws
25 0200  3270
26 0201  3270
27 0582  3420  /root/hercules/hercules-package/ tapes/fwb.tdf
28 0E00  3088  CTCI  /dev/net/tun 1500 192.168.253.14 192.168.253.13 255.255.255.0
29 0E01  3088  CTCI  /dev/net/tun 1500 192.168.253.14 192.168.253.13 255.255.255.

Alles wird gut

Die Neu-Übersetzung des Entwicklungssystems dauerte zwei Stunden, das Übersetzen von “Hello World” weitere zwei Sekunden. Das Hochfahren von Hercules dann noch mal fünf Minuten. Wir können jetzt das Glücksgefühl von Linus Torvalds beim Anblick von AABBAAB… verstehen. Um es kurz zu machen: Jedes Programm lief nach der Neu-Übersetzung so, als hätte es nie etwas anderes getan.

Gemessen an diesen fundamentalen Dingen war das weitere Verfahren relativ einfach. Alle Softwarepakete, ob selbst entwickelt oder Open Source, wurden mit mehr oder weniger Aufwand dazu gebracht, sich cross-kompilieren zu lassen, und in den Ziel-Baum eingepflegt.

Abbildung 4: Innerhalb des Großrechners lassen sich auch mehrere Linux-Firewalls einsetzen. Hintereinander geschaltet sichern sie den hoch sicheren Bereich doppelt ab.

Abbildung 4: Innerhalb des Großrechners lassen sich auch mehrere Linux-Firewalls einsetzen. Hintereinander geschaltet sichern sie den hoch sicheren Bereich doppelt ab.

Netzwerk

Eine besondere Herausforderung für Linuxer ist die Lektüre des IBM-Manuals “Linux for S/390 Device Drivers and Installation Commands”. Ohne einen richtigen Großrechner sagen den meisten solche Bezeichnungen wie CTC, ESCON, IUCV, LCS, QETH QDIO und OSA nicht gerade besonders viel, man weiß eigentlich nur, dass alles richtig teuer und richtig schnell ist.

Viele Erklärungen werden erst verständlich, wenn man selbst ausprobiert. Wegen der Hochverfügbarkeit gibt es auch die Möglichkeit eines Hotplug, also des An- und Abschaltens von realen und virtuellen Netzwerkkarten im laufenden Betrieb. Unter Hercules steht aber nur der CTC-Treiber für Tests zur Verfügung, die übrigen Treiber sind mangels Hardware nicht zu benutzen.

Der am meisten verwendete Netzwerkkartentreiber ist zugleich der einfachste: CTC (Channel to Channel). Er ist nur eine virtuelle Netzwerkkarte und stellt eine Punkt-zu-Punkt-Verbindung zwischen zwei virtuellen Maschinen (etwa zwischen Firewall und geschützter Maschine) her, die eine Netzwerkkarte simuliert. Unter Hercules dient CTC dazu, über den TUN-Treiber eine Verbindung zwischen Gast- und Wirtssystem aufzubauen. CTC-Verbindungen stellen unter VM das virtuelle Pendant zu ESCON-Verbindungen zwischen LPARs dar, der CTC-Treiber ist für beide geeignet.

IUCV steht nur unter VM zur Verfügung und bietet ebenfalls Punkt-zu-Punkt-Verbindungen zwischen VM-Guests. IUCV-Verbindungen sind jedoch schneller als CTC, da bei der Implementierung keine Rücksicht auf Kompatibilität zu einem realen Äquivalent genommen wurde.

Firewall im Rechner

In einer Firewall-Umgebung auf dem Großrechner hat nur die Firewall selbst einen Zugang zu den realen Netzwerkschnittstellen, die Verbindung zwischen der Firewall und geschützten Systemen führt ausschließlich über CTC- oder IUCV-Verbindungen.

LCS, QETH und QDIO sind Treiber für die unterschiedlichen OSA-Netzwerk-Adapter. Wird für den OSA2 und OSA Express Fast Ethernet noch der LCS-Treiber benutzt, benötigt Gigabit Ethernet sowohl QETH als auch QDIO. Ältere OSA-Adapter mussten jeweils mit den in den Gastsystemen verwendeten IP-Adressen und den zugehörigen Device-IDs vorkonfiguriert werden. Neuere übernehmen die Interface-Einstellungen der Gastsysteme dynamisch und vereinfachen die Administration erheblich.

Im Prinzip unterscheiden sich reale und virtuelle Netzwerkschnittstellen nicht voneinander, sobald sie im System angemeldet sind. Sie lassen sich wie gewohnt benutzen, allerdings haben sie ein paar Eigenheiten, die berücksichtigt sein wollen. Der LCS-Treiber hat beispielsweise nur einen Modulnamen (»lcs.o«), kann aber den Devicenamen »tr X« (für Token Ring) oder »eth X« (für Ethernet) belegen, je nachdem, was konkret angeschlossen ist. Die Gerätenummer » X« lässt sich aber beschränkt zuweisen. Ein Modul kann durchaus mehrere Devices enthalten, bis zu 256.

IBM empfiehlt das Device-Filesystem und das dynamische Laden der Module. Dadurch können über die Datei »/proc /chandev« die Netzwerkgeräte und Platten dynamisch zugeordnet werden. Die Lade- und Entladeprozedur ist alles andere als einfach, aber vermutlich sehr mächtig. Hier hat IBM einige Bug-Fixes veröffentlicht, die uns davor zurückschrecken lassen, zu früh “Jugend forscht” zu spielen. Immer wenn es im Manual interessant wird, fehlen leider aussagekräftige Beispiele.

Device-Filesystem

Sehr erfreulich verlief der empfohlene Umstieg auf das Device-Filesystem (»devfs«). Die Programme und Prozeduren liefen überwiegend ohne jede Änderung. Das Device-Filesystem hängt sich in »/dev« ein und muss als Option bei der Kernelübersetzung angegeben werden. Der große Vorteil ist, dass mit ihm nur die Device-Nodes im »/dev«-Baum angelegt sind, deren Treiber und Geräte sich auch tatsächlich registriert haben. Wenn eine Datei namens »/dev/dasd /0192/device« vorhanden ist, ist der DASD-Treiber auch geladen und die Platte 0192 steht zur Verfügung. Die sonst übliche Müllhalde im »/dev«-Verzeichnis ist einer übersichtlichen und kleinen Struktur gewichen.

Darauf aufbauend ist die Installation auf Platte oder die Konfiguration der Netzwerkschnittstellen einfach zu automatisieren. Wir haben davon intensiv Gebrauch gemacht.

Installation

Wie kann man ein System installieren, wenn in der Regel weder ein CD-ROM-Laufwerk zur Verfügung steht, mit dem man die Software laden kann, noch eine Diskette mit den Konfigurationsdateien? Für die Installation benutzt man eine 120 MByte große Ramdisk, verwandelt sie samt Kernel und Parameterdatei in virtuelle Lochkarten, lädt sie in den VM-Reader (einen virtueller Lochkartenleser) und bootet von dort (siehe Kasten “Virtuelle Maschinen”). Die drei Dateien kommen per FTP über das LAN, man muss nur darauf achten, dass sie schon im 80-stelligen Lochkartenformat auf der CMS-Minidisk landen.

Der Kernel startet beim IPL, erkennt die Ramdisk und bootet von ihr. Statt das System weiter in der Ramdisk zu betreiben, kann man es auch auf Platte installieren. Diese Installation beginnt mit dem Formatieren (»dasdfmt«), Initialisieren und Partitionieren (»fdasd«) der Platte. Danach erhält sie ein Filesystem (»mke2fs«) und wird gemountet, die Dateien werden kopiert und der Bootsektor (»zipl«) aufgespielt. Wenn das abgeschlossen ist, kann man auch den IPL direkt von Platte starten. Alles ist fast so, wie man es kennt.

Eins fehlt noch zu unserem Glück: die spezifische Konfiguration. Wir haben uns in diesem Projekt dazu entschlossen, sie über das Netz per SCP-, SFTP-, HTTP- oder FTP-Server zu holen, wobei die Daten der ersten Netzwerkkarte und des Servers einzugeben sind. Zugute kommt uns hier die geringe Typenzahl der Netzwerkschnittstellen, statt Hunderter verschiedener Netzwerkkarten und -treiber gibt es nur fünf. Mit der Kernelversion 2.4.16 wäre es auch noch möglich, Dateien direkt von einer Minidisk zu lesen – wir können diese Version aber nicht einsetzen, da IBM bislang die Netzwerkkarten-Treiber nur für Version 2.4.7 als Binärmodule zur Verfügung stellt.

Zusammenfassung und Ausblick

Die Portierung hat viel länger gedauert, als wir zunächst dachten. Trotz der Wochenendarbeit und zeitweise fehlenden Schlafs hat sie viel Freude gemacht, gerade weil man sich auf neuem Terrain befindet und keine ausgetretenen Wege beschreiten muss. Die Cross-Entwicklung hat sich als der richtige Weg herausgestellt, plattformübergreifende Entwicklung zu betreiben und in alle Linien dieselben Erfahrungen einzubringen.

Es hat sich in den vergangenen Monaten sehr viel im S/390-Teil des Kernels getan. Die Bugfixes für die Version 2.4.7 sind insgesamt stabil, in den neuen Kernelversionen bis 2.4.16 sind zusätzlich aber viele interessante Dinge passiert, die wir in den nächsten Wochen nutzen werden, sobald die Netzwerk-Binärmodule verfügbar sind.

Wir werden dann im Laufe der Zeit endlich auch solche Eigenschaften von Linux testen und nutzen, die wir bislang nicht benötigt haben, aber dennoch gerne einmal ausprobiert hätten, zum Beispiel den Datendurchsatz von mehreren GByte/s, hundert Netzwerkschnittstellen und mehr, Traffic Shaping (Bandbreitenbegrenzung), Virenscan mit 50 GByte pro Tag, Routing mit Iproute 2, VPN direkt mit dem Großrechner und virtuelle DMZ.

Mit der Anforderung an Hochverfügbarkeit wird die Firewall dynamisch rekonfigurierbar werden müssen, inklusive Routing und Regeln. Wir sind sicher, dass Linux das alles bewältigen kann, und möchten seine Leistung jenseits des PCs kennen lernen. (fjl/uwo)

S/390 und zSeries

Linux for S/390 and zSeries[1] – so die offizielle Bezeichnung – umfasst eine 31-Bit-Portierung für die S/390-Architektur und eine 64-Bit-Version für den Nachfolger z-Architektur. Die 31-Bit-Fassung ist aufwärtskompatibel auch auf den neuen zSeries-Modellen lauffähig. Offiziell unterstützt IBM nur Rechner ab Prozessor-Generation fünf, da sie einen Gleitkommaprozessor haben.

Eine Spezialität der Großrechner ist die hardwareseitige Virtualisierung. Dabei wird die Maschine in bis zu 15 logische Partitionen (LPAR, logische Hardwareblöcke) aufgeteilt. Jede dieser LPARs erhält ihren Anteil an den verfügbaren Ressourcen (CPUs, Hauptspeicher, Platten, Netzwerkkarten und Ähnlichem). LPARs verhalten sich also wie einzelne Rechner, obwohl sie in derselben Maschine stecken. Sie können beispielsweise Produktions- und Testsysteme parallel ausführen.

Das IBM-Betriebssystem zVM (früher VM/ESA) kann eine LPAR wiederum in virtuelle Maschinen aufteilen, die so genannten VM-Guests. Damit ist die Anzahl der möglichen Linux-Installationen auf einem realen Rechner nahezu unbegrenzt.

Virtualisieren lassen sich auch Massenspeicher jeglicher Größenordnung, Netzwerkadapter und Spezialhardware wie Kryptographie-Prozessorkarten oder Steuereinheiten für die klassischen Terminalkonsolen (3270-Bildschirme). Je nach Art der Ressource lässt sich dann eine Aufteilung sehr flexibel konfigurieren, ob etwa der Anteil für eine bestimmte LPAR fest zugeordnet ist oder je nach Auslastung schwankt. Konfiguriert wird das Ganze über mehr oder weniger kryptische Textdateien, ein Linuxer wird sich also heimisch fühlen.

Netz im Großrechner

Die Netzwerkadapter OSA-2 bis OSA Express Gigabit Ethernet können etwas mehr als ihre PC-Kollegen. Sie bieten von sich aus schon eine Virtualisierung und unterstützen manchmal sogar mehrere Netzwerktypen (etwa Ethernet, Token-Ring und FDDI) in einem Adapter. Ein spezieller Netzwerkzugang ist die ESCON-Verbindung, die direkt auf eine externe Box führt, erst diese übernimmt dann das eigentliche Routing.

Grundlage für die Firewall-Aktivitäten sind die Kommunikationsmöglichkeiten der virtuellen Maschinen untereinander. Eine zVM kann virtuelle Verbindungen zwischen beliebigen VM-Guests herstellen, LPARs können über ESCON-Kabel miteinander kommunizieren, auf den neuesten zSeries-Modellen auch intern mit Speicherbusgeschwindigkeit über so genannte Hipersockets.

Reise in die EDV-Steinzeit

In der zVM kann man auch Hardware verteilen, die gar nicht physisch vorhanden ist. Wie eine Reise in die EDV-Vergangenheit sieht es dann aus, wenn virtuelle Lochkarten-Stanzer und -Leser zu neuem Leben erweckt werden, aus der Systemprogrammierung sind sie aber wegen ihrer Universalität nicht wegzudenken. Ganz ähnlich sieht es ja in der Unix-Welt mit dem Gerät TTY aus, das ursprünglich als Tele Type Writer ein Fernschreiber mit fünf Zeichen pro Sekunde war.

Besonders angenehm für den Admin sind Minidisks: Die internen Festplatten (DASD, Direct Access Storage Device), die je nach Modell eine unterschiedliche fixe Größe haben und auch nur bedingt partitionierbar sind, lassen sich mit Minidisks flexibler aufteilen. Dieses Konzept findet sich auch unter Linux und in der Unix-Welt als LVM.

Virtuelle Maschinen

Der Aufbau von VMs ist ein wenig ungewöhnlich: Jeder VM-Guest ist tatsächlich eine vollwertige virtuelle Maschine, in der jedes andere S/390-Betriebssystem ablaufen kann, auch zVM selbst. VM nutzt dies auch für eine Art Multi-User-Funktionalität: Einzelne Funktionseinheiten von VM oder Applikationen (beispielsweise TCP/IP oder DB2) erhalten dabei jeweils eine eigene virtuelle Maschine.

Eine zentrale Datei konfiguriert alle VM-Guests. Dort werden User-Name, Passwort und Sicherheitsklasse vergeben und die Ressourcen verteilt. Meldet man sich über eine Telnet-3270-Verbindung zum ersten Mal am User an, ist dies mit einem Power-on vergleichbar. Der User lässt sich nun über CP-Befehle (eine Art Low-Level-Kommandosyntax) genauer konfigurieren.

Das CP entspricht ungefähr einem sehr komplexen BIOS. Meist wird allerdings automatisch das CMS (Conversational Monitor System) geladen, das ist eine Art rudimentäres Betriebssystem. Den Bootvorgang bei Mainframes nennt man übrigens IPL (Initial Program Load).

Virenscan

Linux ist von Virenbefall generell weniger bedroht als andere Systeme, schon weil es kaum Viren für Linux gibt. Bei Linux für Großrechner sieht es (außer bei Shell-Skripten) noch besser aus. Da aber diese Rechner als Mail- oder Newsserver für andere Systeme dienen, sollen sie die Viren für diese Plattformen wegfiltern.

Es gibt zurzeit kaum Virenscanner, die unter Linux für S/390 laufen. Solange dieser Zustand besteht, muss man zum Virenscan eine externe Maschine bemühen. Diese erhält über das Netzwerk das zu prüfende Dokument. Zurück kommt im Wesentlichen eine Ja-Nein-Entscheidung sowie bei einem Virenfund ein Protokoll.

Durch die Netzwerk-API kann später die externe Maschine durch einen internen Virenscan ersetzt werden, man muss nur die Netzwerkadresse anpassen. Für erhöhte Sicherheit ist auch eine Kombination von verschiedenen Virenscannern möglich.

Infos

[1] Linux for S/390 and zSeries: [http://www10.software.ibm.com/developerworks/opensource/linux390/index.shtml]

[2] Ulrich Wolf, “Pinguin im Mainframe-Land”, Linux-Magazin 6/00, S. 48ff

[3] Hercules, der S/390-Emulator: [http://www.conmicro.cx/hercules/]

Die Autoren

Frank Bernard hat sich mit seiner Firma Fbit auf Internet-Sicherheitstechnik spezialisiert.

Simon Fischer studiert Wirtschaftsinformatik in Münster und arbeitet mit sehr viel Freude als Systemberater im “Linux on zSeries”-Team bei der Becom Informationssysteme GmbH.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben