Technische Blogs

view">: Security, encryptie, letsencrypt! *updated*
view">

Excuses

Eerst en vooral zijn excuses op zijn plaats, door wat experimenten van mij is deze site gisteren enige uren niet bereikbaar geweest. Ook heeft het mobiele domein de afgelopen 24 uur een SSL foutmelding gegeven door een onoplettendheid van mij. Hiervoor excuses aan de mensen die hier last van ondervonden hebben.

Security

Zoals de meeste mensen die deze site wat regelmatiger lezen waarschijnlijk doorhebben ben ik een systeembeheerder van beroep en ben ik nogal fan van security. Helaas was ik daar met deze website niet zo mee bezig. Ik vond het te veel geld kosten om een betaald certificaat op deze site te zetten en een gratis of zelf signed certificaat wordt niet door alle browsers geaccepteerd helaas. Dus, geen SSL encryptie op verbindingen met deze website. Iets wat ik toch graag overal op het internet zie. Voor een Engelstalige uitleg over hoe SSL werkt en wat certificaten zijn klik hier.

Het begon allemaal toen ik gisteren een artikel las op security.nl over een tool die SSL gebruik op websites scant. Natuurlijk was ik nieuwsgierig dus heb ik deze tool even bekeken en zag ik dat deze op meer scant dan alleen SSL, zo scant hij ook op bepaalde HTTP headers die helpen om een zogenaamde Man In The Middle attack te voorkomen. Deze website scoorde op die tool maar 10 uit 100 punten! Natuurlijk had ik geen hoge score verwacht, ik had tenslotte geen SSL beveiliging op deze website maar ik was hier toch niet tevreden mee. Ik ben dus eens gaan zitten nadenken of ik niet toch een SSL certificaat kon aanvragen.

Letsencrypt

Sinds enige tijd was ik mij al bewust van het initiatief van letsencrypt, deze mensen willen graag dat elke website met verbindingen met encryptie worden uitgerust zodat het internet een veiligere plek word. Ook zij beseften dat dit best veel geld kost dus zijn ze gratis certificaten gaan aanbieden. Ze leveren zelfs een aantal tools om het installeren van je SSL certificaten makkelijk te maken. Helaas werkt dit tootlje niet heel goed samen met een op shared hosting ingerichte apache web server. Gelukkig kun je ook de 'certonly' optie gebruiken waardoor verificatie van je domein via een scriptje op je website kan. Het was natuurlijk wel even puzzelen om dit ook op mijn Drupal installatie voor elkaar te krijgen maar gelukkig vond ik al snel een artikel wat mij hier een simpele oplossing voor bood.

Nadat ik de letsencrypt tools dus had geïnstalleerd en na wat experimenteren met hoe het werkte heb ik een certificaat gegenereerd voor alle sites in deze Drupal installatie en dit in apache geconfigureerd. Dit was echt super makkelijk dus was zo gedaan.

Meer Security

Natuurlijk wou ik het liefste een score van de volle 100 halen in de scan tool dus ik ben daarna gaan kijken naar de seurity headers. Ik kende eerlijk gezegd beide varianten van de headers niet dus ik ben eens gaan googelen op deze namen en heb een beetje uitgezocht waar ze voor dienden en hoe ze in elkaar zaten. Vervolgens ben ik gaan zoeken hoe ik deze in Drupal kon configureren en vond ik hiervoor 2 modules: HTTP Strict Transport Security en Security Kit. Eerlijk gezegd was ik over beide niet zo enthousiast. Security Kit zorde er voor dat allerlei scripts die deze site nodig heeft alswel alle style sheets die voor de layout zorgen geblokkeerd werden. Ik heb geprobeerd deze module goed af te richten maar het leek er sterk op dat hij mijn input niet goed oppikte waardoor alles geblokkeerd werd.

Uiteindelijk ben ik gaan zoeken over hoe ik deze headers via apache zelf kon toevoegen en heb ik voor die weg gekozen en de volgende headers opgenomen in mijn apache configuratie:

