Configuratie van een internetserver

Mijn eerste boek begeleidt zowel de beginnende als de gevorderde systeembeheerder bij het installeren, configureren en onderhouden van een bedrijfsinternetserver, die onder meer DNS, websites en e-mail serveert, en gebruikers bestanden, kalenders en adresboeken laat delen.

Read More

Mail server

This is by far the most popular post of this blog, welcoming visitors from all over the world. This tutorial describes the setup of a complete mail server, including IMAP and SMTP access, TLS encryption, SPF and DKIM, DNS blackhole lists, spam and virus filtering, Sieve message filters, and much, much more.

Read More

Pasta met kip-pesto-saus

Al vele jaren is dit het eerste recept waar ik aan denk, als ik gevraagd word om te koken. Het is lekker, eenvoudig, en helemaal van mij. Bij het recept vind je bovendien een link naar een vegetarische variant, die eenvoudig omgevormd kan worden naar veganistisch.

Read More

Cleaning up the web server logs

I am between 2 books currently, author-wise. So I’m using this time to do the server-housekeeping I’ve been putting of in the past months. Today, I had a look at my web server logs. And I almost regretted it instantly.

The logs were full of requests clearly made by script kiddies. Half of the error-triggering requests were for the file wp-login.php, even for my non-WordPress sites, and what’s worse: even for non-PHP sites. And then there were requests for the usual 1337w0rm, indoxploit, adminer, etcetera. I could have left it, of course, since it doesn’t really hurt to have all these idle requests, but all this noise makes it difficult to distil the log messages that really do need my attention.

In this post, I’ll share what I did to have cleaner Apache log files in the future.
And at the same time, these instructions help protect the web server against known vulnerabilities and exploits.

Read More

Configuratie van een internetserver


Vanaf deze week is mijn boek uit!
En dan bedoel ik niet een boek dat ik bezit, maar het boek dat ik geschreven heb.
En ik bedoel ook niet uitgelezen, maar uitgegeven.

Configuratie van een internetserver beschrijft de volledige installatie en configuratie van een bedrijfsinternetserver (die uiteraard ook gebruikt mag worden voor een familie of een vriendengroep). Na een paar paragrafen over de selectie van de provider en de server, en een hoofdstuk met wat Unix-basiskennis, wordt de beheerder bij de hand genomen, en in rap tempo naar het ‘echte’ systeembeheer begeleid.

Het uiteindelijke resultaat is een volledig functionele bedrijfsinternetserver die klaar is om in productie genomen te worden. Deze server handelt DNS-, web-, en e-mailverkeer af voor meerdere domeinen, en bedient tientallen of zelfs honderden gebruikers; gebruikers die geen shell-toegang nodig hebben worden opgenomen in een LDAP directoryservice. Gebruikers kunnen bestanden delen en synchroniseren op al hun apparaten, en de e-mailgebruikers beschikken over gedeelde kalenders en adresboeken. De server wordt beveiligd middels een firewall, en de web- en e-mailverbindingen worden versleuteld middels SSL/TLS. Met dit boek in de hand heeft de systeembeheerder bovendien de nodige handvatten om de server te onderhouden, en om verder te groeien.

Dit boek vereist geen diepgaande kennis van Unix; een eerste geslaagde kennismaking zou genoeg moeten zijn. De lezer of lezeres wordt geacht bekend te zijn met het concept opdrachtregel (command line), en met de configuratie middels tekstbestanden. Ook wordt hij of zij geacht basiscommando’s als cd, ls, cat, less, tar en gzip te kennen.
Dit boek is echter niet specifiek gericht op de beginnende beheerder: het probeert deze beginnende beheerder zo snel mogelijk te begeleiden naar ‘echt’ systeembeheer.

Het boek is rijkelijk voorzien van configuratievoorbeelden, en alle onderwerpen worden beschreven en geïllustreerd voor FreeBSD, Debian en CentOS, zodat de systeembeheerder volledig vrij is in de keuze van het besturingssysteem.

→ Meer informatie op www.librobert.net, of bestel het direct in de webshop van mijn uitgever Boom Beroepsonderwijs.

De Franse versie is inmiddels ook zo goed als af, en komt eind september of begin oktober uit.
En ik ben in gesprek met een Amerikaanse uitgever voor de publicatie van de Engelstalige versie.

En voor wie zich afvraagt waarom ik op de kaft Robert heet: Rob is een lastige naam voor Fransen, dus in Frankrijk noem ik me Robert (de naam die overigens ook in mijn paspoort staat). En omdat het boek ook in het Frans uitkomt, en het me een goed idee lijkt om op elke uitgave dezelfde naam te vermelden, is het Robert geworden. In de omgang blijf ik gewoon Rob.

