Category Archives: Open Source Software

Open Source Software, zuiver eigenbelang

Gratis software, developers die software weggeven en die software voor mij onderhouden? Een economie van het delen, altruïsme? Ik geloof er niets van. Alles kost geld, ook software. Developers moeten toch ook kunnen leven?  Overal moet voor betaald worden, alleen de zon gaat voor niets op.

Al jaren staat de software industrie gelijk aan het snelle verdienen, het grote geld. Waarom zou iemand software weggeven en er niets voor terug vragen? Waarom zou ik dergelijke software willen gebruiken? Waarom werken grote bedrijven als HP, IBM, Intel en Red Hat daaraan mee? Vast niet om er slechter van te worden. Deze bedrijven willen immers geld verdienen. Er is vast een catch.

De catch

foksuk_rrs_scriptKlopt, er is een catch. De motivatie om aan open source software te werken is zuiver eigenbelang. Bedrijven doen dat om geld te verdienen. Developers hebben de software zelf nodig of willen bekendheid te verkrijgen. Aha.. zult u denken, dus dat is de catch. Ja dat klopt, dat is de catch. De motivatie voor developers en bedrijven is om er beter van de worden. Iedereen met bedenkingen over open source software heeft toch gelijk. Maar er is nog een catch, eigen belang als motivatie is eigenlijk best prima.

De motivatie

Natuurlijk is het allemaal niet zo slecht als het klinkt. Bedrijven en developers werken aan open source software om er beter van te worden, maar ze zijn niet egoistisch, anderen mogen er ook van profiteren. En ja en ook dat gebeurt met de gedachte dat ze er later zelf beter van worden. Maar is dat eigenlijk wel erg?  Waarom zou je er zelf niet beter van mogen worden als anderen er ook wat aan hebben, dat is toch prima?

Zeg nu zelf, als je wil dat mensen iets doen en dat blijven doen, wat is de beste garantie die je kan krijgen? Dat ze ervoor betaald worden, of dat het (ook) in hun eigenbelang is? Het is eigenlijk het verschil tussen intern gemotiveerd zijn, of extern gemotiveerd worden. Interne motivatie is natuurlijk veel beter. Immers, geen betaling, geen software. Het verklaart eveneens waarom open source software developers zo gebrand zijn kwalitatief goede en veilige software te maken. Ze hebben zich persoonlijk verbonden aan de software. Deze persoonlijke verbondenheid is veel lastiger als je daarvoor betaald wordt.

Scratch your own itch

In het begin van het computer tijdperk werkte het immers ook al zo.  Als een computer iets moest doen, dan schreef je daar zelf de software voor, je kon het immers (nog) niet kopen. Maar als iemand anders software bezat die je nodig had, dan was het sneller om dat te mogen gebruiken, dan om het zelf te schrijven. Het delen van software lag daarmee erg voor de hand. Toch was de motivatie om te delen eigen belang, je werd er zelf ook indirect beter van.

Eigenbelang is prima

het-kan-wel-loesjeZo bekeken is de motivatie om mee te werken aan open source software inderdaad eigenbelang. Niet egoistisch zodat we niet delen, maar de inspanning die we leveren, leveren we in eerste instantie voor onszelf. Dit is precies de reden waarom open source software een goede keuze is voor bedrijven en organisaties. Het principe erachter, de motivatie om software te schrijven en te onderhouden komt voort uit eigenbelang. Juist dit feit maakt dat het proces stabiel is. Deze stabiliteit is bij uitstek in het belang voor bedrijven. Lage kosten (ja het gebruik van software is nooit kosteloos) en een stabiel proces om de software te ontwikkelen en te onderhouden is juist in hun belang – en uiteindelijk in ieders belang.

Duurzaam

Heb je zelf behoefte om aan open source software mee te werken, doe het dan vooral voor jezelf, maar deel het resultaat met anderen. Dit gaat ook voor bedrijven op. Bijdragen aan software projecten, of het financieren van ontwikkeling, doe het vooral vanuit eigenbelang en deel het daarna met de wereld. Dit is de beste manier om het gebruik en het ontwikkelen van open source software duurzaam te maken en nuttig te laten zijn voor iedereen.

 

Docker, Dev-Ops bijna opgelost..

Nu grote- en middel grote organisaties de inzet van Linux en Open Source software niet vreemd meer vinden, maken zij zich op voor de volgende stap. De een noemt het “State config”, de ander noemt het “Datacenter automation”. Ongeacht de naam die het krijgt, verandering zit in de lucht.