# Header settings
Header always set X-Xss-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Content-Security-Policy "default-src https: data: 'unsafe-inline' 'unsafe-eval'"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Met deze settings scoorde ik in ieder geval 60 van de 100, Dit komt voornamelijk door de setting 'unsafe-inline' maar zonder deze setting was het noodzakelijk geworden om alle externe scripts, plaatjes, filmpjes, etc.. op deze site in een whitelist te zetten. Dit is helaas zoveel werk door de hoeveelheid, vooral de filmpjes, dat ik de 20 minpunten maar voor lief neem en het zo heb gelaten.

Het enige nadeel was dat hierdoor mijn statistieken script niet meer werkte omdat dit niet via een SSL verbinding binnen kwam en de security headers de browser vertelde dit niet uit te voeren. Inmiddels heb ik dit ook verholpen door ook voor de statistieken site met SSL uit te rusten. Voor de mensen die bang zijn, nee er gebeurd niets met deze statistieken, die zijn hooguit voor mij om te kunnen zien dat ik daadwerkelijk bezoekers heb en dat zien motiveert mij om deze site te blijven runnen.

Update: Ik heb geconstateerd dat er nog 20 minpunten zijn omdat mijn XFO (X-Frame-Options) header niet goed zou zijn, volgens alle handleidingen die ik kan vinden is deze header correct gezet maar de tool van mozilla verteld mij dat deze 'malformed' zou zijn. Ik hoop er nog achter te komen waarom dit is en wat dan wel de goede implementatie is.

Conclusie

In ieder geval is er dus weer een stukje security toegevoegd op deze site, misschien leuk voor mensen die bang zijn dat iemand hun comment post snift of ziet dat ze hier inloggen en leuk voor mij doordat ik hierdoor letsencrypt heb leren kennen.

Toekomst

Aangezien ik veel problemen heb gehad met de site Share waarop ik mijn code projects hoste en andere mensen wou aanmoedigen ook hun code te hosten en waarop ik dus vooral spam bots kreeg is die site al behoorlijk lang uit de lucht. Ik ben van plan om binnenkort de projecten die ik op Share had op deze site te gaan zetten en ook de Howto's die ik geschreven heb weer uit de oude database van Share te puzzelen en deze ook op deze site te gaan zetten. Mij kennende gaat dit nog enige tijd duren voor ik hier tijd en zin in heb maar vroeger of later zal dit gebeuren en zal ook deze sectie beschikbaar worden voor het publiek.

view">: Even een stukje vloeken
view">

Vol trots was ik altijd op de redundancy in mijn netwerk. Ryanna, mijn fileserver, had een extra schijf zodat bij uitval er geen data verloren zou gaan, Belangrijke data op de fileserver werd gemirrord naar een USB schijf op Rhuagh, mijn router. Ryanna kon de routing van Rhuagh overnemen bij uitval. Dus ik dacht dat ik wel veilig zat.

Een maand of 4 geleden werd Rhuagh te heet, hoofdoorzaak ofcourse stof. Nou ja, niets aan de hand, Rhuagh uit, Ryanna even de DHCP server aanpassen zodat alle routing via Ryanna liep en alles draaide verder. Dikke prima.

Toen ging er ongeveer 2 maanden geleden een schijf in Ryanna kapot. Niets aan de hand, er zit een extra in en de boel draait nog. Ik had het in eerste instantie niet eens door dat die schijf weggevallen was. Toen ik het wel doorhad ben ik rustig gaan kijken naar een vervangende schijf en toen ik er een had uitgezocht ben ik wat gaan sparen.  Op een gegeven moment kon ik een schijf kopen maar heb ik dat toen uitgesteld omdat ik nog wat onzeker was over welke schijf ik nou precies er in wou hebben, de wat duurdere die zuiniger was met stroom of een wat goedkopere. Ik had hier niet over mogen aarzelen want natuurlijk, terwijl ik aan het aarzelen was ging er een tweede schijf stuk. Op dit moment deed Ryanna dus ook niets meer.

