Tag Archives: freebsd

Bestands encryptie met scrypt

In mei 2009 is de tool scrypt geschreven door Colin Percival, de huidige Security Officer van FreeBSD. Wat scrypt nu precies is en kan, kun je lezen op de webpagina, in het kort komt het neer op de volgende quote:

A simple password-based encryption utility is available as a demonstration of the scrypt key derivation function. On modern hardware and with default parameters, the cost of cracking the password on a file encrypted by scrypt enc is approximately 100 billion times more than the cost of cracking the same password on a file encrypted by openssl enc; this means that a five-character password using scrypt is stronger than a ten-character password using openssl.

Klinkt allemaal goed, maar wat ik wil is gewoon een simpele methode om mijn bestand met wachtwoorden beschermen, zodat bij verlies of diefstal, ik niet een megaprobleem heb. Het merendeel van de wachtwoorden die in dat bestand staan, zijn automatisch gegenereerd en bestaan uit minimaal 10 karakters, dus als ik die kwijt ben, weet ik ze ook echt niet meer 🙂

Op een FreeBSD systeem kun je scrypt installeren vanuit de ports collectie (/usr/ports/security/scrypt), voor andere OS’en dien je de source te downloaden en zelf de compileren.

Het aanmaken van een gecrypt bestand gaat met scrypt erg simpel.

scrypt enc infile outfile

In bovenstaand voorbeeld is infile je bronbestand welke je wilt crypten en outfile het gecrypte bestand. Scrypt zal je bij het uitvoeren twee maal vragen om de passphrase (wachtwoord) waarmee je het bestand wilt beveiligen. Na het aanmaken van outfile, moet je natuurlijk wel je bronbestand verwijderen, maar controleer eerst of je het bestand kunt decrypten.

Decrypten gaat als volgt:

scrypt dec outfile

De output wordt op het scherm getoond (STDOUT), wil je de output naar een bestand hebben, dan zet je uiteraard ‘> newfile‘ achter bovenstaand commando, waarbij newfile de naam is van je gewenste bestandsnaam.

Enjoy!

Updating FreeBSD systemen

Vandaag was de temperatuur eindelijk zover gedaald, dat ik het laatste systeem welke nog niet op FreeBSD 8.0 draaide, kon updaten. De (virtuele) machine die zorgt draagt voor de interne services (LDAP, DNS, MySQL, Syslog en Subversion) is nu dus ook over. De laatste tijd kreeg ik al dagelijks een melding dat de versie van FreeBSD die er op draaide, niet meer ondersteund werd, en dan wordt het toch wel tijd 🙂

TinyBSD Access Point :: FreeBSD 8.0 Stable

Sinds afgelopen maandag ben ik de gelukkige eigenaar van een iPhone 3GS 32GB, maar zoals zo vaak met nieuwe gadgets, was ook hier wel weer wat aan de hand. De wireless verbinding op iphone viel na een paar seconden uit en dan duurde het weer even voordat er een verbinding tot stand werd gebracht die het weer een paar seconden volhield, niet echt waar ik op zat te wachten uiteraard.

Het AP wat ik gebruik is gebaseerd op een Wrap embedded bordje van www.pcengines.ch, die ik met de TinyBSD scripts heb voorzien van FreeBSD. Dat gaf mij gelukkig dus wel de mogelijkheid om fatsoenlijk te onderzoeken wat er nu precies mis ging. De logging liet mij het volgende zien

hostapd: ath0: STA xx:xx:xx:xx:xx:xx WPA: EAPOL-Key timeout
hostapd: ath0: STA xx:xx:xx:xx:xx:xx IEEE 802.1X: unauthorizing port
hostapd: ath0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: deauthenticated due to local deauth request
hostapd: ath0: STA xx:xx:xx:xx:xx:xx IEEE 802.11: deassociated

Na wat Googlen kwam ik er achter dat een upgrade naar een nieuwere FreeBSD en dus ook allerlei recentere wifi gerelateerde code mijn probleem zeer waarschijnlijk zou oplossen. Het was al een hele tijd geleden dat ik voor het laatst een compact flash image had gemaakt, dus ik moest eerst een nieuwe build omgeving inrichten, dat heb ik gedaan door FreeBSD 8.0 te installeren in een verse virtuele (vmware) machine. Deze is na de installatie van de release CD meteen geupgrade naar 8.0 STABLE.

Helaas is de huidige TinyBSD configuratie niet meer compatible met 8.0, er worden onder andere kernel configuratie bestanden van FreeBSD 7.* meegeleverd. Ik vermoed de de meerderheid van de gebruikers inmiddels NanoBSD gebruiken ipv TinyBSD, toch jammer want er zit heel wat code van mijzelf in (de port build constructie is onder andere van mijn hand). Voor mijn wrap doosje heb ik een custom kernel config gemaakt op basis van FreeBSD 8.0 en tevens de tinybsd.basefiles geupdate aan de nieuwe situatie.

Het meeste spannende was trouwens de nieuwe Wifi configuratie in FreeBSD 8.0, die nu ook Virtual AP’s (VAP) ondersteund. Maar goed, dat is na wat lees- en uitzoekwerk ook weer gelukt. In de /etc/rc.conf staat nu (o.a.) het volgende:

cloned_interfaces=”bridge0″
ifconfig_ath0=”up”
ifconfig_sis0=”up”
wlans_ath0=”wlan0″
create_args_wlan0=”wlanmode hostap”
ifconfig_wlan0=”inet 10.10.10.10 netmask 255.255.0.0 ssid myssid channel 3 mode 11g”
ifconfig_bridge0=”addm wlan0 addm sis0 up”
hostapd_enable=”YES”

/etc/hostapd.conf bevat het volgende

interface=wlan0
driver=bsd
logger_syslog=-1
logger_syslog_level=0
logger_stdout=-1
logger_stdout_level=0
debug=4
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
ssid=myssid
wpa=2
wpa_passphrase=mysecret
wpa_key_mgmt=WPA-PSK

De meeste opties zullen voor zichzelf spreken, echter 2 wil ik hier nog wel uitleggen.

wpa

Hiermee geef je aan welke vorm van WPA je wilt ondersteunen op jouw AP. 1 is WPA(1), 2 is WPA2 en 3 is zowel WPA als WPA2.

wpa_key_mgmt

Hierbij heb je de opties WPA-PSK en WPA-EAP of beide. PSK staat voor pre-shared key en EAP voor Extensible Authentication Protocol. De eerste is voor thuisgebruik en houdt in dat de wireless client en de access point een wachtwoord delen en de tweede voor ‘enterprise’ gebruik waarbij de authenticatie plaats vindt door middel van radius.

Ik heb nu weer een vers (bridging) access point en zoals gehoopt en verwacht heeft mijn iPhone nu inderdaad geen problemen meer.