Virtualisatie

De eerste grote slag vond plaats toen virtualisatie gemeengoed werd. Het maakte mogelijk dat hardware beter benut kon worden en onderhoud op de hardware uitgevoerd kon worden zonder down time van applicaties. Feitelijk werden server-installaties los gekoppeld van de hardware. In  sommige organisaties ontstond er zelfs een nieuwe groep van beheerders, zij die zich exclusief bezig hielden met deze virtualisatie. Nadeel van virtualisatie was wel dat nieuwe (virtuele) servers te makkelijk uitgerold konden worden. Dit leide veelal tot ongecontroleerde groei van servers. Immers, het aanvraag proces van nieuwe servers en de aanschaf van hardware waren ook ontkoppeld.

Puppet

Virtualisatie van servers vraagt om software en tooling waarmee dit beheerd kan worden. De servers zijn niet meer zichtbaar en het worden er wel heel veel. Het walhalla is hierbij natuurlijk dat servers volledig middels templates beschreven zijn en op commando geautomatiseerd gedeployed kunnen worden. Puppet is bij uitstek software die dit mogelijk maakt. Veel organisaties op dit moment zijn nu wakker voor deze ontwikkeling en het verklaart de populariteit van Puppet. Overigens zijn er veel meer initiatieven (software producten) die dit kunnen, te denken valt aan Ansible, Chef, MAAS, JuJu, Landscape e.t.c. Interessant is dat deze ontwikkelingen veelal vanuit de Open Source hoek lijken te komen. Duidelijk wordt dat traditioneel systeembeheer een veel grotere programmeer-component krijgt.

Cloud Computing

Als virtualisatie gecombineerd wordt met datacenter automation, dan komen we in het gebied van Cloud Computing. Hierbij gaat de ontkoppeling van de hardware nog een stap verder. De kosten worden volledig operationeel (opex – Operational Expenditures) en de capaciteit volledig elastisch. Bij de cloud aanbieders zijn het de grote IT bedrijven die de toon zetten. Met name Amazon met haar EC2 cloud mag genoemd worden. De EC2 cloud is voor velen nog steeds het lichtende voorbeeld van hoe een cloud zou moeten functioneren. Bij de aanbieders van cloud software wordt het peloton aangevoerd door Open Stack een project waaraan alle belangrijke software vendors inmiddels aan meewerken. Het is mogelijk een “Kip ei” vraagstuk of Cloud Computing of datacenter automation eerder was. Het zijn in ieder geval technieken die hand in hand gaan. Red Hat heeft dit zien aankomen en heeft Puppet in haar Red Hat Satelite product geïntegreerd en maakt met Cloud Forms mogelijk om orkestratie over verschillende Cloud- en virtualisatie platforms uit te voeren.

Docker

En op het moment dat de IT markt denkt de ontwikkelingen begrepen te hebben, komt er een game changer langs. Docker is een combinatie van container virtualisatie en applicatie virtualisatie. Dit verandert vreemd genoeg veel. De lichtere vorm van virtualisatie maakt dat er minder overhead is en er dus efficiënter gebruik van de hardware kan worden gemaakt. Het is niet strijdig met Cloud Computing, maar, bouwt daar juist op voort. De echte grote verandering is daarom niet technisch van aard, maar organisatorisch. Doordat ontwikkelaars de Docker pakketten maken wordt het traditionele systeembeheer gepasseerd.  Het traditionele IT afdelingen hebben de “Boot gemist”, de business heeft ze nauwelijks meer nodig. Na jarenlang barrières op te hebben geworpen, heeft de business zich nu onafhankelijk gemaakt van de IT afdeling. De aansluiting met de business is hierdoor eenvoudiger – een vraagstuk dat de IT al jaren teistert. Het is wel de vraag wat de IT beheer afdeling nu gaat doen. Resteert het hen de hardware te beheren en te onderhouden?

Nieuwe kansen

Er zijn ook wel weer kansen. De ontwikkelaars zijn nu “In charge” en daarmee ook van security – en daar zijn ze traditioneel niet erg goed in. Het is zaak om het traditioneel IT beheer te herzien en  aan te sluiten bij development afdelingen en te participeren in security vraagstukken – mits je niet alleen kapotte harddisks wil wisselen.

The Disaster of Things

