Gratis SSL certificaat

Als je een website hebt, dan is het inmiddels gebruikelijk om een SSL certificaat te installeren. Nu heb ik reeds enkele jaren SSL certificaten op mijn sites via StartSSL. Het vernieuwen hiervan is echter een jaarlijks terugkerend handmatig proces. Als je voor de eerste keer een certificaat aanmaakt zul je nogal wat stappen moeten doorlopen. Dit ziet er ongeveer zo uit:

Handmatig SSL via StartSSL

Je moet dan:

-een account aanmaken bij StartSSL,

-een versleuteld email SMIME client certificaat aanmaken en

-deze installeren in je browser zodat je kunt inloggen.

Daarna moet je:

-voor je site het domein valideren,

-een SSL certificaat aanmaken en

-het certificaat installeren op je server

Je kunt per certificaat 10 subdomeinen kiezen, maar de certificaten mogen niet worden gebruikt als er betalingen worden verricht op je site. Er zijn dus ook URL’s die niet worden ondersteund, zoals URL’s waarin het woord ‘shop’ voorkomt. Daarbovenop passen ze het proces regelmatig aan, dus zul je steeds even moeten inlezen over hoe het werkt.

Automatisch SSL via Let’s Encrypt

Nu zag ik dat binnenkort WordPress SSL certificaten verplicht gaat stellen voor sommige functionaliteiten (zie deze post). En hierin wordt Let’s Encrypt genoemd. Toen ik dit las, kwam ik erachter dat deze dienst gratis SSL levert inclusief de mogelijkheid om deze automatisch te verlengen. Dit betekent dus dat je het eenmalig instelt en daarna kunt vergeten. Geweldig!

Ik wilde dit natuurlijk meteen implementeren en kwam er toen achter dat je hiervoor een programmaatje moet installeren dat deze taak voor je gaat uitvoeren. Dit betekende dat er twee belangrijke verschillende scenario’s zijn om Let’s Encrypt te gebruiken.

  1. Je hebt een eigen server.
  2. Je maakt gebruik van een hosting provider.
  1. Als je een eigen server hebt, dan heb je meestal volledige controle over je server en kun je een programmaatje installeren van Let’s Encrypt dat het proces voor je uitvoert.
  2. Als je echter een provider hebt, dan heb je deze mogelijkheid meestal niet. Dan moet jouw provider Let’s Encrypt ondersteunen en dus het programmaatje hebben geïnstalleerd voor je.

Mijn provider had dit inmiddels gedaan en ik kon dus simpelweg een gratis Let’s Encrypt SSL certificaat laten aanmaken door een vinkje te zetten. Het certificaat werd vervolgens automatisch aangemaakt en geïnstalleerd. Vervolgens wordt deze ook nog eens automatisch periodiek verlengd. Ideaal!

Let’s Encrypt ga ik dus voortaan gebruiken omdat dit zeer onderhoudsvriendelijk is. Het enige puntje is dat mijn ISP slechts op enkele voorgedefinieerde subdomeinen Let’s Encrypt certificaten toestaat. Dus als ik specifieke subdomeinen wil handhaven ben ik nog steeds gebonden aan handmatige certificaten van StartSSL. Daar kan ik namelijk 10 subdomeinen kiezen per certificaat.

SYN flood aanval: server onbereikbaar en router traag

Mijn server reageert niet meer, mijn router is traag en mijn router log toont SYN flood aanvragen. Wat moet ik nu doen? Hoe los ik dit op?

Recentelijk ben ik in aanraking gekomen met een DOS aanval. Een SYN flood aanval. Interessant gegeven. Als particulier het slachtoffer worden van een DOS aanval. De eerste vraag die je dan stelt is: Waarom? Hoe kan dat nu? Zo interessant ben ik toch niet? Ik ben maar een enkele particuliere gebruiker? Wat maakt het interessant om mij aan te vallen? Wie mag mij niet?

