pages/static/talks/chroot.html

360 lines
5.8 KiB
HTML

<html>
<hr>
<font size="+2"></font><div align="CENTER">
<font size="+2"><br>
<br>
<br>
<br>
Changeroot Umgebungen an den Beispielen Apache und BIND<br>
<br>
</font><font size="-1"><br>
Norbert Tretkowski<br>
Debian Entwickler<br>
tretkowski@bzimage.de<br>
</font></div>
<br>
(page 1)<br>
<hr>
<br>
Was ist chroot?<br>
<br>
<br>
<ul>
<li>Ein Betriebssystemaufruf
</ul>
<br>
<ul>
<li>Ein Programm
</ul>
<br>
(page 2)<br>
<hr>
<br>
Was macht chroot? (1)<br>
<br>
<br>
<ul>
<li>Einschließen von Programmen in ein Verzeichnis
</ul>
<br>
<ul>
<li>Ein eingesperrter Prozess kann nur noch unterhalb dieses Verzeichnises Unheil treiben
</ul>
<br>
<ul>
<li>Dieses Verzeichnis muß aber alle vom Prozess benötigten Dateien, Pipes und Unix-Domain Sockets enthalten
</ul>
<br>
(page 3)<br>
<hr>
<br>
Was macht chroot? (2)<br>
<br>
<br>
<ul>
<li>Der Systemcall chroot() wird von einigen Programmen (z.B. Postfix) schon von Haus aus verwendet
</ul>
<br>
<ul>
<li>Programme die diese Funktionalität von sich aus nicht haben können auch in einer abgeschlossenen Umgebung laufen
</ul>
<br>
(page 4)<br>
<hr>
<br>
Beispiel BIND: Installation<br>
<br>
<br>
<ul>
<li>Benötigte Software: BIND
</ul>
<br>
<ul>
<li>Installation der Software wie in der jeweils beiliegenden Dokumentation beschrieben
</ul>
<br>
(page 5)<br>
<hr>
<br>
Beispiel BIND: Erstellen statischer Binaries<br>
<br>
<br>
<ul>
<li>In der Zeile 'CDEBUG= -O2 -g' in src/port/linux/Makefile.set ein '-static' hinzufügen
</ul>
<br>
<ul>
<li>Aufruf von 'make clean &amp;&amp; make'
</ul>
<br>
(page 6)<br>
<hr>
<br>
Beispiel BIND: Erstellen eines Verzeichnisses<br>
<br>
<br>
<ul>
<li>Möglichkeit /chroot/bind
</ul>
<br>
<ul>
<li>Die Verzeichnisstruktur darunter:
</ul>
<br>
<ul>
<ul>
<li>/chroot/bind/dev
<li>/chroot/bind/etc/bind
<li>/chroot/bind/usr/sbin
<li>/chroot/bind/var/run
</ul>
</ul>
<br>
(page 7)<br>
<hr>
<br>
Beispiel BIND: Füllen der Verzeichnisse (1)<br>
<br>
<br>
<ul>
<li>/chroot/bind/etc
</ul>
<br>
<ul>
<ul>
<li>named.conf
<li>localtime
<li>group (nur ein Eintrag für GID named)
<li>passwd (ein Eintrag für UID named)
</ul>
</ul>
<br>
<ul>
<li>/chroot/bind/etc/bind
</ul>
<br>
<ul>
<ul>
<li>Zonenfiles für BIND
</ul>
</ul>
<br>
(page 8)<br>
<hr>
<br>
Beispiel BIND: Füllen der Verzeichnisse (2)<br>
<br>
<br>
<ul>
<li>/chroot/bind/dev
</ul>
<br>
<ul>
<ul>
<li>mknod -m 666 /chroot/bind/dev/null c 1 3
</ul>
</ul>
<br>
<ul>
<li>/chroot/bind/usr/local/bin
</ul>
<br>
<ul>
<ul>
<li>Statisch gelinkte `named` und `named-xfer` Binaries hinein kopieren
</ul>
</ul>
<br>
(page 9)<br>
<hr>
<br>
Beispiel BIND: User und Gruppe hinzufügen<br>
<br>
<br>
<ul>
<li>User 'named' in /chroot/bind/etc/passwd
<br>
<li>Gruppe 'named' in /chroot/bind/etc/group
</ul>
<br>
<ul>
<li>Verzeichnis /chroot/bind/var/run für User 'named' beschreibbar machen
</ul>
<br>
<ul>
<li>Besitzer der Dateien unter /chroot/bind/etc/bind: named.named
</ul>
<br>
(page 10)<br>
<hr>
<br>
Beispiel BIND: Init Scripte<br>
<br>
<br>
<ul>
<li>BIND:
</ul>
/chroot/named/usr/local/sbin/named \ <br>
-u named -g named -t /chroot/named<br>
<br>
<ul>
<li>syslogd:
</ul>
syslogd -m 0 -a /chroot/named/dev/log<br>
<br>
(page 11)<br>
<hr>
<br>
Beispiel Apache: Erstellen der Verzeichnisse<br>
<br>
<br>
<ul>
<li>Moeglichkeit /chroot/apache
</ul>
<br>
<ul>
<li>Verzeichnisse darunter:
</ul>
<br>
<ul>
<ul>
<li>/chroot/apache/dev
<li>/chroot/apache/lib
<li>/chroot/apache/etc
<li>/chroot/apache/bin
<li>/chroot/apache/usr/local
</ul>
</ul>
<br>
(page 12)<br>
<hr>
<br>
Beispiel Apache: Verzeichnisse fuellen (1)<br>
<br>
<br>
<ul>
<li>/chroot/apache/dev
</ul>
<br>
<ul>
<ul>
<li>mknod -m 666 /chroot/apache/dev/null c 1 3
</ul>
</ul>
<br>
(page 13)<br>
<hr>
<br>
Beispiel Apache: Verzeichnisse fuellen (2)<br>
<br>
<br>
<ul>
<li>/chroot/apache/etc
</ul>
<br>
<ul>
<ul>
<li>cp /etc/passwd /chroot/apache/etc
<li>cp /etc/shadow /chroot/apache/etc
<li>cp /etc/group /chroot/apache/etc
<li>cp /etc/resolv.conf /chroot/apache/etc
<li>cp /etc/hosts /chroot/apache/etc
<li>cp /etc/localtime /chroot/apache/etc
<li>cp /etc/ld.so.* /chroot/apache/etc
</ul>
</ul>
<br>
(page 14)<br>
<hr>
<br>
Beispiel Apache: Verzeichnisse fuellen (3)<br>
<br>
<br>
<ul>
<li>/lib
<ul>
<li>cp /lib/libm.* /chroot/apache/lib/
<li>cp /lib/libgdbm.* /chroot/apache/lib
<li>cp /lib/libdb.* /chroot/apache/lib
<li>cp /lib/libdl.* /chroot/apache/lib
<li>cp /lib/libc.* /chroot/apache/lib
<li>cp /lib/libnss* /chroot/apache/lib
</ul>
</ul>
<br>
(page 15)<br>
<hr>
<br>
Beispiel Apache: Verzeichnisse fuellen (4)<br>
<br>
<br>
<ul>
<li>/usr/local
</ul>
<br>
<ul>
<ul>
<li>cp -rp /usr/local/apache/ /chroot/apache/usr/local
</ul>
</ul>
<br>
(page 16)<br>
<hr>
<br>
Beispiel Apache: Init Script<br>
<br>
<br>
<ul>
<li>chroot /chroot/apache /usr/local/apache/bin/apachectl start
</ul>
<br>
(page 17)<br>
<hr>
<br>
Feinheiten<br>
<br>
<br>
<ul>
<li>Anpassen von passwd, group und httpd.conf
</ul>
<br>
<ul>
<li>Permission 600 fuer passwd, shadown und group
</ul>
<br>
(page 18)<br>
<hr>
<br>
Fazit<br>
<br>
<br>
<ul>
<li>Pro Dienst ein Verzeichnis
</ul>
<br>
<ul>
<li>Pro Dienst einen User und eine Group
</ul>
(page 19)<br>
</body>
</html>
<!--
FILE ARCHIVED ON 14:25:42 Jan 03, 2005 AND RETRIEVED FROM THE
INTERNET ARCHIVE ON 10:25:25 May 11, 2024.
JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
SECTION 108(a)(3)).
-->
<!--
playback timings (ms):
captures_list: 0.756
exclusion.robots: 0.21
exclusion.robots.policy: 0.198
esindex: 0.012
cdx.remote: 18.814
LoadShardBlock: 301.043 (3)
PetaboxLoader3.datanode: 330.626 (4)
load_resource: 80.75
PetaboxLoader3.resolve: 39.298
-->