Een sterk opkomende trend is The Internet of Things (IoT). Het betreft het op internet beschikbaar maken of, het verbinden van allerlei huishoudelijke apparatuur met internet. Dit biedt tal van nieuwe functionaliteit, zoals bestanden van thuis kunnen raadplegen, verlichting instellen of de thermostaat bedienen.

One network to rule them all..

Er is natuurlijk veel te zeggen om allerlei huishoudelijke apparatuur met internet te verbinden. Steeds meer huishoudelijke apparaten kunnen bedient worden middels bijvoorbeeld een smart phone. Via internet kan bijvoorbeeld thuis een kijkje genomen worden via een webcam die met internet is verbonden, of kan de temperatuur thuis ingesteld worden en dat alles via één netwerk. Dit zijn bijvoorbeeld handige zaken voor mensen die ver van huis zijn. Deze ontwikkeling heeft feitelijk betrekking op alle apparaten is huis zoals tv’s, geluidsinstallaties, computers en printers. Alles is “internet connected”. Een van de handige aspecten hiervan is dat hetzelfde netwerk (internet / thuisnetwerk) voor allerlei toepassingen gebruikt wordt. Het “computer netwerk” is eindelijk universeel toepasbaar.

Geen keuze

Natuurlijk zijn er mensen die dit geweldig vinden en er geld voor over hebben om aan deze trend mee te doen. Maar inmiddels zijn het mogelijkheden die gewoon aanwezig zijn – of je er nu voor betaald of niet. Als je een nieuw apparaat koopt zit het er gewoon in. Feitelijk hebben consumenten geen keuze meer en het gevolg is dat IoT niet meer te stuiten is, het gaat er gewoon komen als het er al niet is.

Updates

Met de grote hoeveelheid apparaten in huis die verbonden zijn met internet komt de verantwoordelijkheid deze regelmatig van updates te voorzien. Voor mensen die werkzaam zijn binnen de ICT is dit een redelijk normale gang van zaken, maar ik zie mijn tante haar ADSL router nog niet updaten laat staan haar tv of koelkast. Het gevolg is dat deze devices verouderde software hebben met tal van (inmiddels bekende) exploits (achterdeurtjes). Ook al zou je alle devices regelmatig van updates voorzien (zoals ik dat zelf doe), dan is nog steeds de vraag of fabrikanten wel tijdig updates beschikbaar stellen. Deze updates worden veelal zonder kosten ter beschikking gesteld, dus wie garandeert mij dat de betreffende fabrikant daar überhaupt nog energie in wil steken? Verwacht mag dus worden dat consumenten thuis legio apparaten hebben die wagenwijd open staan voor een ieder die er maar misbruik van wil maken.

Geheime diensten

Nou en die zijn er. Voor met name geheime diensten is dit natuurlijk geweldig. Moest je vroeger iemand schaduwen, of gericht afluisteren, dat is nu niet meer nodig. Het is zelfs niet meer nodig afluisterapparatuur te hebben. Mensen dragen vrijwillig allerlei apparaten mee die voorzien zijn van microfoons, camera’s, temperatuursensors, bewegingssensors en GPS. Bovendien zijn die apparaten voorzien van verouderde software met de nodigde exploits. Je hoeft ze alleen maar te gebruiken… Wauw, that’s a dream come true..

 Feiten

Lezers van mijn blog en artikelen weten dat ik vaak overs security schrijf, maar willen misschien ook weten of ik e.e.a. kan staven met feiten? Daarom een klein voorbeeld.

De site die u nu leest draait op een server waarop ik de nodige security maatregelen neem. Logisch, als je over security schrijft dan ben je vanzelf een keer aan de beurt, ik maak me daar geen illusies over. Zo laat ik een script iedere dag logfiles doorlopen op zoek naar inlog pogingen die niet geslaagd zijn. Dat is best interessant. Soms zie ik IP adressen veelvuldig langs komen. Het lijkt dan wel of er gericht ingebroken wordt. Bijvoorbeeld:

Dec 17 10:52:40 luna sshd[13598]: Did not receive identification string from xx.xxx.xxx.xx
Dec 17 10:58:20 luna sshd[13783]: Bad protocol version identification 'root' from xx.xxx.xx.xx port 60991
Dec 17 11:01:33 luna sshd[13799]: Did not receive identification string from xx.xxx.xx.xx
Dec 17 11:12:56 luna sshd[13852]: Did not receive identification string from xx.xxx.xx.xxx