External IP address

I’ve been a freelance web developer for almost 15 years.
One of the most brilliant web pages I ever made, was this one:

<?php
header('Content-Type: text/plain');
echo $_SERVER['REMOTE_ADDR'];
?>

And if you think I’m joking, allow me to give you some background…

The above code returns a page with no other content than the visitor’s IP address. This may seem trivial and rather useless, but consider the following:

You’re developing a website. It’s a website for, obviously, someone who is not a web developer, which means, especially for people of my generation and older, that they know close to nothing about this internet-thing.
At a certain moment, you want to show them what you’ve done so far, but you do not want the rest of the internet to find the website already. But you also know that this person, having other hobbies than learning all the ins and outs of this new technology, will type the URL you send them into the Google search field, thinking that that is the location bar you were talking about. And once Google gets hold of something, you can be sure it will be out there for everybody to find.
So, you need to make sure only your client can access this new website; this way, you can be sure that even if Google has the address, it won’t be able to index the site. And the most practical way to make sure only the client can access the site, is to limit access to the client’s IP address. But how does one explain to this lay person where to find their external IP address?

And that’s why I came up with the code above. With that in place, I could just ask my client to go to https://www.example.com/ip.php, copy all the text they find there, and mail it to me. Their reply would always be something like “It only says 203.0.113.45. Are you sure?“, to which I always replied “That’s all I need. Thank you!“.
The lesson here: When working with lay people, make sure that there is nothing that they may want to interpret or filter.

And even though I no longer develop websites for clients, I still have a use for this page that was invented about 15 years ago; to find my own IP address (I travel a lot) and, with the small enhancement I made, also to verify my TOR connection.

So, I thought I’d share.
And be sure to take notes, because you will need all this for the post that will follow shortly.

Read More

Poire Laide-Hélène

Een beetje simpele variatie op de Poire Belle-Hélène.

Ik had peren gekocht, maar ze waren wat droog en hard om lekker te zijn als handpeer (Rocha). Maar weggooien wilde ik ook niet.
En ik wilde iets maken met m’n nieuwe magnetron, dat ook.

Nodig:

  • peer
  • donkere chocola (ik heb chocola gebruikt met 52% cacao)
  • boter
  • honing
  • vanille-ijs

Schil de peer, snijd ‘m in de lengte in acht puntjes, en verwijder het klokhuis.
Zet een minuutje in de magnetron op half vermogen. Dat maakt ‘m wat zachter, en hij gaat lekker ruiken.

Doe een gram of 50 chocola in een bakje, samen met een gram of 40 boter, en een heel klein beetje honing; niet teveel honing, je wilt de bittere smaak van de donkere chocola niet verbergen, maar versterken. Zet dit 30 seconden tot een minuut in de magnetron; ook op half vermogen, en de magnetron direct stoppen als het gaat borrelen. Zeker niet langer dan een minuut; als de chocola dan nog niet helemaal gesmolten is, los je dat op door te roeren.

Drapeer de peerpuntjes gezellig in een ijsschaaltje, doe er 2 bolletjes ijs bij, en giet er wat saus overheen. Als je heel veel behoefte hebt aan suiker, kan er natuurlijk ook nog een beetje slagroom bij.

Eigenlijk is dat genoeg saus voor 2 of 3, of misschien wel 4 ijsjes, dus ik hoop dat je veel trek hebt…
(Maar hij kan natuurlijk ook in de koelkast of de vriezer voor een volgende keer.)

Zie voor een andere chocoladesaus-variant het recept Chocoladesaus uit 2012.

Smakelijk!

Kaassaus

Een paar jaar geleden deed ik al een kaassaus, maar ik ik heb sindsdien een hoop bijgeleerd, en ik vind deze beter. Veel minder kans dat-ie verbrandt, aankoekt of klontert.

Nodig:

  • half blokje groentebouillon
  • kookroom (crème de Normandie)
  • een scheut witte wijn
  • kaas naar keuze
  • nootmuskaat

Snijd of rasp de kaas, indien nodig, zodat het makkelijker smelt.
Los de bouillon op in een klein beetje water.
Giet dan de room en de wijn erbij.
Meng tot slot de kaas erdoor; blijven roeren.
Breng op smaak met een (heel) klein beetje nootmuskaat.

Als de saus te dun is, maak dan een theelepel Maizena aan in een beetje koud water, roer dat door de saus, en laat nog 2 of 3 minuten pruttelen.