Eerst een stukje context. Het viel me op dat ik mijn cloudserver niet meer kon bereiken. Toen ben ik gaan kijken of ik gekke dingen kon vinden op mijn server. Kan ik nog inloggen via ssh? Zijn alle updates gedraaid? Is mijn webserver nog ‘up’. Wat zeggen de logs? Toen ik had vastgesteld dat er niets bijzonders aan de hand leek te zijn met mijn server, heb ik updates gedraaid en mijn server herstart. Dit loste het probleem niet op. Toen ben ik gaan kijken op mijn router. De router gaf aan dat er ‘syn flood’ aanvragen vanuit verschillende IP’s richting mijn IP adres zijn gestuurd. Toen ging ik zoeken naar wat SYN Flood is. En dit bleek een DoS (Denial of Service) aanval te zijn.

Een SYN FLOOD aanval zorgt (zoals hier te lezen) ervoor dat er meerdere (synchronous) verbindingsaanvragen worden gestuurd naar een server. Deze aanvraag wordt gedaan vanuit een ‘niet bestaand’ of ‘gespoofed’ IP adres. De server reageert hierop en wacht op antwoord. Dit antwoord komt niet en dus wacht de server een time out periode. In de tussentijd reserveert de server ruimte en wanneer alle ruimte gebruikt is, reageert de server niet meer op andere aanvragen. Vervolgens krijgt de server weer een aanvraag. Het gevolg van dit soort aanvallen is dat de server niet meer bereikbaar is voor ‘legitieme’ aanvragen.

Na nog iets verder zoeken lijkt het erop dat dit niet zozeer een gerichte aanval op mijn server is, danwel een gerichte aanval op IP adressen behorende bij mijn ISP (internet service provider). De aanval was ook gericht op meerdere poorten van mijn router en mijn server op slechts op (een) enkele poort(en) open staat.

Nu ik dacht te weten wat het probleem was, wat kan ik dan doen?

  1. Het eerste wat ik heb geprobeerd was ‘googlen’ wat hieraan te doen is. Op linux zijn er mogelijkheden om SYN FLOOD attacks tegen te gaan. Bijvoorbeeld door de time out periode te verkleinen, wellicht beter nog het commando “echo -n 1 > /proc/sys/net/ipv4/tcp_syncookies” zoals aangegeven in deze ‘thread’. Dit is op mijn eigen linux server mogelijk, maar op een Router van een ISP helaas niet altijd.
  2. Toen herstartte ik mijn router van mijn ISP en poef … alles werkte weer. De syn flood aanval(len) leken ook meteen gestopt.  Het probleem was dus opgelost nadat ik mijn router had herstart.
  3. Ergens ook wel jammer, want nu kan ik niet meer testen of die andere oplossing werkt. Dus voor de volgende keer …

ownCloud log in Logwatch deel 2

Wanneer je ownCloud gebruikt als eigen cloud zul je er ook snel achter komen dat je nog steeds moet inloggen om de ownCloud log te bekijken. Daarvoor is deze post. Het geeft antwoord op de vraag: “Hoe zorg ik dat het ownCloud log in Logwatch wordt opgenomen?”.

Het antwoord is uiteindelijk vrij simpel, maar ik heb het volledige antwoord nog nergens kunnen vinden. Daarom deze instructie. Omwille van de lengte is deze in twee delen opgesplitst. Het eerste deel gaat over het inrichten van ownCloud. Het tweede deel gaat over het inrichten van Logwatch zodanig dat deze het ownCloud log meeneemt. Dit is deel 2, deze gaat er vanuit dat je ownCloud log in Logwatch deel 1 reeds doorlopen hebt.

Deel 2: ownCloud log in Logwatch opnemen

Hier wordt ervan uitgegaan dat de ownCloud server draait op Raspbian, zijn deze instructies ook daar primair voor bedoeld. Waarom? De Raspberry kost maar 30 euro en draait op 5 Watt. Reken wel mee dat je een of meer SD kaarten, een voeding, een kastje en waarschijnlijk een harde schijf nodig hebt, dus kom je in totaal op meer uit. Maar hoe krijg je nu die ownCloud log in Logwatch?

