Hoofdstuk 3 - Elementaire Vereisten
14
!"#$ De eigenschappen waaraan een besturingssysteem moet voldoen om in aanmerking te komen voor bedrijven kunnen niet eenduidig beschreven worden. Bij het bepalen van deze vereiste eigenschappen moet er immers rekening gehouden worden met het doel waarvoor het besturingssysteem gebruikt zal worden.
%'& (*),+.-0/*132
1
Een redelijke set van vereisten is vervat in ‘RAS’: reliability, availability, serviceability. Deze lijst houdt echter onvoldoende rekening met het dynamisch karakter van een onderneming en de behoefte aan beveiliging. Een besturingssysteem dat rekening houdt met het dynamisch karakter van een onderneming kan meegroeien met de behoeften van deze onderneming. Dit wordt bepaald door de schaalbaarheid (scalability) van het besturingssysteem. Verder moet er ook rekening gehouden worden met de behoefte aan beveiliging (security) en de aanwezigheid van applicaties. Men kiest een besturingssysteem immers niet enkel voor zijn kwaliteit, maar ook voor de applicaties die op dat besturingssysteem uitgevoerd kunnen worden. Deze laatste vereiste zal later in deze thesis aan bod komen. De bovenstaande vereisten bepalen of een bepaald besturingssysteem in aanmerking komt voor een bedrijf. Andere factoren, zoals bijvoorbeeld de Total Cost of Ownership (TCO), kunnen dienst doen als een hulpmiddel bij de keuze tussen twee of meerdere concurrerende systemen met gelijkaardige eigenschappen. Uit recent onderzoek2 van IDC en Cybersource blijkt dat de Total Cost of Ownership (TCO) van Linux aanzienlijk lager is dan deze van concurrerende besturingssystemen. De TCO van Linux bedraagt volgens deze onderzoeken een vijfde tot de helft van commerciële UNIX systemen, en ongeveer twee derde van Microsoft Windows systemen. De geassocieerde kosten met Linux zijn niet enkel drastisch lager voor hardware en software, zoals verwacht kon worden, maar tevens lager wat personeel betreft. Bovendien biedt een duidelijk zichtbare toepassing van Linux in een onderneming, een krachtige onderhandelingpositie aan de ICT manager. Hierdoor kunnen betere prijzen bedongen worden van leveranciers van hardware en andere server operating environments (SOE). De kosten van Linux zijn zeer competitief door de lage aankoopkost van hardware (meestal Intel), tezamen met een besturingssysteem dat niet gebonden is aan licenties. Case voorbeeld: Merrill Lynch bespaart met Linux De beursmakelarij Merrill Lynch schakelde begin 2002 volledig over op Linux. De voornaamste rede hiertoe was de Total Cost of Ownership. Belangrijke punten volgens Merrill Lynch zijn hierbij het vereenvoudigd systeembeheer en de platformonafhankelijkheid van Linux, wat toelaat dat applicaties kunnen uitgevoerd worden op zowel mainframes, minicomputers, desktops, laptops als handhelds. Door de lagere TCO verwacht Merril Lynch, net zoals Credit Suisse First Boston dat eerder de overstap naar Linux maakte, ook betere jaarresultaten. Credit Suisse First Boston zag haar omzet vertwintigvoudigen doordat ze een lagere prijs kon vragen voor beurstransacties. Dit was het gevolg van een lagere TCO. Bron: http://www.forbes.com/home/2002/03/27/0327linux.html 1
(bron: ‘Architecting E-Business Solutions’ door Peng Boey, Max Grasso, Greg Sabatino en Imran Sayeed; en de vereisten die aan het licht gekomen zijn tijdens de interviews die ik afnam tijdens het maken van deze thesis.). 2 http://australianit.news.com.au/articles/0,7204,4264906^15321^^nbv^15306,00.htm en The Role of Linux in Reducing the Cost of Enterprise Computing; IDC 2001 White Paper (www.idc.com) – Al Gillen, Dan Kusnetzky, en Scott McLarnon
14
Hoofdstuk 3 - Elementaire Vereisten
/ -0(
15
In dit hoofdstuk werd nagegaan of Linux voldoet aan de elemenaire vereisten van een ebusiness platform. De vereisten die vervat zitten in RAS (reliability, availability, serviceability) werden aangevuld met de behoefte aan beveiliging (security) en het dynamisch karakter van een onderneming, wat tot uiting komt in de schaalbaarheid (scalability) van het systeem. Naast deze eigenschappen moet er ook belang gehecht worden aan de kwaliteit van de systeembeheerder. Linux is gebouwd op een degelijke architectuur die de systeemobjecten strikt gescheiden houdt van de gebruikerobjecten. Zo kan het systeem zich beschermen tegen de acties van gewone gebruikers en hun toepassingen. Samen met de vrij toegankelijke broncodes - die het mogelijk maken dat iedereen bugs kan opsporen, oplossen en deze oplossing ter beschikking stellen aan de andere gebruikers – leidt dit tot een stabiel en betrouwbaar systeem. Dit heeft een gunstige invloed op de beschikbaarheid van het systeem. Deze beschikbaarheid kan nog verhoogd worden door het elimineren van ‘single points of failure’ (SPOF) in het systeem door het toevoegen van ‘redundancy’. Hiervoor beschikt Linux de nodige gereedschappen De administratie van een e-business systeem kan verlicht worden door serviceability gereedschappen. Hierdoor krijgt de systeembeheerder een goed overzicht van de werking van het systeem en de verschillende services. Op gebied van scalability biedt Linux ondersteuning voor zowel verticale als horizontale schaalbaarheid. Dit geeft de zekerheid dat het systeem kan meegroeien met de behoeften. Vooral op vlak van clustering (horizontale schaalbaarheid) doet Linux het erg goed. Vrij toegankelijke broncodes en een component gebaseerde architectuur maken het mogelijk om Linux volledig aan te passen aan de eigen behoeften3. Het feit dat Linux uit vele losse componenten bestaat betekent immers dat iedereen een eigen ‘smaak’ kan samenstellen. Hierdoor is Linux beschikbaar op zowat elk hardware platform en zijn er bijvoorbeeld geoptimaliseerde configuraties beschikbaar voor databases. Bovendien kan men elke component vervangen door een gelijkaardige component, waardoor de kans op vendor lock -in afneemt. Linux lijkt eveneens een voorsprong te hebben op gebied van security. In alle besturingssystemen zitten fouten, die mogelijk uitgebuit kunnen worden ten nadele van security. Linux heeft hier het voordeel dat wanneer er een dergelijke bug ontdekt wordt, er meestal binnen enkele uren een security update bestaat. Het is bovendien zo dat de meeste bugs zitten in alpha en beta pakketten, en dat deze pakketten standaard meestal niet geïnstalleerd worden. Commerciële besturingssystemen proberen deze security issues zo veel mogelijk uit te media te houden, terwijl Linux onmiddellijk (24h/24h en 7/7) kan reageren op een security issue. Iedereen die een gat in de beveiliging vindt, kan dit dichten omdat hij reeds de broncode ter beschikking heeft. Dit in tegenstelling tot commerciële besturingssystemen waar de gebruiker volledig afhankelijk is van de kwaliteit van service (of het gebrek daaraan) van de leverancier. Onderwerpen, zoals de manier waarop het besturingssysteem ontworpen is en de security architectuur onderhouden wordt, zijn zeer belangrijk bij de keuze van het besturingssysteem. Linux symboliseert zowel continuïteit en verandering. Het heeft een moderne user interface en vele innovatieve toepassingen, maar zijn fundamentele UNIX-gebaseerde design heeft zich door de geschiedenis heen bewezen. Linux heeft het voordeel van meer dan een kwart eeuw UNIX ervaring waarvan het kan leren, en het lijkt erop dat de juiste lessen geleerd zijn. Wanneer dan de factor Total Cost of Ownership (TCO) wordt toegevoegd, dan blijken de geassocieerde kosten met Linux drastisch lager te zijn voor zowel hardware en software, als personeel. 3
Dit betekent overigens niet dat de organisatie in kwestie deze know-how zelf in huis moet hebben. Er is heel wat ondersteuning vanwege derden voorhanden, zowel van de Open Source gemeenschap zelf als van commerciële ondernemingen.
15
Hoofdstuk 3 - Elementaire Vereisten
16
!#"$%&'
( *) ",+ RAS omvat de drie hoofdeigenschappen van systeemontwerp: Reliability (stabiliteit en betrouwbaarheid), Availability (beschikbaarheid), en Serviceability (bruikbaarheid).
'-
.)/ 0!*123%5426782 %:92 ;+ Wanneer e-business bedrijfskritisch wordt moeten we de nodige aandacht schenken aan de stabiliteit en de betrouwbaarheid (reliability) van dit systeem. Deze eigenschappen geven aan in welke mate een systeem op een consequente manier dezelfde resultaten produceert en daarbij voldoet aan de gewenste resultaten of hierbij de verwachtingen overtreft. Bovendien moet een eventuele downtime snel kunnen hersteld worden. Linux computers kunnen gedurende een lange tijd operationeel zijn zonder ook maar éénmaal te crashen, te freezen of opnieuw opgestart te worden (reboot). Linux is stabiel en heeft minder bugs dan andere besturingssystemen (cfr. bugtraq). Dit is het gevolg van de beschikbaarheid van de broncode zodat iedereen bugs kan opsporen, oplossen en deze oplossing ter beschikking stellen aan de Linux-gemeenschap. Linux heeft bovendien meer ontwikkelaars dan gelijk welk ander besturingssysteem. Hierdoor ligt het accent in de ontwikkeling meer op het oplossen van fouten dan op het toevoegen van nog-een-feature. Als er nog een fout gevonden wordt, is er een grote kans dat iemand anders al bezig is de fout op te lossen. In het uiterste geval kan men ervoor kiezen om de fout zelf op te lossen. Betrouwbaarheid is belangrijker dan de prijs omdat de kost van downtime gemakkelijk de besparing in de uitgaven van software kan overtreffen. Uiteindelijk wordt de stabiliteit van een besturingssysteem bepaald door zijn architectuur omdat bugs in de implementatie van het systeem na verloop van tijd weggewerkt kunnen worden. Om te bewijzen dat Linux een stabiel en betrouwbaar besturingssysteem is moet gekeken worden naar de architectuur en de implementatie van het systeem. De Windows-architectuur zal in deze analyse als basis voor vergelijking gelden. De indruk dat besturingssystemen minder stabiel worden wanneer er meer toepassingen op uitgevoerd worden, is waarschijnlijk te wijten aan vele onaangename ervaringen met Windows, waar geïnstalleerde toepassingen de systeem-DLL’s (dynamic-link libraries) zonder enige restrictie kunnen overschrijven. Een dergelijk systeem zal er ook niet in slagen om applicaties van het systeem te verwijderen zonder wederzijds incompatibele versies van cruciale systeembibliotheken achter te laten. Een Windows-systeem waarop enkele toepassingen geïnstalleerd en verwijderd zijn, zal dus onstabiel worden door het grote aantal incompatibele DLL’s. De enige oplossing is de volledige herinstallatie van het besturingssyteem. Microsoft heeft dit probleem trachten op te lossen met de ‘Windows registry’, een flexibele en gestandaardiseerde manier om alle configuratie-informatie gecentraliseerd op te slaan. Deze registry werd echter snel een veel misbruikte repository dat zijn oorspronkelijke zuivere en compacte structuur verloor. Bovendien zal een toepassing die de registry vernielt, het hele besturingssysteem onstabiel maken omdat de registry zowel configuratie-informatie bevat van het OS, als van de toepassingen van de gebruiker. In tegenstelling tot Windows, heeft de Linux benadering de systeemobjecten strikt gescheiden van de gebruikerobjecten. De directory structuur en de bestandspermissies van een Linux-systeem zijn speciaal ontworpen om het systeem te beschermen tegen de acties van gewone gebruikers en hun toepassingen. Linux is ontworpen voor meerdere gebruikers, 16
Hoofdstuk 3 - Elementaire Vereisten
17
en heeft mechanismen om de gebruikers tegen elkaar te beschermen. Volgens de Linuxtraditie worden bestanden opgeslagen zoals getoond wordt in de onderstaande tabel. De consistentie en logica in deze structuur zijn duidelijk. Type toepassing Programma’s benodigd tijdens boot-up time Toepassingen die geleverd werden bij het OS en die niet benodigd zijn tijdens boot-up time (vb: compiler, editor) Algemene toepassingen die geïnstalleerd werden door gebruikers. Toepassingen die eigendom zijn van de SuperUser en die benodigd tijdens boot-up time Toepassingen die eigendom zijn van de SuperUser en die niet benodigd zijn tijdens boot-up time
Shared libraries /lib /usr/lib
/usr/local/lib /usr/local/app/lib /lib /usr/lib
binaries /bin /usr/bin
of /usr/local/bin /usr/local/app/bin /sbin
of
/usr/sbin
Tabel 3-1: Linux directory structuur De PATH omgeving variabele brengt alle bin directories tezamen. Met behulp van ldconfig weet elke toepassing welke dynamische bibliotheken het nodig heeft zodat elk benodigd bestand gevonden kan worden tijdens runtime. De install/upgrade/uninstall procedure, met de mogelijke bibliotheekconflicten, is eveneens goed verzorgd in Linux. Als een toepassing geïnstalleerd wordt (bijvoorbeeld Rekall 0.4), worden de gedeelde bibliotheken gekopieerd naar /usr/local/rekall_0.4/lib en worden de uitvoerbare bestanden geplaatst in /usr/local/rekall_0.4/bin. Systeem- en toepassingendirectories zijn onveranderd gebleven bij de installatie, zodat de stabiliteit onveranderd is. Bovendien is het mogelijk om een symbolische link (/usr/local/rekall) te maken die zich gedraagt als snelkoppeling naar /usr/local/rekall_0.4. De PATH omgeving variabele en ldconfig gebruiken deze symbolische link om te verwijzen naar /usr/local/rekall/bin en /usr/local/rekall_0.4/lib in plaats van de werkelijke directory namen. Als we later willen upgraden naar Rekall 0.5, dan zullen de bestanden van de nieuwe versie gekopieerd worden naar /usr/local/rekall_0.5/lib en /usr/local/rekall_0.5/bin en zal de symbolische link /usr/local.rekall verwijzen naar /usr/local/rekall_0.5. De PATH omgeving variabele blijft ongewijzigd, maar de symbolische link verwijst nu naar de nieuwe versie zodat de toepassing kan gebruikt worden zonder opnieuw op te starten of opnieuw in te loggen. De oude bibliotheken, die versieconflicten kunnen veroorzaken, verschijnen niet langer in het PATH. Hun aanwezigheid kan de toepassing dus niet onstabiel maken. Als er problemen zijn met de nieuwe versie, dan kan men de vorige versie blijven gebruiken door de symbolische link te laten verwijzen naar de vorige versie. Als de nieuwe versie stabiel bevonden is, kan de systeem administrator de oude versie verwijderen. De uninstall procedure van een toepassing omvat het verwijderen van zijn directory en zijn symbolische link. Deze actie heeft geen effect op de bibliotheken van andere toepassingen of systeembibliotheken.
" ! $ '% (
Wanneer een onderneming een softwarepakket kiest, wil men iemand verantwoordelijk kunnen houden bij gebrekkige werking. Linux biedt echter geen garantie. Waarom zou een organisatie zich blootstellen aan een risico zonder daarbij een rechtskundige toevlucht te hebben? Ten eerste moeten we inzien dat als we betalen voor commerciële software, we niet betalen voor het product, maar dat we betalen voor een licentie om het product te gebruiken. We verwijzen hier naar de software license agreement die bij elk softwarepakket terug te vind en is. 17
Hoofdstuk 3 - Elementaire Vereisten
18
In 1998 werd bijvoorbeeld er een bug gevonden in het Microsoft Acces 97 database product. Onder bepaalde omstandigheden konden gegevens in een verkeerd record geplaatst worden. De consequenties van deze bug kunnen gemakkelijk voorgesteld worden bij de medische gegevens van een ziekenhuis of de politiedatabase. De gedupeerden konden echter geen rechtskundige toevlucht nemen. De licentie-overeenkomst vermeldde uitdrukkelijk dat Microsoft niet verantwoordelijk is voor corruptie van data veroorzaakt door hun software. Het klinkt raar dat een database product niet verantwoordelijk is voor data, maar de licentievoorwaarden van Microsoft zijn onaanvechtbaar. Daarin wordt vaak elke verantwoordelijkheid voor al dan niet correct werken van de software resoluut van de hand gewezen, en toch blijven gebruikers vrolijk klikken op ‘I Agree’ knoppen wanneer ze nieuwe software installeren. Als commerciële software niet meer rechtskundige bescherming biedt dan vrije software, dan zal het gebruik van vrije software i.p.v. commerciële alternatieven het risico niet verhogen.
% $ '
Eerder werd vermeld dat er geen bedrijven achter Open Source producten staan in de strikt juridische zin. We gaan daarbij even voorbij aan bedrijven zoals IBM, HP en Compaq die supportcontracten hebben liggen voor 24 uur maal 7 dagen per week Linux ondersteuning. Er is een groot aantal bedrijven dat bestaat rond Open Source software. Merkwaardig daaraan is eigenlijk dat mensen een bedrijf kunnen runnen rond een gratis product. Dit is ook meestal het slechtst begrepen aspect rond Open Source software. Het business model rond Open Source software concentreert zich op de diensten er omheen. Daarbij kan men denken aan functies als installatie, ondersteuning, opleiding of ontwikkeling van toepassingen. Goed bekeken is het traditionele software ontwikkelmodel er één dat nooit oneindig lang stand kan houden. Het is gewoon onvermijdelijk dat iemand vroeg of laat zijn software gaat weggeven (concurrentie op prijs) en zijn diensten vervolgens verhuurt. Daarbij komt dat software het enige product is dat tegen minimale inspanning oneindig vaak gekopieerd kan worden zonder kwaliteitsverlies. Dus productie kost tijd, maar exploitatie is eenvoudig. De diensten rond softwareproducten zijn al jaren een stabiele factor in het geheel. Bedrijven als RedHat, Suse, Caldera en LinuxCare leveren bijvoorbeeld allemaal tegen betaling consultancy en ondersteuning op hun Linux distributies. Dat de Open Source wereld een wisselwerking is tussen bedrijven enerzijds en de Open Source gemeenschap op het Internet anderzijds blijkt uit het feit dat deze bedrijven in reactie op het exploiteren van Open Source software een deel van hun inkomsten weer besteden aan het ondersteunen van diezelfde Open Source. Vele bekende ontwikkelaars hebben een gewoon arbeidscontract bij één van deze bedrijven waar ze worden betaald om te werken aan hun project.
' .)2 / (9
1 % 91
;+ Bedrijven zijn steeds meer afhankelijk van hun IT-systemen, soms zelfs in die mate dat het bedrijf zonder IT volledig lam ligt. Bepaalde services zijn van cruciaal belang voor het functioneren van een onderneming. We denken bijvoorbeeld aan de intranet site, de File server, de Mail server en de DNS server. Availability is een belangrijk element in een omgeving waarin systemen toegankelijk zijn vanuit de hele wereld, op eender welk uur overdag en ’s nachts, en waarbij een storing in de service kan leiden tot een daling in de omzet en een beschadiging van de reputatie van de betreffende onderneming.
18
Hoofdstuk 3 - Elementaire Vereisten
19
'# # %' % High Availability, anders gezegd: ‘Highly Available’, is een paraplubegrip voor sterk uiteenlopende eigenschappen van een besturingssysteem. Sommigen maken een onderscheid tussen beschikbaarheid en fouttolerantie. In deze thesis zullen deze twee termen als onderling verwisselbaar beschouwd worden en zullen deze verwijzen naar een weergave van de verhouding tussen de tijdsduur dat het systeem operationeel (beschikbaar) is en de verstreken tijdsduur. Er wordt hierbij speciaal aandacht besteed aan de mogelijkheid om een bepaald niveau van service aan te bieden, zelfs tijdens een situatie waarin één of meerdere componenten van het systeem hebben gefaald. Dit falen kan ongepland zijn (bijvoorbeeld een server crash) of gepland zijn (bijvoorbeeld bij onderhoud). Ondernemingen zijn niet geïnteresseerd te weten dat de stroom uitvalt, de CPU oververhit is, of het systeem ‘hangt’ door een defecte netwerkkaart. Het enige waar de manager, de werknemers en de klanten in geïnteresseerd zijn, is dat de ‘service’ continu beschikbaar is. Het woord ‘service’ is hier van belang. Deze service wordt uitgevoerd door een machine. Het ‘redirecten’ van de service en requests naar een andere gezonde machine is de kunst van High Availability.
$ $ !! !( $ ! $ ' " % "
Availability is een belangrijk doel van de Linux gemeenschap. Omdat vele ontwikkelaars Linux trachten te verbeteren, is het meer waarschijnlijk dat bugs gevonden en verbeterd worden waardoor het systeem langer beschikbaar blijft. Betrouwbaarheid en stabiliteit spelen dus een belangrijke rol bij het evalueren van de beschikbaarheid. Benchmarks4 tonen aan dat de beschikbaarheid van Linux hoger is dan Windows en UNIX. De benchmark van Bloor Research evalueerde de uptime/downtime van Linux en Windows NT gedurende een periode van één jaar. Gedurende die tijd crashte Linux één keer omwille van een defecte harde schijf (downtime: 4 uur). Windows NT crashte 68 keer omwille van hardware problemen, geheugen, bestandsfouten en enkele niet nader omschreven problemen (downtime: 65 uur). De beschikbaarheid van Linux was dus 99,95% (4 uur downtime op een totaal van 365 dagen) versus Windows NT met 99,26% (65 uur downtime op een totaal van 365 dagen). In een gelijkaardige benchmark bepaalde de Giga Information Group de beschikbaarheid van UNIX op 99,8% en Windows NT op 99,2%.
# ! % $ ! (
De vuistregel bij het reduceren van (on)geplande downtime is het elimineren van ‘single points of failure’ (SPOF) in het systeem door het toevoegen van ‘redundancy’. Bijvoorbeeld redundant power supplies en RAID (Redundant Array of Independent Disks). Als een firma vertegenwoordigd wordt door één enkele Linux box met Apache, dan is dit het ‘single point of failure’. Als een database enkel voorkomt op één enkele PostgreSQL server, dan is dit het ‘single point of failure’. Als de toegang tot het internet gebeurt via één enkele router, dan is dit het ‘single point of failure’ en als een website één enkele link tot het internet heeft, dan is dit tevens het ‘single point of failure’. De doelstelling is het verbergen van defecten voor de gebruikers op een manier zodat deze gebruikers hun activiteit gewoon kunnen verderzetten. De eliminatie van ‘single points of failure’ kan enkel gebeuren door bijkomende resources te voorzien die gebruikt kunnen worden wanneer een falen plaatsvindt. Het is de rol van ‘high availability’ (HA) oplossingen deze resources te ontwerpen en te beheren zodat de service toegankelijk blijft voor gebruikers bij een falen. Dit kan een volledige service zijn, een 4
Laura DiDio, “Deciding factors – Operating Systems”, CIO Magazine, 1 Februari 2000 en Frans Godden, “How do Linux and Windows NT Measure Up in real Life?”, Gnet, Januari 2000.
19
Hoofdstuk 3 - Elementaire Vereisten
20
beperkte service of een service die de gebruiker adviseert om later terug te komen (Dit is laatste is steeds beter dan een `` HTTP 404 server unreachable'' foutmelding). Recente verbeteringen aan de functionaliteit van Linux, tezamen met de medewerking van enkele grote bedrijven, hebben geleid tot drastische verbeteringen op gebied van beschikbaarheid. Een steeds groeiend aanbod van betaalbare, industry-standard besturingssystemen, clustering en middleware verzorgt een hoge mate van beschikbaarheid in de Linux architectuur.
$ # %' % ! '% ! ( # !! $
Het meest elementaire niveau van protectie van de beschikbaarheid wordt geleverd door systemen met kenmerken (meestal hardware gerelateerd) die helpen om een server langer operationeel te houden. Voorbeelden zijn een uninterruptible power supply (UPS) of een mirrored disk (RAID). Deze systemen bieden bescherming tegen hardware falen, maar bieden weinig of geen bescherming voor de applicaties of de netwerkomgeving op het systeem. De meeste commerciële High-Availability producten zijn erg duur. Daarom gaan we dieper in op een goedkoper alternatief om een hoge graad van beschikbaarheid te bereiken. Hiervoor wordt gebruik gemaakt van goedkope hardware en Open Source software. Meestal wordt High Availability bekomen door clustering. Voor een bespreking van clustering mogelijkheden op Linux wordt er verwezen naar het deel ‘Schaalbaarheid’. Het Linux High Availability project (linux-ha.org) is het centrum voor High Availability voor Linux. De missie van dit project is: “Provide a high-availability (clustering) solution for Linux which promotes reliability, availability, and serviceability (RAS) through a community development effort”. Het Linux-HA project vormt de basis van de meeste HA oplossingen op het Linux platform. Tegenwoordig is eveneens een samenwerkingsverband met Linux Virtual Server (LVS, beschikbaar op www.linuxvirtualserver.org), omdat de doelen van Linux-HA en LVS complementair zijn. Eén van de Linux-HA producten, Heartbeat (linux-ha.org/comm/#Heartbeat), maakt tegenwoordig deel uit van de meeste Linux distributies zoals SuSE Linux, Conectiva Linux en Mandrake Linux. Heartbeat is een veel gebruikte methode, die passieve stand-by genoemd wordt, en erin bestaat om één computer alle verwerkingslast te laten afhandelen terwijl de andere computers inactief zijn en stand-by blijven om de taak over te nemen als de primaire computer het laat afweten. Voor het coördineren van de machines verzendt het actieve of primaire systeem periodiek een ‘hartslagbericht’ naar de stand-by machine. Heartbeat is een monitor voor deze hartslagen die verzonden worden tussen de nodes in een cluster. Komen deze berichten niet meer aan, dan veronderstelt het stand-by systeem dat de primaire server het heeft laten afweten en neemt dadelijk de taak over. De Mission Critical Linux5 HA oplossing is eveneens gebaseerd op Linux-HA, net zoals VA Linux UltraMonkey. UltraMonkey is samen met Super Sparrow het sleutelcomponent van Vanessa (VA Network Enhanced Scalable Server Architecture, beschikbaar op vanessa.sourceforge.net), dewelke High Availability en Load Balancing oplossingen levert. Ultra Monkey (ultramonkey.sourceforge.net) levert High Availability en Load Balancing van TCP/IP en UDP/IP gebaseerde services op een LAN (Local Area Network). Super Sparrow levert een mechanisme voor load balancing van internetverkeer. Recentelijk is het lijstje van HA oplossingen voor Linux uitgebreid met het SGI FailSafe project (oss.sgi.com/projects/failsafe). 5
linuxpr.com/releases/1488.html
20
Hoofdstuk 3 - Elementaire Vereisten
21
' " % ' ( .)% 6
1 % 91
;+ Een e-business netwerkinfrastructuur vereist een zorgvuldig monitoring en management. Serviceability is een term die verwijst naar de mogelijkheid tot determinatie van problemen. Dit kan zowel corrigerend onderhoud als preventief onderhoud zijn. Het doel is om snel alle nodige informatie beschikbaar te stellen om zo snel mogelijk een diagnose te kunnen stellen. Dit verbetert de availability en reduceert de kost van service.
'# #& %
Serviceability omvat een breed scala aan tools, zoals bijvoorbeeld kernel tracing en kernellevel debugging, geautomatiseerde panic dump capture, krachtige kernel crash analyse tools, en uitgebreide documentatie en training voor systeemprogrammeurs die de problemen zelf wensen op te lossen. Serviceability kan eveneens verwijzen naar speciale coderingsconventies (zoals bijvoorbeeld "eye-catchers" in dynamisch toegewezen blocks zodat dump analyse kan bepalen hoe het geheugen gebruikt wordt) en gesofistikeerde logging van hardware error events zoals machine checks en disk errors. Linux beschouwt bovenstaande gereedschappen niet als standaard features. Het zijn toevoegingen die verstrekt worden door onafhankelijke programmeurs, third party ondernemingen en software distributeurs zoals Red Hat. In de toekomst zullen administratieve tools meegeleverd worden met de kernel. De Linux 2.4.x kernel was reeds een stap in die richting: het levert een Logical Volume Manager (LVM) om verscheidene disk-management handelingen te volbrengen. In het bijzonder levert LVM spanning, resizing en general management van multiple disk drive systems en disk arrays vanuit één centrale console.
#&' % "!!% # !! $
De administratie van het geheel is natuurlijk een uitgebreide taak. Om deze taak te verlichten kunnen er verschillende hulpmiddelen geschreven en/of gebruikt worden. Hun doel moet altijd zijn dat de systeembeheerder snel een goed overzicht kan krijgen van de werking van het systeem en de verschillende services. Zo zijn er bijvoorbeeld mogelijkheden tot het instellen en afdwingen van quota’s op user accounts; monitoring met behulp van bijvoorbeeld MRTG (http://www.mrtg.org); en authentificatie van gebruikers met behulp van PAM6 (pam.sourceforge.net en www.us.kernel.org/pub/linux/libs/pam/modules.html). SGI7 heeft heel wat Open Source tools hieromtrent ontwikkeld: kernel tracing, debugging, krachtige crash analyse tools en andere gereedschappen zoals kernel lock metering en kernel profiling. Deze tools zijn beschikbaar als download op oss.sgi.com/projects. Daarnaast kan MRTG (www.mrtg.org) gebruikt worden om trends op lange termijn over het gebruik van de ressources te verkrijgen, en BigBrother (bb4.com) om eventuele pannes te melden via email. Tevens biedt Linux enkele beheer/configuratie systemen zoals bijvoorbeeld Linuxconf (www.solucorp.qc.ca/linuxconf), HardDrake (www.linux-mandrake.com/harddrake) en Webmin (www.webmin.com).
6
Om de link tussen PAM en LDAP te leggen zijn er twee modules : pam_ldap (www.padl.com/pam_ldap.html) en nss_ldap (www.padl.com/nss_ldap.html). De eerste zorgt voor toegangs-controle en wachtwoordbeheer. De tweede voor gebruikersbeheer (info, locatie homedir, groep, hosts,...). 7 bron: Simon Patience, Silicon Graphics, Inc -
[email protected]
21
Hoofdstuk 3 - Elementaire Vereisten
22
Buiten deze Open Source tools zijn er ook enkele commerciële beheer gereedschappen beschikbaar voor Linux, waarvan IBM Tivoli en Computer Associates Unicenter TNG waarschijnlijk de belangrijksten zijn. Beiden bieden een geïntegreerde en soepele beheeroplossing waardoor ICT medewerkers hun informatica veilig en efficiënt kunnen beheren. Computer Associates Unicenter TNG (www3.ca.com/solutions/solution.asp?id=315) levert een schaalbare, flexibele, volledig geautomatiseerde en geïntegreerde oplossing die instaat voor het Netwerk and Systeem Management, geautomatiseerde operations, IT Resource Management, Database Management, Netwerk infrastructuur Management en Applicatie Management. IBM Tivoli (www-3.ibm.com/software/is/mp/linux/software/products/tivoli.html) is een gelijkaardige beheeroplossing die ondersteuning biedt voor het beheren van availability, configuration, security, privacy, storage en performance van de Netwerk infrastructuur. Andere leveranciers van Servicability tools voor Linux zijn: MissionCriticalLinux (www.missioncriticallinux.com), Fujitsu-Siemens Primary System Management Tools (http://www.fujitsu-siemens.com/primergy/en/sysmgmt/index.html), Realtech theGuard! Agent (www.realtech.de/international_e/html/produkte/erm/applic_manage/guard/) en Siemens myAMC (www.myamc.de).
22
Hoofdstuk 3 - Elementaire Vereisten
23
*"$(92 1 % 91
; ) " ( '+ Linux is een relatief nieuw besturingssysteem dat voornamelijk ontwikkeld werd door vrijwillige programmeurs. Tot voor kort beschikten deze ontwikkelaars niet over high-end, dure hardware. Het is dus niet verwonderlijk dat velen Linux zien als een low- tot mid-range besturingssysteem - een categorie waarin Linux het overigens erg goed doet. Grote organisaties hebben recentelijk high-end systemen ter beschikking gesteld van onafhankelijke Linux ontwikkelaars zodat Linux nu steeds meer uren draait op high-end hardware.
' # $ % $'
In de context van deze thesis verwijst schaalbaarheid (scalability) naar de mogelijkheid om services te laten groeien samen met de activiteiten van de onderneming, en dit op een manier die transparant is voor de eindgebruikers. Anders geformuleerd: schaalbaarheid is de relatieve capaciteit van een oplossing om grote hoeveelheden data of transacties te leveren aan progressief groeiende stromen van data, zonder daarbij betrouwbaarheid (zie eerder: RAS) op te offeren. Dit vereist de mogelijkheid om services uit te breiden buiten één enkel onderstel. Er wordt een onderscheid gemaakt tussen verticale en horizontale schaalbaarheid. Verticale schaalbaarheid wordt gerealiseerd door het toevoegen van processoren en/of geheugen aan de server computer. Praktische limitaties binnen de huidige Linux 2.4.x kernel beperken de verticale schaalbaarheid tot eight-way multiprocessing. Dit probleem kan opgelost worden door het introduceren van horizontale schaalbaarheid. Horizontale schaalbaarheid wordt gerealiseerd door het toevoegen van servers, waarbij gebruik gemaakt wordt van load balancing en clustering. Op die manier maakte Shell een Linux cluster van 128 servers met elk 8 processoren, een totaal van 1024 processoren9.
'% # $ % $ $ '
Onderzoek door Gartner Group10 heeft aangetoond dat ondernemingen vier stadia trotseren alvorens een volwassen e-business deelnemer te worden: Presence, Interaction, Transaction en Transformation. Het spreekt voor zich dat de aangenomen infrastructuur in de vroege stadia in staat moet zijn om de ontwikkelingen doorheen de latere stadia te ondersteunen. Zoals eerder reeds vermeld, verwijst schaalbaarheid of scalability naar de mogelijkheid om services te laten groeien, samen met deze steeds wijzigende behoeften van de onderneming. •
Aanwezigheid (Presence): In het eerste stadium richt de onderneming zich vooral op het verstrekken van informatie voor klanten en het publiceren van marketing voor de wijde wereld, en/of interne informatie zoals informatiebibliotheken en persmededelingen. Dit wordt bereikt door het inzetten van Web information servers. Deze servers zijn volledig gescheiden van production information services en de hoofd business processen van de onderneming. Deze Web information servers worden beheerd door het communicatie departement.
•
Interactie (Interaction): In het tweede stadium, voegen ondernemingen nieuwe features toe aan de Web-gebaseerde informatieverstrekking die gemaakt werd in het eerste stadium. Dit zijn meestal nieuwe, meer interactieve applicaties die gebouwd zijn rond knowledgegebaseerde databases die toegankelijk zijn via intranets of extranets. Deze Web-gebaseerde applicaties worden dan meestal gebruikt voor training, help desk, interne e-mail en dergelijke. In dit stadium zijn Web servers nog steeds onafhankelijk van de centrale informatiesystemen, maar dragen wel bij tot het delen van expertise en kennis in de organisatie.
8
bron: http://www7b.boulder.ibm.com/wsdd/library/techarticles/hvws/scalability.html bron: http://www-916.ibm.com/press/prnews.nsf/topic/392EE1B6CD128917852569B3005516DA 10 bron: http://governing.com/gartner/gartner_intro.html en Hervé Mouren (President, Bull Infrastructure & Systèmes) op Paris Linux Expo 2002, presentatie op 30 januari 2002
9
23
Hoofdstuk 3 - Elementaire Vereisten
24
•
Transactie (Transaction): Het derde niveau wordt gekarakteriseerd door e-Commerce applicaties. Deze laten toe dat verscheidene processen van de operationele bedrijfsvoering (productontwikkeling, aankoop, productie, marketing en verkoop, en in sommige gevallen het beheer van relaties met klanten en leveranciers) beter geïntegreerd kunnen worden. Deze applicaties kunnen zowel business-to-business (“B2B”) als business-to-consumer (“B2C”) zijn en/of een ontwikkeling in Enterprise Resource Planning (ERP) of Electronic Data Interchange (EDI) applicaties vertegenwoordigen.
•
Transformatie (Transformation): Het vierde stadium, e-business in z’n geheel, kenmerkt zich door de mogelijkheid tot interactie in real time via het Internet tussen klanten en leveranciers doorheen de supply chain. Er worden nieuwe e-business applicaties gebruikt voor het mogelijk maken en beheren van relaties tussen de functies en processen van de onderneming en die van haar klanten, leveranciers, distributeurs, omgeving en sector. Elk van deze entiteiten zijn nauw betrokken bij het totale proces van ontwerp, productie, distributie, verkoop, facturatie en klantenservice (cfr. waardeketen). Nieuwe e-business applicaties zoals Customer Relationship Management (CRM) of Supply Chain Management (SCM) transformeren de organisatie door het integreren van haar informatiesystemen met deze van haar externe partners.
% $ % $ ' $ % #
Verticale schaalbaarheid wordt gerealiseerd door het toevoegen van processoren aan de server. Web server implementaties vereisen meestal two-way multiprocessing. Applicatie servers vereisen ofwel two-way, ofwel four-way systemen. Database applicaties werken het best, om aanvaardbare service handling en consistentie gedurende back-end processing te garanderen, op eight-way configuraties11. De meeste huidige Linux distributies zijn uitgerust met versie 2.4.x van de Linux kernel, dewelke zich kenmerkt door onder meer een sterk verbeterde schaalbaarheid. Voor netwerk applicaties toont de SPECWeb99 (www.specbench.org) benchmark aan dat deze kernel zich kan schalen tot en met eight-way SMP (symmetyrische multiprocessing) machines. De distributies met kernel 2.4.x ondersteunen in theorie tot 64 GB geheugen op x86 hardware en bestanden tot een grootte van 2 TB. Sommigen zien eight-way operatie twijfelachtig, gegeven het structureel ontwerp van de 2.4.x kernel. Linux implementaties in bedrijven zijn, volgens deze bronnen, voorlopig beperkt tot lightweight databases en het gebruik van application servers. Deze oordelen zijn echter het gevolg van de beperkingen van de 32-bit processing environment. De opkomende 64-bit systeemarchitecturen (bijvoorbeeld Intel® Itanium™ processor) houden aanzienlijke performance verbeteringen in die een betrouwbare aanpak van eight-way multiprocessor onder de Linux 2.4.x kernel tot een realiteit maken. Linux distributies die nog uitgerust zijn met versie 2.2.x van de Linux kernel hebben een minder goede ondersteuning voor SMP, grote bestanden en een groot geheugen. Scheduler issues en andere beperkingen zijn de oorzaak van deze praktische limitatie. Uitzonderingen zoals Turbolinux zijn uitgerust met een gemodificeerde kernel die wel grote bestanden en geheugens tot 4 GB in grootte kan ondersteunen. Hoewel sommige systeemintegratoren melding geven van betrouwbare four-way back-end database processing onder Linux 2.2.x kernel, vereist dit meestal modificaties aan de kernel.
11
bron: Linux Scalability: The Enterprise Question, Online, Internet, www.intel.com/internetservices/intelsolutionservices/downloads/linux_scalability.pdf
beschikbaar
op
24
Hoofdstuk 3 - Elementaire Vereisten
25
Vandaag wordt verticale schaalbaarheid in Linux toegepast tot en met eight-way multiprocessing. Scheduler issues en andere beperkingen zijn de oorzaak van deze praktische limitatie. Wanneer de behoefte groter is dan eight-way multiprocessing, dan kunnen we dit oplossen door deze machines horizontaal te schalen met behulp van load balancing en clustering.
! ! ( " '% % $ $ ! '% $ '%
Horizontale schaalbaarheid wordt gerealiseerd door het toevoegen van servers, waarbij gebruik gemaakt wordt van load balancing en clustering. Dit komt de beschikbaarheid (availability) ten goede (cfr. RAS eerder in dit hoofdstuk). Load balancing12 De vraag naar load balancing doet zich meestal voor bij database/Web toegang wanneer clients simultaan verzoeken richten aan een server. Meerdere identieke servers waarbij verzoeken naar de minder overladen server worden doorgestuurd zijn wenselijk als veel clients simultaan verzoeken richten aan een server. Dit kan worden bereikt via Network Address Translation technieken (NAT13) waarvan IP-masquerading een subset is. Netwerkbeheerders kunnen een enkele server, die Webservices of enige andere applicaties verleent, vervangen door een logische samenbundeling van servers die een algemeen IPadres delen. Inkomende connecties worden doorgestuurd naar een bepaalde server door gebruik te maken van het load-balancing algoritme. De virtuele server herschrijft inkomende en uitgaande pakketjes om de clients te laten denken dat er slechts één server bestaat. Voorbeelden van Load Balancing op Linux zijn terug te vinden in het ANTS Load Balancing System (unthought.net/antsd) en VAnessa (vanessa.sourceforge.net). Clustering Een cluster is een groep onderling verbonden, volledige14 computers of andere resources (bijvoorbeeld storage devices en redundant interconnections) die samenwerken als een verenigde verwerkingsvoorziening die de illusie kan wekken dat het één machine is. Populaire toepassingen van clusters zijn het ontbinden van een getal in priemfactoren, of het zoeken naar aliens met SETI at home. De voordelen van een cluster zijn de schaalbaarheid, de hoge beschikbaarheid en de superieure prijs-prestatieverhouding. •
Schaalbaarheid: een cluster is zo geconfigureerd dat het mogelijk is in kleine stappen nieuwe systemen toe te voegen aan de cluster. Een onderneming kan daardoor beginnen met een bescheiden systeem en dat uitbreiden naarmate haar eisen toenemen, zonder een grote upgrade te moeten uitvoeren, waarbij een bestaand klein systeem wordt uitgebreid naar een groter systeem door nodes (niet noodzakelijk van hetzelfde type) toe te voegen.
•
Hoge beschikbaarheid: Aangezien elk knooppunt in een cluster een autonome computer is, gaan diensten niet verloren als één knooppunt het laat afweten. Bij veel producten wordt de foutbestendigheid automatisch afgehandeld in software.
•
Superieure prijs-prestatieverhouding: dankzij het gebruik van standaardbouwstenen is het mogelijk tegen lagere kosten een cluster samen te stellen dat dezelfde of een grotere rekenkracht heeft dan één grote machine.
12
Software en extra info: http://www.lcic.org/load_balancing.html Linux IP-NAT informatie is te vinden op: http://www.csn.tu-chemnitz.de/HyperNews/get/linux-ip-nat.html 14 Het begrip ‘volledige computer’ verwijst naar een systeem dat zelfstandig kan werken, los van het cluster; in de literatuur wordt elke computer in een cluster meestal een node of knooppunt genoemd. 13
25
Hoofdstuk 3 - Elementaire Vereisten
26
Case voorbeeld: Google.com Google is een zoekmachine op het Internet. Dagelijks krijgt het ongeveer 150 miljoen zoekacties te verwerken. Voor de verwerking hiervan vertrouwt Google op een Linux cluster van meer dan 10.000 Red Hat Linux servers. Bron: www.google.com/press/highlights.html Verscheidene clustering opties kunnen aangewend worden ter verbetering van de scalability (schaalbaarheid) van Linux. De Beowulf tools (www.beowulf.org) worden bijvoorbeeld gebruikt voor scientific computing clusters. Beowulf is echter niet geschikt voor e-business omwille van het ontbreken van de mogelijkheid tot transacties. Buiten Beowulf zijn er ook nog andere clustertechnieken beschikbaar voor Linux. Zo zijn er bijvoorbeeld Fujitsu– Siemens PRIMECLUSTER voor Linux (www.fsc-usa.com/rcproducts/rclinux.shtml), SteelEye LifeKeeper voor Linux (www.steeleye.com), Mission Critical Linux Convolo (www.missioncriticallinux.com/products/convolo/), MOSIX (www.mosix.org), SGI Failsafe (oss.sgi.com/projects/failsafe/) en Oracle Real Application Cluster (www.oracle.com). PVM (Parallel Virtual Machine), MPI (Message Passing Interface), LAM-MPI (Local Area Multicomputer) worden in wetenschappelijke middens gebruikt bij het oplossen van grote geheugen- en cpu-intensieve simulatieproblemen. PVM, MPI en aanverwanten worden nauwelijks gebruikt in de bedrijfswereld. De SAN-fabric VIA message-passing architectuur krijgt echter steeds meer voet aan de grond in bedrijven en is beschikbaar voor Linux onder de naam M-VIA.
(
%
&
& % ' &
Data centers steunen steeds meer op high-end database applicaties. In het kader van ebusiness zijn database services, geleverd in een netwerk, onmisbaar. Omwille van deze reden zal de mogelijkheid van Linux, als e-business platform, bepaald worden door z’n mogelijkheid om mee te schalen met de vraag naar database taken. Beveiliging, betrouwbaarheid, data throughput, failure-handling mechanismen en gelijkaardige afwegingen spleen een belangrijke rol in een typisch e-business scenario. De complexe systeemvereisten van grote database applicaties stellen een belangrijke uitdaging aan de scalability van de Linux kernel. Er moet hierbij rekening gehouden worden met de volgende factoren: ondersteuning voor Symmetric MultiProcessor (minimum 4-way, maar 8-way aanbevolen), efficiënte netwerk communicatie, mogelijkheid tot het beheren van systeembronnen (bijvoorbeeld controle van data caches), ondersteuning voor Large-volume geheugen, en ondersteuning voor High-speed I/O operaties. Een mogelijke oplossing wordt geboden door Linux distributies die geoptimaliseerd zijn voor database applicaties. Zo bieden Red Hat en SuSE (www.suse.de/de/support/oracle) een Linux distributie aan die volledig geoptimaliseerd is voor Oracle 9i. Deze distributies werden uitvoerig getest door Oracle en zijn goedgekeurd met een Oracle Certificaat. Naast de Oracle Parallel Server, zijn er ook nog bijvoorbeeld DB2 UDB en Informix.
26
Hoofdstuk 3 - Elementaire Vereisten
$ 91
;
15
27
) "$( 6 % '+
Beveiliging is nu een basisvereiste omdat globale ICT inherent onveilig is. Bij het bepalen van een beveiligingsbeleid moet er een balans gevonden worden zodat het systeem nog steeds bruikbaar is en toch veilig voor de doeleinden. Omtrent de veiligheid van Open Source zijn zowel argumenten voor als tegen. Het enige wat deze argumenten gemeen hebben is dat ze meestal subjectief en controversieel zijn. Sommigen beweren dat de openbaarheid van broncode van Open Source programma' s, zoals Apache, en besturingssystemen zoals Linux, een bedreiging is voor de veiligheid van het systeem. Ze omschrijven Open Source als een ‘open’ uitnodiging voor hackers. Iedereen kan de broncode van Open Source software inzien en zo fouten vinden waarmee ze in het systeem binnen kunnen treden en schade aan kunnen richten. Bij een Closed Source product is die code niet vrij beschikbaar. Men kan de code niet zien en bijgevolg ook geen fouten vinden. Tegenstanders van Open Source waarschuwen eveneens voor het gevaar dat kwaadwillige ontwikkelaars achterpoortjes (cfr. Trojaanse paarden) verstoppen in de broncode. Bovenstaande standpunten kloppen ten dele. Inderdaad, iedereen kan de code inzien en zo fouten opsporen om mee het systeem binnen te treden. Echter, op hetzelfde moment wordt de code van Linux continu gecontroleerd op fouten. Beter bekend als de “ many eyeballs” theorie, verklaart het wat ieder van ons instinctief aanvoelt: een besturingssysteem of applicatie zal veiliger zijn wanneer men de code kan inspecteren, delen met experts en andere leden van de gemeenschap, en potentiële problemen kan identificeren en oplossen. Of zoals Eric Raymond vertelde op het FOSDEM16 2002 congres: “Given enough eyeballs, all bugs are shallow”. Als er een fout gevonden wordt is deze soms al binnen een paar uur(!) opgelost en staat er een nieuwe versie op Internet. Zonder de broncode zou men afhankelijk zijn van de software leverancier – en zijn strategische en economische agenda – voor het oplossen van problemen. Dergelijke leveranciers doen er bovendien veel langer over om deze ` bugfixes' te maken. Het varieert van een paar dagen tot een paar jaar tot misschien wel nooit! Doordat minder ontwikkelaars toegang hebben tot de broncode, kunnen er immers minder middelen besteed worden aan de ‘bugfix’. Het laatste gedeelte van het bovenstaande standpunt baseert zich op de `security through obscurity' stelling. Door alle informatie te verbergen over het systeem (door bijvoorbeeld niet de broncode erbij te leveren) hoopt men dat het veilig is. Schijn bedriegt echter. Er zijn genoeg mensen die proberen een ` closed source' systeem te hacken, en dat lukt maar al te vaak. Omdat het systeem ` closed source' is, kan de systeembeheerder zelf ook de fouten niet herstellen, maar is overgeleverd aan de service (of het gebrek daaraan) van de fabrikant van de software. ` Security through obscurity' , het onthouden van informatie over het systeem aan de gebruiker om zo ` veilig' proberen te zijn werkt niet. ` Veilige code' h eeft immers niets e verbergen. t De ‘security through obscurity’ stelling is niet het enige wat in het nadeel speelt van commerciële software leveranciers. De noodzaak om een software product snel op de markt te brengen, en hierbij een breed publiek te bereiken, zijn overwegingen die de veiligheid nadelig beïnvloeden. Kwaliteitscontroles worden dan dikwijls genegeerd. Uit een interne Microsoft memo, gepubliceerd door ZDNet, bleek bijvoorbeeld dat Microsoft Windows 2000 in februari van datzelfde jaar verspreid werd met meer dan 63.000 gekende bugs, en waarschijnlijk nog veel meer ongekende bugs. Closed Source software die zich richt op een breed publiek omvat meer functionaliteit dan wat de gebruiker ervan nodig heeft. Als er een bug is in één of meerdere van deze features, bestaat er een kans dat iemand deze functionaliteit(en) kan misbruiken. Bij Closed Source software is het meestal echter onmogelijk om ongewenste functionaliteit(en) te verwijderen met als resultaat dat het systeem meer risico inhoudt, zonder hierbij een voordeel voor de gebruiker te bieden. 15 16
http://www.linuxsecurity.com/ FOSDEM: Free Software & Open Source Developers Meeting
27
Hoofdstuk 3 - Elementaire Vereisten
28
Jay Beale, hoofdontwikkelaar bij Bastille Linux (www.bastille-linux.org), streeft naar het meest veilige, maar toch nog bruikbare systeem, door wat hij noemt ‘minimalisme’: "If you can bring your system down from 10 functions to three functions, there's less of a chance to be exploited. This is why we tighten.". Beale geeft vijf mogelijkheden17 om dit te realiseren met Linux: •
Het opzetten van een firewall, zoals later in deze thesis aan bod komt.
•
Verminder het aantal privileged programs. Applicaties die de gebruiker de mogelijkheid geven om wijzigingen aan het systeem aan te brengen moeten zoveel mogelijk vermeden worden.
•
Snoei in de configuratie van de overblijvende programma’s. De meeste netwerk daemons laten bijvoorbeeld toe dat de mogelijkheden tot toegang en interactie geconfigureerd kunnen worden. Bij de installatie van Mandrake Linux kan de gebruiker bijvoorbeeld kiezen om extra modules te installeren voor een FTP server, een Web server en zelfs een e-mail server. Als er een bug is in één of meerdere van deze features, bestaat er een kans dat iemand deze feature(s) kan misbruiken. Het feit dat Linux in onafhankelijke componenten wordt geleverd en de broncode van elk component beschikbaar is, biedt de mogelijkheid om elk Linux systeem zo krachtig en veilig te configureren als de behoeften van de onderneming vereisen.
•
Reduceer het aantal paths to root. Elke gebruiker (user) van een systeem krijgt een nummer toegewezen, een UserID. Root is altijd UserID 0 (zero). Sommige programma’s worden automatisch uitgevoerd als root. Dit is een potentiële vulnerability. Het reduceren van dit soort programma’s reduceert het aantal "paths to root."
•
Het opzetten van intrusion detection. "Tripwire” (www.tripwire.com), een applicatie die kan helpen bij het opsporen van indringers, behoort hierbij tot de mogelijkheden.
Onderwerpen, zoals de manier waarop het besturingssysteem ontworpen is en de security architectuur onderhouden wordt, zijn zeer belangrijk bij de keuze van het besturingssyteem. Veel van de kwaliteit van de security is echter ook afhankelijk van de kwaliteit van de systeembeheerder. Empirisch bewijs omtrent de veiligheid van software is niet gemakkelijk te vinden. Vele anekdotes en gelijkaardige ‘bewijzen’ die op nieuwsgroepen teruggevonden kunnen worden, zijn hier buiten beschouwing gelaten, vermits deze bronnen waarschijnlijk niet objectief zijn. We beschouwen vier bronnen van bewijs als betrouwbaar: premies voor een verzekering tegen hacking, de BugTraq vulnerability statistieken, virus-tellingen en een log van web site defacements.
# $ '
De verzekering tegen aanvallen van crackers (kwaadwillige hackers) is recentelijk beschikbaar gekomen. J.S. Wurzler (www.jswum.com) is één van de verzekeringsmakelaars die een dergelijke polis aanbiedt. Wanneer echter een Microsoft Windows configuratie verzekerd moet worden, ligt de premie ongeveer 25% hoger dan een vergelijkbare andere configuratie op basis van UNIX of Linux. J.S. Wurzler veronderstelt dus dat het risico tot uitbetalen groter is wanneer een klant Microsoft Windows gebruikt. Andere verzekeringsmakelaars bieden op het moment dat deze thesis geschreven werd nog geen dergelijke polissen aan, of schatten het risico geval per geval. 17
bron: http://www.newsforge.com/article.pl?sid=02/01/29/1635245&mode=thread
28
Hoofdstuk 3 - Elementaire Vereisten
29
! "$#$ De BugTraq Web site (www.securityfocus.com/frames/?content=/vdb/stats.html) bevat actuele rapporten in verband met security problemen van besturingssystemen en applicatie software. Jaarlijks maken ze een overzicht, gebaseerd op deze rapporten. Bij de interpretatie van deze gegevens zijn er echter enkele belangrijke waarschuwingen. Er wordt bijvoorbeeld geen onderscheid gemaakt tussen vulnerabilities die gevonden werden in het veld, en deze die pro-actief gevonden werden door ontwikkelaars of security onderzoekers. Er wordt eveneens geen rekening gehouden met de duurtijd die men nodig had om de vulnerability op te lossen, indien er al een oplossing voor was. Bovendien werd er geen rekening gehouden met de impact van de vulnerability. Aantal Vulnerabilities op jaarbasis (Open Source distributies werden vet gedrukt) OS AIX BSD (aggr.) BSD/OS BeOS Caldera Connectiva Debian FreeBSD HP-UX IRIX
1997
1998
1999
2000
2001
21
38
10
15
6
9
8
25
52
28
7
5
4
1
3
0
0
0
5
1
4
3
14
28
27
0
0
0
0
0
3
2
31
55
28
5
2
17
36
17
9
5
11
26
16
28
15
9
14
7
14
25
99
153
96
0
1
5
1
4
0
0
1
0
0
1997
1998
1999
2000
2001
0
0
2
46
36
2
4
10
20
9
1
0
4
3
1
1
2
4
17
14
6
10
47
95
54
3
3
10
2
21
4
8
11
11
10
24
33
34
22
33
0
1
23
31
21
0
0
2
20
2
2
3
14
4
9
Windows 3.1x/95/98
3
1
46
40
14
Windows NT/2000
10
8
78
97
42
Mandrake NetBSD Netware OpenBSD RedHat SCO Unix Slackware Solaris SuSE TurboLinux Unixware
Linux (aggr.) MacOS
MacOS Server
OS
X
Tabel 3-2: Aantal vulnerabilities op jaarbasis (Bron: www1.securityfocus.com/frames/?content=/vdb/stats.html) Het bovenstaande overzicht toont geen significant verschil in vulnerability tussen de meest belangrijke Linux distributies en Microsoft Windows. Voor het laatste jaar (2001) had SuSE Linux 21 vulnerabilities, Red Hat Linux 54 vulnerabilities, Mandrake Linux 36 vulnerabilities en Windows NT/2000 42 vulnerabilities. Deze vergelijking blijft echter gebrekkig vermits een Linux distributie een zeer groot aantal applicaties standaard meelevert, terwijl vergelijkbare Windows NT/2000 apart geleverd worden en bijgevolg geen invloed hebben op bovenstaande vulnerability cijfers. Bovendien worden Linux distributies meestal geleverd met heel wat alpha en beta software, wat geen gunstige invloed heeft op bovenstaande vulnerability cijfers. 29
Hoofdstuk 3 - Elementaire Vereisten
30
$ Virussen zijn een grote kost voor computergebruikers. De gevolgen van het LoveLetter virus, bijvoorbeeld, worden geraamd op $960 miljoen aan directe kosten en $7.7 miljard aan verloren productiviteit (news.cnet.com/news/0-1003-200-5828578.html?tag=owv). De anti-virus software sector is groot, met een omzet van bijna $1 miljard per jaar. Op het internet zijn verscheidene bronnen te vinden met ramingen over het aantal virusinfecties per platform18. De ramingen verschillen in details, maar alle bronnen waren het eens dat computer virussen overweldigend vaak voorkomend zijn op het Microsoft Windows platform, in vergelijking met gelijk welk ander systeem. Er bestaan ongeveer 60.000 virussen voor Windows, 40 voor Macintosh, ongeveer 5 voor commerciële Unix systemen en misschien 40 voor Linux. De meeste Windows virussen waren niet belangrijk: slechts enkele honderden virussen waren in staat om wereldwijde schade aan te richten. Twee à drie Macintosh virussen waren krachtig genoeg om van enige belangrijkheid te zijn. Geen van de Unix of Linux virussen waren in staat zich te verspreiden en schade aan te richten. De meeste virussen werden ontwikkeld in een labo met als doel de veiligheid van Unix en/of Linux systemen te verbeteren.
$
Crackers vallen slecht beveiligde Web servers aan en overschrijven de Web sites hierbij met een bepaalde boodschap. Dit type van ‘defacement’ wordt regelmatig gerapporteerd aan verscheidene security web sites. Een log van web site defacements wordt bijgehouden door onder andere attrition.org en Mi2g (www.mi2g.com) per server en besturingssysteem. Er moet echter opgemerkt worden dat niet alle defacements gerapporteerd worden aan deze instanties, met als gevolg dat de resultaten onvolledig zijn. Twee trends springen in het oog. Het totaal aantal defacements neemt sterkt in aantal toe: van 7.629 in 2000 naar 30.388 in 2001 – een viervoudige toename. Sinds 1999, toont onderzoek 19 van Mi2g aan dat het aantal defacements verzevenvoudigd is. Web sites die aangedreven worden door Microsoft servers krijgen de zwaarste klappen: 63% van alle Web site defacements deden zicht voor op Windows IIS/PWS servers tijdens 2001. Linux/Apache systemen waren tijdens datzelfde jaar verantwoordelijk voor 18% van de Web site defacements. Deze statistieken zouden aannemelijk zijn wanneer er ongeveer drie maal zo veel Windows systemen als GNU/Linux systemen in gebruik zouden zijn, maar dit is niet het geval. Netcraft (www.netcraft.com), een onderneming die Web site analyses uitvoert, rapporteert dat Microsoft IIS/PWS verantwoordelijk is voor 63% van de defacements, maar een marktaandeel heeft van slechts 26%. Linux/Apache daarentegen is verantwoordelijk voor 18% van de defacements, maar is in 2001 marktleider met een marktaandeel van 63%. Dit doet veronderstellen dat systemen op basis van Microsoft IIS/PWS bijzonder zwak en kwetsbaar zijn in vergelijking tot systemen op basis van Linux/Apache. Noot: Het is interessant om op te merken dat in de VS, het NSA (National Security Agency) meewerkt aan verscheidene security gerelateerde Open Source projecten, waaronder een project om security extensies toe te voegen aan Linux (www.nsa.gov/selinux)
18
bijvoorbeeld, www.sherpasoft.org.uk/MacSupporters/macvir.html, www.kaspersky.com/news.asp?tnews=0&nview=4&id=144&page=0#8, vil.nai.com/vil/default.asp 19 (http://www.newsbytes.com/news/02/173358.html)
30