Ik vind het altijd wel leuk om verschillende kazen door elkaar te gebruiken. Vanavond (broccoli, gebakken aardappels, gepaneerde kalkoenschnitzel) waren dat Emmental, Coulommiers, Comté en Parmigiano. De truc is een beetje om een goedkope kaas te nemen waarmee je een basissaus maakt, om vervolgens met lekkerdere kaas de smaak bij te werken. De saus van vanavond zou je in Nederland bijvoorbeeld na kunnen maken met huismerk geraspte kaas + camembert + extra belegen Goudse + parmezaan.

Voor kaassaus over vlees wordt vaak een bleu gebruikt, zoals Roquefort.

Smakelijk!

Doen zonder denken

Dit is een parkeerplaats bij een winkel.
De witte streep op de voorgrond is zo’n reliëfstreep voor blinden.
Zoals je ziet, kunnen blinden dankzij deze streep makkelijk de achterkant van hun auto vinden.

Laat dat even rustig op je inwerken…

Romige kalkoensaus

Ik ben me langzaamaan aan het installeren, en dat betekent dat ik ook het echte koken weer een beetje oppak. En dus voor het eerst in tijden weer een echt recept.

Nodig:

  • 2 kalkoenschnitzels
  • 2 uien (of 1 grote)
  • 1½ – 2 paprika’s, verschillende kleuren
  • champignons
  • 1 kippenbouillonblokje
  • 1 pakje kookroom (crème de Normandie)
  • peper
  • boter
  • eventueel maïszetmeel (bijv. Maizena)

Snijd het vlees in reepjes; niet te dun.
Snipper de ui en de paprika.
Snijd de champignons in plakjes of stukjes.

Smelt wat boter in een pan, en bak daarin de reepjes kalkoen kort aan. Schep het vlees met een schuimspaan uit de pan, en zet het opzij.

Fruit de ui een paar minuten in het achtergebleven vet, en voeg dan de paprika toe. Laat dit even samen fruiten, en voeg dan de paddenstoelen toe. Brokkel het bouillonblokje erbij, en roer het spul door elkaar. Als er niet genoeg vocht vrijkomt om het bouillonblokje op te lossen, doe er dan een scheutje water bij (maar niet teveel); een scheutje witte wijn zou eventueel een alternatief kunnen zijn.

Schep de kalkoen erdoor, en laat het geheel pruttelen totdat de kalkoen gaar is. Voeg dan de room toe, en peper naar smaak, en geef het nog een paar minuten. Als de saus erg dun is, maak dan een theelepel Maizena aan in een beetje koud water, en laat dat nog een minuut of 2 meepruttelen.

Serveer met gebakken aardappels of pasta. Of rijst of aardappelpuree of waar je trek in hebt; dat moet je ook eigenlijk zelf weten.

Smakelijk!

Version control for configuration files

Yesterday I wrote a post about setting up a Subversion server.
Subversion is a great tool for controlling versions of collections of files that are contained in a single root directory (an entire website, development of a software application, etc.). But it’s not the perfect tool for controlling the versions of single files.
So, after yesterday’s post, I now feel somewhat obliged to also document the system I use for controlling the versions of my configuration files.

Read More

Subversion server

Despite the fact that I have set up quite some Subversion servers in the past 15-20 years, I still need to turn to the documentation for the details each time I do it. So, to save myself some time searching and filtering next time, I decided to document it here this time.

Open door: if you don’t know what a Subversion server is, you don’t need this post.

Read More

Pasta met kip-pesto saus – Vegetarisch

Een golden oldie: bij dit recept zie ik al vele jaren mensen hun lippen af likken en hun vingers opeten. Maar dan nu de vegetarische variant, omdat ik vandaag voor vegetariërs moest koken. Ik denk trouwens dat je ‘m heel makkelijk veganistisch kunt maken door een beetje op te letten welke pesto je koopt — in de potjes pesto die ik vandaag kocht zat schapenmelk — of je pesto zelf te maken.

Pak het originele recept erbij: Pasta met kip-pesto saus.
Vervang de volgende zaken:

  • kipfilet → vegetarische kipfiletreepjes
  • spek → vegetarische spekreepjes
  • kipbouillonblokjes → tuinkruiden-bouillonblokjes

Verder heb ik kookroom gebruikt op basis van soja in plaats van melk.
En ik heb een handje ongezouten, ongeroosterde cashewnoten toegevoegd, in de bouillon, voordat ik de room toevoegde.
De penne was trouwens biologisch en volkoren.

Zelf vind ik zaken als vegetarische kip en vegetarisch spek altijd een beetje flauw, en de vegetariërs aan tafel bleken het zelfs nog nooit geprobeerd te hebben, maar ze hebben me verzekerd dat ze lekker gegeten hebben. En dus verdient ook deze variant een plekje op mijn blog.