Logwatch leest de scripts uit in /usr/share/logwatch/scripts/services/. Als je hierin een bestand plaatst met de naam owncloud en met een juist script erin, dan wordt deze opgenomen in de email. Simpel! Kopieer een bestaand script en pas deze aan zodat het ownCloud log wordt uitegelezen en in Logwatch wordt uitgespuugt.

2a. waar staat het script?

nano /etc/logwatch/conf/logfiles/owncloud.conf

# The LogFile path is relative to /var/log by default.
# You can change the default by setting LogDir.
LogFile = /var/log/owncloud/*.log

# This enables searching through zipped archives as well.
Archive = /var/log/owncloud/*.gz

# Expand the repeats (actually just removes them now).
*ExpandRepeats

2b. wat moet in de email?

nano /etc/logwatch/conf/services/owncloud.conf

# The title shown in the report.
Title = “ownCloud”

# The name of the log file group (file name).
LogFile = owncloud

2c. welke regels wil je zien?

Hier is een eenvoudig voorbeeld voor een script dat het volledige log van de voorgaande dag in de email opneemt:

#!/usr/bin/perl

#ownCloud standard environment variables
$DateRange = $ENV{‘LOGWATCH_DATE_RANGE’} || yesterday;

if ($DateRange =~ /yesterday/) {
$epoc = time();
$epoc = $epoc – 24 * 60 * 60; # one day before of current date.
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($epoc);
$DateString = sprintf(“%04d-%02d-%02d”, $year+1900, $mon+1, $mday);
$DateString = $DateString.”T”;
}

while (defined($ThisLine = <STDIN>)) {
$ThisLine =~ s/\\//g;
$ThisLine =~ s/%20/ /g;
$FullLog{$ThisLine}++;

#filter for datarange yesterday
if ( ($DataRange = yesterday) and ($ThisLine !~ /$DateString/) ) {
#don’t care about these
}
else {
# Report any unmatched entries…
chomp($ThisLine);
$Unmatched{$ThisLine}++;
}
}

if (keys %Unmatched) {
print “\n**Unmatched Entries**\n”;
foreach $ThisOne (keys %Unmatched) {
print ” $Unmatched{$ThisOne} Time(s): $ThisOne\n”;
}
}

exit(0);

Nu heb je het ownCloud log in Logwatch opgenomen. Maar het kan nog beter toch?

2d. maak het leesbaar

Het script in kale vorm plaatsen is een relatief simpel klusje. Als je simpelweg het gehele log wilt laten uitspugen, dan is dit gelukkig niet moeilijk. Het bovenstaande script laat het volledige log in de email meesturen en haalt een aantal ‘onleesbare’ tekens eruit (de \ en de%20) en vervangt deze.  Echter om de gegevens in een beter interpreteerbare vorm te krijgen zul je nog wat moeten tweaken. Dit is nog ‘work in progress’.

Hierbij kunnen de volgende linux instructies van pas komen:

Test het script:

cat /owncloud/owncloud.log | perl /usr/share/logwatch/scripts/services/owncloud

Test logwatch:

logwatch –detail high –mailto name@domain.com –service all –range yesterday

 

 

ownCloud log in Logwatch deel 1

Wanneer je ownCloud gebruikt als eigen cloud zul je er snel achter komen dat je nog steeds moet inloggen om het ownCloud log te bekijken. Daarvoor is deze post. Het geeft antwoord op de vraag:

“Hoe zorg ik dat het ownCloud log in Logwatch worden opgenomen?”.

Het antwoord is uiteindelijk vrij simpel, maar ik heb het volledige antwoord nog nergens kunnen vinden. Daarom deze instructie. Omwille van de lengte is deze in twee delen opgesplitst. Dit eerste deel gaat over het inrichten van ownCloud. Het tweede deel gaat over het inrichten van Logwatch zodanig dat deze het ownCloud log meeneemt. Lees het vervolg in ownCloud log in Logwatch deel 2!

Voorwaarde: een server met ownCloud en Logwatch

Over het bouwen van een ownCloud server en het installeren en configureren van Logwatch is veel informatie te vinden op het internet. Maar niet hoe je het ownCloud log in Logwatch opneemt. Daarom wordt hier niet ingegaan op bouwen van een server met ownCloud en Logwatch. Dit is de basis, als je dit kunt, dan is het configureren van Logwatch wat hierna wordt behandeld zeker binnen bereik.

Deel 1: ownCloud log directory

In ownCloud kun je op twee manieren de logs laten wegschrijven. Standaard worden deze in een afzonderlijke directory geplaatst (data directory). Maar het is ook mogelijk om deze in het systeemlog op te laten nemen. In dit geval wordt ervan uitgegaan dat het logbestand in een afzonderlijke directory worden geplaatst, /owncloud/owncloud.log

Stap 1a: zet de rechten goed

Zorg dat je webserver bij het owncloud log kan.

chown www-data:www-data /owncloud

chmod 770 /owncloud

chmod 660 /owncloud/owncloud.log

Stap 1a: owncloud.conf

Voeg de locatie van je log toe in het owncloud configuratie bestand.

nano /var/www/owncloud/config/owncloud.conf

‘logfile’ => ‘/owncloud/owncloud.log’,

Stap 1c: log rotatie

Omdat het roteren van logs door het programma logrotate specifieke rechten vereist, heb ik ervoor gekozen een cronjob aan te maken waarin het log dagelijks wordt geroteerd:

nano /etc/cron.daily/00logwatch

#!/bin/sh
DATE=`date +%Y%m%d`
logwatch –detail high –mailto name@domain.com –service all –range yesterday
mv /var/log/owncloud/owncloud.log /var/log/owncloud/owncloud$DATE.log
gzip /var/log/owncloud/owncloud$DATE.log

 

Het einde van couchpotato

download (1)Menig HTPC liefhebber heeft gehoord van het programma couchpotato. Dit is een programma voor het geautomatiseerd downloaden van films. Het maakt gebruik van de IMDB database om informatie over films op te halen en zoekt gewenste films op in torrents. Echter Sinds 2014 is het downloaden van de meeste content via dit programma illegaal geworden. Alleen als je legale content download is dit programma dus nog te gebruiken. Maar hoe bepaal je welke content je wel mag downloaden en welke niet?

De torrent providers die er in staan zijn o.a. the pirate bay. Deze staat toch bekend om illegale content, toch? Ik kan er dus niet van uitgaan dat de content die ik hiermee download legaal is. Hoe mooi het programma ook is (je kan een wensenlijst aanmaken en de films geautomatiseerd op je server laten plaatsen met ondertitels, trailers en meer) met het verbod op downloaden van illegale content is dit programma zo goed als nutteloos geworden omdat je er niet vanuit kan gaan dat je legale content download. Daar komt nog bij dat de aanbieders van illegale content aangepakt worden en dus het aanbod van illegale content steeds kleiner wordt.

Ik ben benieuwd of er al iemand is die een manier heeft bedacht om dit programma een legale toepassing te geven.

Overwegingen voor een server

serverMet het werkend krijgen van een HTPC of een media center ontstaat (in ieder geval bij mij) als snel de behoefte om ook een server te bouwen en neer te zetten.

Een server biedt heel veel mogelijkheden om media te delen en te streamen.

Met Kodi is het bijvoorbeeld mogelijk om (wanneer de server een tuner heeft die het dvb-c signaal decodeert) vanaf een server een digitale tv signaal te ontvangen. Dit is legaal zolang je per tuner een kaart heb voor het decoderen, niet boven het aantal toegestane kaarten uitgaat, en niet boven het aantal apparaten uitgaat waarop je van de provider mag kijken.

Na enig uitzoekwerk heb ik een van mijn PC’s ingezet als server en inmiddels werkt dit prima. Een keurige 4 threaded cpu (dual core) met virtualisatie mogelijkheden. Deze draait op ubuntu 14.04 met daarop enkele kvm virtuele machines. Aangezien het inmiddels lekker werkt blijkt ook het kostenaspect in beeld te komen.

Als een server 24 uur per dag aanstaat kost dit geld. Voor 5 Watt (Raspberry Pi) betaal je ongeveer 7 euro per jaar. Voor een gewone dual core (65 watt) gaat dit al naar zo’n  90 euro per jaar. Nu zal deze niet altijd 65 watt vragen in idle stand, maar met een 4-tal harde schijven (4x5watt) in btrfs raid opstelling plus en wat randapparatuur zoals een tuner en een kaartlezer loopt dit al snel op.

Hierdoor wordt het minder interessant om zelf een server te draaien die altijd aan staat, en dat is uiteindelijk wel het doel van een server. Het wordt daardoor zinvol om te gaan zoeken naar alternatieven. Ik bedacht er zo een aantal.

Als eerste oplossing heb ik de server ingesteld dat deze na enige inactiviteit op ‘idle’ springt (in mijn geval s3). Dit werkt als een speer. In idle stand kost het minder energie. Een nadeel is echter dat er een wake on lan packet nodig is om deze aan te zetten. Nu zijn er in bijvoorbeeld Kodi plugins die dit kunnen, maar het automatisch aan- en uitzetten via Kodi vind ik niet geweldig werken. Bijvoorbeeld Advanced Wake On Lan werkt wel, maar stuurt bijvoorbeeld bij opstarten een signaal en niet ‘on demand’. Hierdoor wordt de server vaak onnodig aangezet en ook dit werkt niet altijd vlekkenloos. Dit is dus alles bij elkaar (nog) niet de meest geweldig oplossing. Er is inmiddels een oplossing in Kodi voor het ‘on demand’ aanzetten van de server, maar ook dit werkt niet altijd ‘on demand’. Bijvoorbeeld wanneer je de tv server wilt gebruiken (via tvheadend) wordt verwacht dat de tv headend plugin de tv server aanzet. Helaas is dit dus ook niet de oplossing.

Als tweede oplossingsrichting kun je denken aan een 5 watt server met een Raspberry Pi. Dit lijkt geweldig, maar dan heb je nog altijd de randapparatuur die ook stroom gebruikt. Deze zul je moeten ‘idlen’ bij inactiviteit. De Raspberry Pi heeft geen pci, geen gigabit en geen sata (wel 4 usb poorten, maar dit is USB 2 en dus een stuk minder snel dan sata of (‘snelle’) usb 3. Ook draait de Raspberry Pi op ARM en nog niet iedere software ondersteunt dit platform. Het bouwen van en volwaardige server op de Pi is dus nog een uitdaging.

Als derde oplossing kun je denken aan een ‘volwaardige’ amd64 server op Intel architectuur, maar dan met een laag wattage. Het nadeel is hier dat dit een stuk duurder is en dat de mogelijkheden nog beperkt zijn wanneer de hardware een laag wattage heeft. Een 35 wat server is haalbaar wellicht zelfs lager, maar een server op 5 watt (bijvoorbeeld een Atom server) levert vooralsnog een uitdaging op. Kortom als je een server wilt met echt laag energie gebruik, dan zul je nog wat uitzoekwerk moeten doen en is het op dit moment nog maar de vraag of het je lukt dit te bouwen.

Hoe zorg ik voor sterk genoeg signaal met veel dvb-c tuners

Als je een server met meerder dvb-c tuners aanlegt zul je ook je coax kabel moeten aftakken zodat je ze individueel kunt aansluiten. Met iedere aftakking en dus overdracht raak je signaalsterkte en/of kwaliteit kwijt. Dit kun je oplossen door een versterker en goed materiaal te gebruiken. Hoe dit moet? Een goede uitleg vindt je hier:  http://www.hirschmann.org.uk/.

Ik heb zelf voor de volgende configuratie gekozen en ga deze aanleggen:

Voorbeeld van een installatie met 8 aansluitingen

 

Gebruikte materialen:

 

1x TRAS1000  Signaal Overname Punt  (deze is vaak al aanwezig in de meterkast)
1x KOKWI3      Hirschmann coax plug female
1x GHV30E      Hirschmann regelbare antenne versterker, GHV20E , 29dB versterking
11x SFC070     Hirschmann F- konnektor, voor KOKA799 kabel
1x AFC2081     Hirschmann multitap met doorvoer AFC2081 – 8-voudig
1x RFC75         Hirschmann Afsluitweerstand – Voor de niet gebruikte uitgang van de multitap
8
x EDC01         Hirschmann Antenne Einddoos
8x AD350         Afdekplaat voor de antennedoos voor NL en België  (de afgebeelde AD23 is voor andere landen)
8x AR20           Opbouwrand voor de antennedoos (alleen nodig indien voor opbouw montage gekozen wordt)
KOKA799        Hirschmann antennekabel in wit of zwart

 

Nu hoef ik natuurlijk niet alle genoemde materialen te gebruiken. In mijn opzet kan ik volstaan met:

1x GHV30E      Hirschmann regelbare antenne versterker, GHV20E , 29dB versterking (tweedehands aangeschaft via marktplaats)

5x SFC070     Hirschmann F- konnektor, voor KOKA799 kabel (nu heb ik nog geen 11 stuks nodig)

1x AFC2081     Hirschmann multitap met doorvoer AFC2081 – 8-voudig (ga ik nog aanschaffen)

5x RFC75         Hirschmann Afsluitweerstand – Voor de niet gebruikte uitgang van de multitap (als je niet alle uitgangen gebruikt moet dit geloof ik)

KOKA799        Hirschmann antennekabel in wit of zwart (ik heb nog een 5 meter hirschmann kabel liggen met een Male en een Female aansluiting)

2x KOSWI3        Hirschmann Male antenne stekker (moet ik nog aanschaffen)

Even knutselen en ja hoor. Geweldig signaal overal. Het werkt!

 

 

TVheadend

Het is wat eenvoudiger dan MythTV. Dit is ook meteen de kracht van het programma en heeft daarom veel voordelen:

1. TVheadend werkt vrijwel direct out of the box op Ubuntu Server 10.04.

2. Er zit een softcam in geintegreerd. Dit betekent dat je geen additionele softcam software nodig hebt. Weg met SASC-NG dus. Je hebt alleen nog een cardserver nodig. Ik gebruikte newcs met SASC-NG. Deze werkt ook gewoon met TVheadend. Geweldig. Ik had in ‘no time’ een tv server staan met twee tuners.

3. Doordat de dvbloopback module niet meer nodig is (gebruikt SASC om virtuele cams te maken waar de gedecodeerde mpeg stream naartoe gaat) is ook het probleem met de tuners opgelost. Deze werden direct herkend en konden gebruikt worden. Prachtig.

4. TVheadend gebruikt geen database om gegevens over films op te slaan. De gegevens worden in het mkv format (VLC player) om opgeslagen en werkt als zodanig op een soortgelijke manier als Windows Media Center.

Helaas heeft de simpliciteit van TVheadend ook nog enkele nadelen.

1. Er is minder ondersteuning voor het categoriseren van televisie opnames. Dit kun je natuurlijk wel compenseren door een directory structuur aan te maken.

2. Het is vooralsnog niet mogelijk om tv te pauseren (via de nog niet uitontwikkelde xbmc pvr functie)

 

Media Server

homeandessentials753Het is eindelijk gelukt. Er staat een werkende media server in mijn meterkast. Ik kan nu:

 

  • tv streamen
  • bestanden delen
  • tv opnemen terwijl ik tv kijk
  • betaal tv softwarematig decoderen
  • reclame eenvoudig uit opgenomen video’s knippen

Het lijkt niet veel, maar het heeft nogal wat voeten in de aarde gehad om alles werkend te krijgen.