De bovenstaande output (geanonimiseerd) is een deel van het log dat ik laat genereren. Soms doe ik een poortscan om uit te vinden wie deze inlogpogingen onderneemt. Dit brengt me op de vreemdste plaatsten. Eens kwam ik eens op een campus server van een Chinese universiteit, maar meestal betreft het ADSL routers in Rusland. Ik heb niet het idee dat de eigenaren van deze apparaten achter deze inlogpogingen zitten, maar wel heb ik het idee dat deze apparaten gekaapt zijn en door iemand anders misbruikt worden. Onderstaand is (geanonimiseerde) een portscan te zien. Bijvoorbeeld:

 

root@luna:/var/log# nmap -A -T4 xxx.xxx.xxx.xxx
Starting Nmap 6.40 ( http://nmap.org ) at 2014-12-17 11:00 CET
Nmap scan report for xx.xxx.xxx.xxx.adsl.xs4all.nl (xx.xxx.xxx.xxx)
Host is up (0.059s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD
8080/tcp open http Apache httpd
|_http-methods: No Allow or Public header in OPTIONS response (status code 501)
|_http-open-proxy: Proxy might be redirecting requests
| http-robots.txt: 2 disallowed entries 
|_/cgi-bin/ /*.html$
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
8089/tcp open http-proxy sslstrip
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: storage-misc|general purpose|specialized|WAP|media device
Running (JUST GUESSING): HP embedded (91%), Linux 2.6.X|3.X (88%), Crestron 2-Series (85%), Netgear embedded (85%), Western Digital embedded (85%)
OS CPE: cpe:/h:hp:p2000_g3 cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3 cpe:/o:crestron:2_series cpe:/h:netgear:dg834g cpe:/o:westerndigital:wd_tv
Aggressive OS guesses: HP P2000 G3 NAS device (91%), Linux 2.6.32 - 3.9 (88%), Linux 3.0 - 3.9 (88%), Linux 3.6 (87%), Linux 2.6.32 - 2.6.39 (86%), Linux 2.6.38 (86%), Crestron XPanel control system (85%), Netgear DG834G WAP or Western Digital WD TV media player (85%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 3 hops
TRACEROUTE (using port 21/tcp)
HOP RTT ADDRESS
1 2.85 ms xxx.xxx.xxx.xxx
2 21.15 ms xxx.xxx.xxx.xxx.xs4all.net (xxx.xxx.xxx.xxx)
3 56.19 ms axx.xxx.xxx.xxx.adsl.xs4all.nl (xxx.xxx.xxx.xxx)

In dit geval is te zien dat het een klant van mijn eigen provider is. Er staat een webpoort open (poort 8080). Als dit adres in een browser ingevuld (met toevoeging van poort 8080) levert een inlogpagina op een Qnap device bij iemand thuis naar ik aanneem. Vermoed kan worden dat de inlogpogingen bij deze Qnap vandaan komen*.

*Dat is natuurlijk niet zeker, het ADSL router kan ook nog een ander apparaat port-forwarden dat de daadwerkelijk aanval uitvoert. In dat geval voert alleen poort 8080 naar de Qnap.

qnap_screenshot

Interessant is te zien dat het inderdaad gewone apparaten zijn die deze aanvallen uitvoeren. Hier stopt voor mij het onderzoek, ik doe geen pogingen op de betreffende Qnap in te loggen. Naast Qnap kwam ik ook al pagina’s van bedienbare verlichting tegen en ADSl routers.

Disaster of Things

Het bovenstaande voorbeeld toont naar mijn idee aan dat IoT al bestaat en dat het inderdaad apparaten betreft die verouderde software hebben. Nu weet ik niet hoeveel mensen wel de software up to date houden, maar ik vermoed dat naar mate we meer apparaten in huis krijgen die “internet connected” zijn, dat het steeds lastiger wordt om ze up to date te houden – ervan uitgaande dat fabrikanten hun software al van updates voorzien. Verwacht mag worden dat dit een onhoudbare situatie is. We worden nu en in de toekomst omgeven van apparaten die niet veilig zijn en die oren en ogen hebben. Succes! The Disaster of Things is realiteit geworden.

update 21 januari 2015:

Mark Shuttleworth (Canonical) doet een interessante aankondiging in dit kader..

 

Gepubliceerd op 17 december 2014