Op dat momente ben ik 2 nieuwe schijven gaan bestellen. Toen die er waren heb ik eerst Ryanna uit het netwerk gehaald, een dagje zonder extra linux router gedraaid gewoon achter de modem en ondertussen heb ik de hdd van Rhuagh naar een nieuwe schijf gemirrord en die in een nieuwe machine gezet. Rhuagh deed het toen weer zonder al te veel issues (ik ga nog wel een keer een rant schrijven over het upgraden van PowerDNS en het niet backwars compatible zijn met oude configs daarvan).

Hierna heb ik uitgezocht welke schijf helemaal niet meer werkte in Ryanna en deze vervangen. Toen de boel opstartte constateerde ik dat er 4 werkende schijven in de raid array zatten dus dat die ene schijf het spontaan weer deed. De array ging toen ook recoveren dus ik was helemaal blij dat mijn data er nog was en het weer ging werken. Recovery duurde zo een 15 uur dus ik ben naar bed gegaan op een gegeven moment. Toen ik de volgende dag terug kwam was de recovery gestopt, die schijf die het spontaan weer deed was alsnog uitgevallen.

Natuurlijk baalde ik hiervan maar ik had er toch al op gerekend dat al mijn data weg zou zijn dus ik heb me er enigszins gelaten bij neergelegd en heb de uitgevallen schijf ook vervangen. Nieuwe recovery, 15 uur verder en toen constateerde ik dat ik een foutje had gemaakt en ik 2 schijven als spare (of extra) had opgegeven. Dus, opnieuw inrichten, weer 15 uur afwachten.

Vanochtend keek ik hoever de recovery was en zowaar, er is nu een derde schijf stuk! Ergo, ik moet nog een schijf zien te financieren terwijl ik daar eigenlijk het geld niet voor heb momenteel. Dit keer ook meteen maar 2 schijven zien te financieren want ik durf te wedden dat die 4-de schijf binnenkort ook er mee ophoud.

Je kunt je voorstellen dat ik de afgelopen weken meerdere keren hierom een vloek en scheld momentje heb gehad waarbij die van vandaag toch wel de ergste is. Het past goed bij december wat mij betreft, gaan toch altijd dingen mis in deze periode. Het is natuurlijk ook mijn eigen schuld dat het zover is gekomen, ik had die eerste schijf sneller moeten vervangen dan was de kans groot geweest dat ik de data nog had kunnen redden. Dat maakt het nog eens extra zuur en vloek waardig want het is een combinatie van eigen financiën, laksheid en domme pech.

view">: Herstructurering & Theming
view">

Zoals jullie allemaal kunnen zien ben ik momenteel bezig met een herstructurering van deze site.

Categorieen & Overzichtspagina's

Zoals gezegd ging dit om de blogs in categorieën in te delen, dit is eigenlijk al af zoals te zien is in de menu structuur. Ook is er een nieuwe blogs overzicht pagina gekomen die teasers bevat van alle laatste blogs per categorie en menu's voor de laatste 8 blogs daarvoor per categorie en verder opgeleukt met een willekeurig plaatje uit de plaatjes categorie. Deze pagina word compleet dynamisch opgebouwd en ziet er vele male leuker uit dan gewoon een lijst met linkjes naar blogs.

Tussendoor heb ik ook nieuwe overzicht pagina's gemaakt voor de blogs per jaar en per maand, ook dit was altijd een lijst met linkjes, nu is het net als het oude blog overzicht drie blogs onder elkaar (als er drie blogs zijn in die categorie in die maand of dat jaar) en daaronder een pager om door te gaan naar de volgende of een andere pagina.

