YubiKeys

De afgelopen tijd zijn de nodige bedrijven gehackt waaronder ook wat telecombedrijven. M’n baas kreeg daar de kriebels van en heeft een zak met YubiKeys aangeschaft. Of ik de authenticatie met die dingen even kon implementeren voor het hele netwerk.

Met YubiKeys kun je tweeweg authenticatie opzetten, in ons geval LDAP authenticatie in combinatie met de YubiKeys. Maar een LDAP server was er ook nog niet. SSH’en bijvoorbeeld ging met lokale accounts en ik werk wel met keys maar mijn collega’s niet. Vragen om moeilijkheden dus eigenlijk.

Van LDAP had ik weinig kaas gegeten maar uiteindelijk kwam ik na wat tips van mijn chef uit bij OpenDJ, een op Java gebaseerde LDAP directory server. OpenDJ installeren is redelijk eenvoudig, alleen staat nergens beschreven hoe je dit echt veilig moet doen. Het viel me al op dat er in de installatiehandleiding niet-standaard LDAP poorten gebruikt werden hoger dan 1024. Dit zijn unprivileged poorten die geopend mogen worden door gewone gebruikers dus heb het ook zo opgezet, dus dat OpenDJ draait onder een systeemuseraccount wat verder niks mag.

Volgende stap was het opzetten van een RADIUS server voor de YubiKeys. Je kan natuurlijk ook direct tegen de Yubico servers authenticeren maar die kun je voor zover ik weet niet koppelen aan je eigen LDAP server en ook niet goed beheren qua gebruikers. Ik ben degene die bepaalt aan wie welke YubiKey wordt toegewezen die toegang krijgt tot ons netwerk, niet de collega’s zelf. Voor het opzetten van een dergelijke server heb ik de YubiRADIUS Virtual Appliance gebruikt, een VMware image dat ik gedeployed heb op onze ESXi server. Dat is een Debian 6 installatie die ik nog wel wat heb moeten tweaken, ik ga bijvoorbeeld echt geen netwerkinstellingen op een server configureren via Network Manager.

Wat users opgevoerd in LDAP, YubiKeys toegewezen op de YubiRADIUS server, maar hoe nu verder? Hoe zet ik de tweeweg authenticatie op voor bijvoorbeeld SSH toegang? De beschikbare documentatie is summier en wat betreft het opzetten van tweeweg authenticatie met behulp van LDAP en YubiKeys onder Linux is er eigenlijk helemaal geen documentatie beschikbaar. Dit moet je met PAM doen en er is een YubiKey PAM module beschikbaar maar hoe je de authenticatie uiteindelijk moet implementeren wordt nergens beschreven.

Uiteindelijk heb ik het goed werkend gekregen en ik zal proberen om de werkende configuratie om via SSH in te loggen met behulp van YubiKeys en LDAP authenticatie te beschrijven in een vervolgentry.

YubiKeys

Geniaal spul

In de KLANG discussie geeft datenwolf aan dat het niet vaak voorkomt dat je meer dan 256 kanalen tegelijkertijd nodig hebt dus met dat soort usercases hoef je niet zo veel rekening te houden. Prompt komt Paul Davis met een reply waar je eigenlijk niks tegenin kan brengen (behalve dan dat het misschien inderdaad wel een erg extreme usercase is). Een topic over een mixing console van ruim 6 meter lang met 384 inputs, een monsterlijk apparaat van Harrison Consoles (de MPC4-D) die dus op Linux draait.

Harrison MPC4-D console, 384 inputs, 112 faders en 3000 EQ bands

De CPU power voor de console, zo te zien 12 servers waarop Linux draait, aan elkaar geknoopt via gigabit ethernet

Geniaal spul

De beer is los

En hij heet KLANG – Kernel Level Audio Next Generation. Een medewerker van een universiteit In München vindt de hele Linux audio stack maar niks, al dat user space gedoe, dat moet allemaal in kernel space gebeuren. En op basis van OSS want ook de ALSA driver stack is natuurlijk helemaal crap. En omdat het allemaal fundamenteel verkeerd is gaat hij van de grond af iets nieuws bouwen. Dus hij legt een websiteje aan, doet een aankondiginkje en verwondert zich er vervolgens over dat het wordt opgepikt.

En als vervolgens Phoronix en zelfs Paul Davis (de belangrijkste man achter Ardour en JACK) er aandacht aan gaan besteden heeft datenwolf heel wat uit te leggen. Ik wens hem heel veel succes, zowel met KLANG als met het uitleggen waar hij nou mee bezig denkt te zijn.

De beer is los

Vakantie

