1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385
|
<!doctype linuxdoc system>
<linuxdoc>
<!-- Loopback Encrypted Filesystem HOWTO door Ryan T. Rhea -->
<article>
<!-- Title information -->
<titlepag>
<title>Loopback Encrypted Filesystem HOWTO</title>
<author><name>Copyright by Ryan T. Rhea,
<tt/rhear@cs.winthrop.edu/
<newline>
Vertaler: <htmlurl url="http://people.zeelandnet.nl/reggye/" name=" Reggy
Ekkebus">, <htmlurl
url="mailto:reggy@zeelandnet.nl" name="reggy@zeelandnet.nl">
</name></author>
<date>v1.1, 29 November 1999</date>
<abstract>
Dit document verteld hoe je een filesysteem moet instellen
dat, als het gemount is door een gebruiker, drastisch en transparant
zijn inhoud versleuteld. Het filesysteem wordt bewaart in een
reguliere file, welke verborgen of on opvallend genoemd kan zijn
zodat de meeste mensen er over kijken. Dit staat een hoog niveau aan
veilige data opslag toe.
</abstract>
</titlepag>
<!-- Table of contents -->
<toc>
<!-- Begin the document -->
<sect><heading>Voordat je begint</heading>
<p>
Dit proces vereist de kernel bron code, kennis van over hoe
je deze code moet compileren, en veel geduld. Ik raad je aan
om een bootdisk klaar te hebben liggen. Wees ook zeker dat je
een backup hebt voordat je permanent je belangrijke data bewaard
in het versleutelde filesysteem - het kan aangestast worden als elk
ander filesysteem.
Als een minimum, moet je de laatste versie 2.2.9 van de linux kernel
patchen voordat je door kan gaan. Er is een verdere instructie
over het patchen in de <ref id="Details"> sectie later in dit document.
De source code van de kernel kan gevonden worden op:
<tscreen>
<url url="ftp://ftp.kerneli.org/">
</tscreen>
Er is een HOWTO over het proces van een kernel hercompileren op:
<tscreen>
<url url="http://metalab.unc.edu/LDP/HOWTO/">
</tscreen>
Dit document mag worden gereproduceerd en gedistributeerd in zijn
geheel of in delen, zonder betaling, overgegeven aan de volgende
voorwaarden:
<itemize>
<item>De copyright notitie en de permissie notitie moet
geheel bewaard blijven op alle komplete of gedeeltelijke kopieën.
</item>
<item>Elke vertaling of afgeleide werk moet toegstaan zijn door de auteur
van het document voor distributie.
</item>
<item>Als je dit werk in een deel distributeerd, moet er een
instructie aanwezig zijn over hoe je de hele howto kunt verkrijgen.
</item>
<item>Alle source code in dit document is geplaatst onder de GNU
General Public License, verkrijgbaar via anonieme FTP van:
</item>
</itemize>
<tscreen>
<url url="ftp://prep.ai.mit.edu/pub/gnu/COPYING/">
</tscreen>
</p>
</sect>
<sect><heading>Introductie</heading>
<p>
Het proces gebruikt het device '/dev/loop*' (waar * 0-7 kan zijn bij
de meeste installaties) om een loopback filesysteem te mounten.
Het zelfde proces kan worden gebruikt om een linux filesysteem
te bewaren op een niet-linux partitie. Er is een HOWTO over dit op
de LDP site eerder aangegeven.
Er kunnen verschillende types van encryptie gebruikt worden, zoals
XOR, DES, twofish, blowfish, cast128, serpent, MARS, RC6, DFC en IDEA.
Het programma 'losetup' (loopback setup) is wat je versleutelde file
systeem associeert met een filesysteem en zijn versleutel type. Overeenkomstig
met Alexander Kjeldaas, die de kerneli.org site onderhoud en de internationale
crypto patches, DES en losetup zijn momenteel niet samengaand. Dit
is door het verschil van het hanteren van parity bits. Er zijn geen
plannen om DES te ondersteunen omdat het veel minder veilig is dan
de andere methoden.
Twofish, blowfish, cast128 en serpent zijn vrij te gebruiken.
De anderen hebben of hebben geen licentie beperkingen. Vele van deze
zijn kandidaten voor de AES standaard. De finalisten zullen
vrij gebruik van hun versleutelaars wereldwijd verstrekken.
Dit document gebruik het serpent algoritme omdat het erg sterk is
en ongelooflijk snel, en het is vrij distributeerbaar onder de GPL.
Overeenkomstig aan de documentatie gebruik serpent 128-bit blok versleuteling
gemaakt door Ross Anderson, Eli Biham en Lars Knudsen. Het geeft gebruikers
het hoogste practische niveau van beveiliging dat er geen korte aanvallen
worden gevonden. De documentatie over serpent en ook de source code kan gevonden
worden op:
<tscreen>
<url url="http://www.cl.cam.ac.uk/~rja14/serpent.html">
</tscreen>
Dit document neemt ook aan dat de algoritmes direct in
de kernel zijn gecompileerd. Je mag ze installeren als een module, maar
de techniek wordt niet besproken in dit document. Je moet de file
`/etc/conf.module' editten; het proces wordt in detail beschreven
in de Kernel compilatie HOWTO erdeer angegeven.
</p>
</sect>
<sect><heading>Samenvatting</heading>
<p>
Er zijn veel stappen betrokken in het proces. Ik geef
<ref id="Details"> voor deze stappen in de volgende sectie.
Ik dacht dat het wel leuk zou zijn om eerst een referentie te geven
(als je ervaren bent met unix/linux heb je de details niet nodig).
Hier zijn ze beknopt:
<enum>
<item>Download de nieuwste internationale crypto patch
(Ik gebruikte 'patch-int-2.2.10.4' toen ik document schreef)
van:
<tscreen>
<url url="http://ftp.kerneli.org/pub/kerneli/">
</tscreen>
</item>
<item>Patch de kernel
</item>
<item>Draai `config' (of `menuconfig' of `xconfig') om je MakeFile voor
de nieuwe kernel te configureren. De opties om versleuteling aan te zetten
zijn verspreid. Eerst, voordat je andere opties ziet
moet je eerst 'Prompt for development and/or incomplete code/drivers'
aanzetten in het `Code Maturity level options' menu. Onder `Crypto opties'
`crypto ciphers' en `serpent' aanzetten. Nog een keer, dit document neemt
aan dat je serpent gebruikt, maar probeer wat je wilt. Onthoud
dat DES bekent is als onsamengaand met 2.2.10.4 - het wordt misschien wel
nooit ondersteund. Er zijn verschillende belangrijke opties die
je moet selecteren onder `Block Devices'. Deze zijn `Loopback
device support', `Use relative block numbers as basis for
transfer functions (RECOMMENDED)' en `General encryption support'.
Selecteer NIET 'cast 128' of 'twofish' versleuteling hiet.
Weet ook dat je de verschillende crypto opties onder de verschillende
netwerk catagorieen niet nodig hebt. Ik ga niet verder in het configureren
van de kernel, dat is buiten beschouwing van dit document en kan gevonden
worden op de LDP site.
</item>
<item>Compileer de nieuwe kernel.
</item>
<item>Verander `/etc/lilo.conf' om het nieuwe kernel image toe te voegen. Draai
`lilo -v' om de kernel toe te voegen aan de boot lader.
</item>
<item>Download de source van de nieuwste `util-linux'
(Ik gebruikte `util-linux-2.9v') van:
<tscreen>
<url url="ftp://ftp.kernel.org/pub/linux/utils/util-linux/">
</tscreen>
</item>
<item>Pak de `util-linux' source uit.
</item>
<item>Pas de daarbij behorende patch in je
`/usr/src/linux/Documentation/crypto/' directory toe.
</item>
<item>lees de `INSTALL' file ZORGVULDIG! Dit pakket
houdt de source code van veel systeem afhankelijke files in
(belangrijke tools zoals `login', `passwd' en `init'). Als je de
MCONFIG file niet zorgvuldig veranderd, voordat je deze bron code
gaat compileren zorg dan dat je een boot diskette en/of
een shotgun bij de hand hebt, omdat je systeem erg in de war zal
zijn. Fundementeel zul je de meeste van de `HAVE_*' velden op
`yes' zetten zodat de belangrijkste authenticatie tools niet
worden gecompileerd en dus ook niet overschreven. De tools die
je moet hercompileren zijn `mount' en `losetup' om de nieuwe encryptie
schema's onder te brengen. Ik raad je aan om naar de <ref id="Details"> sectie
hieronder te gaan voor deze stap.
</item>
<item>Compileer en installeer de `util-linux' source</item>
<item>Reboot de machine met de nieuwe kernel.</item>
<item>Verander `/etc/fstab', een regel toevoegen voor je mount punt
gaat als volgt:
<tscreen><code>
/dev/loop0 /mnt/crypt ext2 user,noauto,rw,loop 0 0
</code></tscreen>
</item>
<item>Maak de directory aan die het filesysteem gaat inhouden, zoals
in `/mnt/crypt' hierboven.
</item>
<item>Als de gebruiker, maak je versleutelde file als volgt:
<tscreen><verb>
dd if=/dev/urandom of=/etc/cryptfile bs=1M count=10
</verb></tscreen>
</item>
<item>Draai losetup als volgt:
<tscreen><verb>
losetup -e serpent /dev/loop0 /etc/cryptfile
</verb></tscreen>
Je hebt maar een kans om het paswoord in te vullen, dus wees voorzichtig.
als je je paswoord twee keer wilt laten controleren, kun je het volgende
commando gebruiken:
<tscreen><verb>
losetup -d /dev/loop0
</verb></tscreen>
Dit deactiveert je loop device. Daarna draai je losetup opnieuw om
je paswoord te testen, als volgt:
<tscreen><verb>
losetup -e serpent /dev/loop0 /etc/cryptfile
</verb></tscreen>
</item>
<item>Maak je ext2 filesysteem als volgt:
<tscreen><verb>
mkfs -t ext2 /dev/loop0
</verb></tscreen>
</item>
<item>Nu kun je je versleutelde filesysteem mounten met:
<tscreen><verb>
mount -t ext2 /dev/loop0 /mnt/crypt
</verb></tscreen>
</item>
<item>Als je klaar bent, kun je je filesysteem unmounten en beschermen als
volgt:
<tscreen><verb>
umount /dev/loop0
losetup -d /dev/loop0
</verb></tscreen>
</item>
</enum>
</p>
</sect>
<sect><heading>Details<label id="Details"></heading>
<p><bf>Kernel Patches:</bf>
Je kan upgraden van `2.2.x' uitgaven met een patch. Elke patch
die voor `2.2.x' is uitgebracht bevat bug verbetering. Nieuwe
kenmerken worden toegevoegd aan de Linux `2.3.x' ontwikkelings kernel.
Om te installeren door een patch, haal de nieuwste patch files en
doe het volgende:
<tscreen><verb>
cd /usr/src
gzip -cd patchXX.gz | patch -p0
</verb></tscreen>
verander de xx voor alle versies groter dan de versie van je
momentele bron boom, IN VOLGORDE.
De standaard directory voor de kernel source is `/usr/src/linux'.
Als je source ergens anders staat raad ik een symbolische link aan
van `/usr/src/linux'.
</p>
<p><bf>De `MCONFIG' file vervanderen voor de `util-linux' package
compilatie:</bf>
De volgende zijn uittreksels van de 'MCONFIG' file die ik heb
gebruik om het `util-linux' pakket te compileren. Dit is bijna
identiek aan mijn setup, welke losjes is gebaseerd op RedHat 5.2.
Het punt is dat je geen belangrijke systeem tools gaat overschrijven zoals
`login', `getty', of `passwd'. Hoe dan ook, hier zijn de belangrijke
regels als volgt:
<tscreen><code>
CPU=$(shell uname -m | sed s/I.86/intel/)
LOCALEDIR=/usr/share/locale
HAVE_PAM=no
HAVE_SHADOW=yes
HAVE_PASSWD=yes
REQUIRE_PASSWORD=yes
ONLY_LISTED_SHELLS=yes
HAVE_SYSVINIT=yes
HAVE_SYSVINIT_UTILS=yes
HAVE_GETTY=yes
USE_TTY_GROUP=yes
HAVE_RESET=yes
HAVE_SLN=yes
CC=gcc
</code></tscreen>
</p>
<p><bf>Suggesties:</bf></p>
<p>
Onthoud dat je elke van de acht loopback devices kunt gebruiken,
van `/dev/loop0' tot `/dev/loop7'. Gebruik een onopvallende directory
voor het mount punt. Ik raad aan een directory te maken met 700 permissies
in je home directory. Het zelfde geld voor de file waar de data in staat.
Ik gebruik een filenaam als `sysfile' of `config.data' in de `/etc/' directory.
Deze worden meestal over het hoofd gezien.
Ik heb erg simpele Perl scripts gemaakt om het filesysteem te mounten
en weer te unmounten met een commando. Schrijf deze, maak ze uitvoorbaar
(chmod u+x), en zet ze in je path.
<tscreen><code>
#!/usr/bin/perl -w
#
#minimaal programma om een loopback encrypted filesysteem in te stellen.
#Copyright 1999 door Ryan T. Rhea
`losetup -e serpent /dev/loop0 /etc/cryptfile`;
`mount /mnt/crypt`;
</code></tscreen>
Noem het bovenstaande script `loop' en dan kun je starten met
een commando (`loop') en een paswoord.
<tscreen><code>
#!/usr/bin/perl -w
#
#minimaal utility om een loopback encrypted filesysteem te deactiveren.
#Copyright 1999 door Ryan T. Rhea
`umount /mount/crypt`;
`losetup -d /dev/loop0`;
</code></tscreen>
Noem de tweede `unloop' en als je dan `unloop' typt wordt je filesysteem
snel gedeactiveerd.
</p>
</sect>
</article>
</linuxdoc>
|