De verschillende content types voor blogs zijn ook opnieuw aangemaakt met Nederlandse namen en een wat overzichtelijkere structuur er in. Dit wil ik nu ook gaan doen voor de andere categorieën (tekeningen, verhalen & gedichten, foto albums en de diverse privé categorieën die alleen beschikbaar zijn voor gebruikers). Dit houdt in dat de komende dagen dus die categorieën aangepast worden, de menu structuur vertaald wordt en de overzichtspagina's aangepast worden.

Theming

Op de achtergrond ben ik bezig om ook een nieuw theme op deze site te zetten. Deze theme is al beschikbaar voor mensen met een gebruikersaccount. Mensen met een account kunnen na het inloggen hun eigen account editen en de theme 'valheru' kiezen (ik wist geen betere naam te verzinnen voor het subtheme in kwestie). Hiermee kun je alvast een preview krijgen van hoe de site er straks uit komt te zien als ik alles opnieuw heb vormgegeven.

Het nieuwe theme is gebaseerd op Marinelli theme wat gratis verkrijgbaar is voor Drupal met natuurlijk de nodige aanpassingen want ik wil dingen altijd net even anders hebben. Zo is het originele Marinelli theme een vaststaande breedte en wil ik natuurlijk een variabele breedte. Na 3 dagen stoeien heb ik hem schaalbaar gekregen met een minimum breedte van 960 pixels. Hiermee is de site redelijk te lezen op mijn mobiele telefoon.

De reden dat ik ben gaan denken over een nieuw theme is dat ik eigenlijk al een jaar vond dat mijn huidige theme niet meer helemaal kon en op sommige punten te kleurloos was. Ook al houd ik zelf erg van donkere kleuren is zwart, wit en grijs misschien wat heel simplistisch onderhand. Het nieuwe theme is dus zwart, wit en vooral blauw. Niet heel veel spannender maar het geheel ziet er wel mooier uit. Ook is het nieuwe theme voornamelijk html5 en css3, wat ook wel een reden was om over te stappen, een hoop dingen kun je gewoon mooier maken met html5 en css3.

Front Page

ook de home pagina krijgt een nieuw jasje, hoe dit er precies uit zal zien weet ik nog niet maar de lap tekst met verschillende dingen er in zal in ieder geval op korte termijn gaan verdwijnen. Ik heb in mijn hoofd om hier ook een soort overzichtspagina van te maken met een mix van random en laatste content uit de verschillende categorieën en misschien zelfs sub categorieën. Indien dus de komende dagen de frontpagina opeens blanco is dan is dit omdat ik hier mee bezig ben. In de oude skin zal het laatste content blok zo lang mogelijk zichtbaar blijven zodat er in ieder geval een makkelijke manier van navigeren zal blijven, de pagina zelf echter zal waarschijnlijk snel blanco worden, misschien vanavond al.

Over enkele dagen als de herstructurering af is en alle overzichtspagina's goed werken zal dit theme live gezet worden alhoewel ik nu al bijna niet kan wachten dus misschien doe ik het wel gewoon stiekem op het moment dat ik vind dat het goed genoeg is en dat de dingen die nog niet werken wel gedaan kunnen worden terwijl de skin al live staat. Tenslotte maakt het niet heel veel uit of er nou dingen niet optimaal werken.in de oude skin of dat dat het geval is in de nieuwe skin.

Mobiele Bezoekers

Ondertussen ben ik ook aan het nadenken over mobiele bezoekers, veel mensen bekijken sites op kleinere schermen tegenwoordig, schermen zoals een IPad of Android tablet maar ook heel veel mensen kijken vooral op hun smartfoon. De nieuwe skin is hier zoals gezegd redelijk geschikt voor maar heeft wel een minimum breedte van 960 pixels. Dit ziet er op mijn Samsung Galaxy SII redelijk goed uit maar hoe is dat op andere (en dan vooral kleinere) formaten? Omdat ik toch mijn themes per gebruiker wou kunnen instellen (anders kon ik niet een nieuw theme testen zonder dat iedereen dat zag) heb ik de module ThemeKey geïnstalleerd. Na wat spelen met die module zag ik dat deze module theme switching ondersteund gebaseerd op de url waarmee iemand binnenkomt. Daarnaast biedt deze module ook de optie om aan de hand van browser detectie of OS detectie van theme te wisselen. Ik zit er dus over te denken om ook op zoek te gaan naar een skin die speciaal geschikt is voor mobiele apparaten en hier met ThemeKey een paar switching rules voor te maken en daarnaast de optie te gaan bieden om via iets als http://m.moredhel.org een mobiel theme te krijgen. Hier ga ik mee puzzelen nadat ik het theme waar ik nu mee bezig ben af heb en dat live staat.