We waren twee weekjes op vakantie. En dan kom je terug en zie je dat er allerlei coole dingen zijn gebeurd:

  • In de laatste editie van Linux Format staat een zeer prositieve review van Qtractor 0.5.5
  • setBfree is gereleased, een op Beatrix gebaseerde Hammond kloon, maar dan met een GPL licentie
  • Guitarix is ook weer een versie verder, 0.23.3. Gebruik guitarix de laatste tijd veel. Fijn stukkie zachte waar.
  • Rui heeft z’n proto-toys geüpdate naar versie 0.0.8. Zijn al erg bruikbare LV2 plug-ins!

Later meer over dit alles in aparte blog entries.

Vakantie

Yoshimi 1.0.0

Op 2 juli is Yoshimi 1.0.0 uitgekomen ter nagedachtenis van Alan “Cal” Calvert die op die dag precies een jaar geleden overleden is. Naast wat kleine aanpassingen en patches is het vooral een eerbetoon aan Alan Calvert. En Yoshimi is stabiel genoeg voor een 1.0.0 release. De planning is nu dat ik ga werken aan het aanpassen van de sources om Yoshimi 1.x.x weer dichter bij ZynAddSubFX te brengen zodat op de lange duur de projecten samen zouden kunnen smelten. De ontwikkelbranch (nu 0.062.x) zal wel blijven bestaan.

Yoshimi 1.0.0

Zelf een real-time kernel bouwen voor Ubuntu 12.04

De real-time kernel uit de PPA van Alessio Bogani liep bij mij nog wel eens vast dus heb ik er zelf een gebouwd met de meest recente 3.2 kernel en bijbehorende RT patchset. En dit draait een stuk stabieler, nog geen lockups gehad.

Een eigen kernel bouwen is gelukkig nog steeds niet zo heel moeilijk, met Ubuntu kun je zelfs heel gemakkelijk pakketten maken met behulp van de make-kpkg utility. Na wat googlen kwam ik onderstaande handleiding tegen en simpeler kan het bijna niet.

Installeer de benodigde pakketten:

sudo apt-get install kernel-package fakeroot build-essential libncurses5-dev

Download de kernel sources en de RT patchset:

mkdir -p ~/tmp/linux-rt
cd ~/tmp/linux-rt
wget -c http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.28.tar.bz2
wget -c
http://www.kernel.org/pub/linux/kernel/projects/rt/3.2/patch-3.2.28-rt42.patch.bz2

Pak de kernel sources uit en patch deze met de RT patchset:

tar xjvf linux-3.2.28.tar.bz2
cd linux-3.2.28
patch -p1 < <(bunzip2 -c ../patch-3.2.28-rt42.patch.bz2)

Nu moet je de kernel nog configureren. De gemakkelijkste manier is om een bestaande kernel config te nemen, deze staan in de /boot directory van je systeem. Kopieer een config naar je werkdirectory en gebruik deze als uitgangspunt:

cp /boot/config-$(uname -r) .config

Dit commando kopieert de kernel config van de kernel die je op dat moment gebruikt. Je kunt ook de config van een andere kernel gebruiken, bijv. die van de Ubuntu lowlatency kernel aangezien deze al geoptimaliseerd is voor Linux audio toepassingen. De volgende stap is om een kernel config aan te maken met full preemption ingeschakeld aan de hand van de gekopieerde kernel config:

make oldconfig

Je kunt alle prompts wegklikken met Enter, behalve de prompt welk Preemption Model je wilt gebruiken. Selecteer daar 5 (Fully Preemtible Kernel):

Preemption Model
> 1. No Forced Preemption (Server) (PREEMPT_NONE)
  2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)
  3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT__LL) (NEW)
  4. Preemptible Kernel (Basic RT) (PREEMPT_RTB) (NEW)
  5. Fully Preemptible Kernel (RT) (PREEMPT_RT_FULL) (NEW)
choice[1-5]: 5 <Enter>

Workaround voor https://bugs.launchpad.net/ubuntu/+source/kernel-package/+bug/602405:

sed -rie 's/echo "+"/#echo "+"/' scripts/setlocalversion

Nu kun je de kernel gaan bouwen:

make-kpkg clean
CONCURRENCY_LEVEL=$(getconf _NPROCESSORS_ONLN) fakeroot make-kpkg
--initrd --revision=0 kernel_image kernel_headers

Als het bouwen klaar is (kan een tijd duren) kun je de kernel pakketjes installeren:

cd ..
sudo dpkg -i linux-{headers,image}-3.2.28-rt42_0_*.deb

Rebooten, nieuwe real-time kernel selecteren in je bootloader (GRUB) en je systeem zou nu moeten booten met de net gebouwde real-time kernel.

Zelf een real-time kernel bouwen voor Ubuntu 12.04