360 lines
5.8 KiB
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 && 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
|
|
-->
|