Snelheid

Een andere reden waarom ik met nieuwe overzichtspagina's e.d. bezig ben is omdat ik een beetje opruiming wil houden onder de geïnstalleerde modules voor deze site. Hier zit een hoop tussen wat niet meer gebruikt wordt en dus weg kan. Dat zal hopelijk de site ook wat lichter maken. Iets waar ik al een paar vorderingen in heb gemaakt door in veel van de gegenereerde views de Ajax javascript opties uit te schakelen en niet alvast preventief ALLE blogs te laden maar alleen die drie die weergegeven moeten worden.

view">: Anno 2070
view">

Met dank aan Dirk heb ik sinds een paar dagen het spel Anno 2070. Helaas zonder de Deep Oceans addon aangezien Ubisoft bestellingen niet correct verwerkt, hierover moeten we nog steeds wat ruzie met de helpdesk maken. Anyway, ik was in het verleden al enthousiast over dit spel dus ik ging het installeren. Keurig Google geraadpleegd om uit te zoeken welke poorten open moest. Dit waren er veel maar best een simpel lijstje:
80
3074
13000
13005
13200:13999

Dus ik open deze poorten uitgaand en start het spel. Eerst door de Ubisoft launcher heen, account aanmaken, werkt prima. Inloggen met de launcher, werkt ook. Het spel deed een update, werkte weer prima. Toen startte het spel en moest ik in het spel inloggen, dit werkte niet prima. De melding "lost connection to server" kwam en ik kon niet verder.
Google leverde niet meer informatie op behalve een hele hoop mensen die aan het klagen waren over het zelfde probleem.
Aangezien dit spel toch gekocht was wou ik het ook niet zomaar opgeven dus ik ben eerst met iptraf en daarna met tcpdump op mijn Linux router gaan uitzoeken wat hier nu het probleem was. Met wat trail en error testen en starten en verkeer filteren kwam ik er uiteindelijk achter dat ook UDP poorten 21150 en 21151 open moesten. Deze informatie was nergens op het internet te vinden en werd ook niet door Ubisoft verstrekt ergens in documentatie o.i.d.

Helaas gaan software schrijvers, met name in de spelletjes industrie, er nog steeds vanuit dat mensen uitgaand verkeer niet filteren in hun firewall.

view">: More changes on this site
view">

As you can see I have made some more changes to this website. The new menu structure was quite beautiful but it didn't navigate very easy. So I created a new menu containing all content on this site, previously each content type had its own separate menu. Then I used the JQuery Menu module to export this menu as a JQuery menu block which I placed in the left sidebar. After that of course I disabled the suckerfish menu in the top except for the user menu for logged on users. I also did some restyling of the new menu, mainly the colors.

So now I have a working menu with several collapsible layers in it. Unfortunately I still cannot auto sort on published or created date in the menu so I still have to manually adjust the weigths of menu items, this still bothers me.

 

All of this sounds quite simple of course but I had to manually edit each item on this site to change the menu location. Luckily I have the menu clone module so I could clone the biggest menu as a start and work from there but trust me, that isn't the only big menu I had! This took quite a lot of time of boring repetitive work. Next I'll code something to do it for me Wink

Anyway, due to this the layout changed a bit, the sidebar on the right is now empty, the latest blogs block there became quite pointless and by having both sidebars filled the site became quite narrow. So I moved the latest drawing and random picture and the Sonad Ad also to the left sidebar.