Hi! ich spiele gerade an diversen Konzepten, um die Systemsicherheit zu verbessern. Eines dieser Konzepte ist, "gefährliche" Tools wie gcc auf eine zweite Platte auszulagern, die im Normalbetrieb umounted und abgeschaltet ist und nur dann läuft, wenn wirklich damit gearbeitet wird. Das macht erfolgreichen Angreifern schwerer, ihre Tools zu compilieren, ohne physikalischen Zugriff auf die Kiste zu haben.
Als eine mögliche Lösung für diesen Ansatz wäre, die gefährlichen dateien von /usr nach /usr/develdisk zu verschieben und stow zu benutzen, um die Tools wieder an ihren ursprünglichen Ort zurückzulinken. Ich bräuchte also zum Beispiel /usr/develdisk/bin/gcc und ein symlink von /usr/bin/gcc auf /usr/develdisk/bin/gcc. Wenn die develdisk nicht gemounted ist, zeigt der LInk natürlich ins Leere. Für den Anfang wäre das OK, dauerhaft sollte man sich überlegen, ob man die Symlinks nicht entfernt. Könnte dieses Konzept funktionieren? Zum Test gibt es das folgende Skript: |#!/bin/bash | |# this script will aid in moving some files belonging to dpkg-packages |# to different locations on the system. This is done by first learning |# which files belong to a package, then passing all file names through |# a sed script and executing appropriate mv commands. |# |# Example: Move all of gcc, stow and libreadlineg2 what is usually stored |# in /usr to /usr/devel: |# dpkg-move -v -s "s|/usr|/usr/devel|" gcc stow libreadlineg2 | |while getopts "s:vn" opt; do | case $opt in | s ) sedscript=$OPTARG ;; | v ) verbose=1 ;; | n ) noop=1 ;; | \? ) echo 'usage: $0 [-v] [-n] -s sedscript packages...' | echo ' -v: verbose' | echo ' -n: do not actually execute the move commands' | exit 1 | esac |done |shift $(($OPTIND - 1)) | |if [ -z $sedscript ]; then | echo 'no script given' | exit 1 |fi | |[ $verbose ] && echo "entering verbose mode." | |while [ "$1" != "" ]; do | dpkg --listfiles $1 | | while read filename; do | if [ ! -d $filename ]; then | newname=`echo $filename | sed $sedscript` | if [ $filename != $newname ]; then | | # make sure that target directory exists | # not yet implemented | | [ $verbose ] && echo "mv $filename $newname" | [ $noop ] || echo "execmv $filename $newname" | else | [ $verbose ] && echo "$filename: not touched by script, skipping." | fi | else | [ $verbose ] && echo "$filename: directory, skipping." | fi | done | shift |done Ich bin übrigens nicht der Meister im schreiben von Shellscripts und würde mich freuen, wenn ihr mich auf mögliche Bugs hinstoßen könntet. Der Code stolpert derzeit noch, wenn symlinks verschoben werden müssen, weil mv keine Symlinks über Dateisystemgrenzen verschieben mag. Hier wird man auch das Ziel des Links bearbeiten müssen, weil es ja gut sein kann, daß man das Ziel nicht verschoben hat. Und das wird in einem Shellscript schon fast eklig. Auch bei hard links wird man eine Sonderbehandlung fahren müssen. Ich habe aber auch mit dem Packagesystem einige Punkte, über die ich gerne mit Euch diskutieren würde: (1) Eine von diesem Skript behandelte Package wird sicherlich bei einem Distributionsupdate Probleme verursachen. Ich vermute, daß apt-get update die Symlinks schlicht überschreiben wird und die neue Package natürlich nicht auf der "sicheren" Platte landet. Wie sollte man mit dieser Situation umgehen? (2) Sollte mein Skript etwas mit der dpkg-Datenbank machen? Es wäre zum Beispiel denkbar, daß das Skript die bewegte Package aus der dpkg-Liste löscht. Oder gibt es für mein Konzept einen anderen Ansatz? Über Eure Gedanken würde ich mich freuen. Grüße Marc -- -------------------------------------- !! No courtesy copies, please !! ----- Marc Haber | " Questions are the | Mailadresse im Header Karlsruhe, Germany | Beginning of Wisdom " | Fon: *49 721 966 32 15 Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fax: *49 721 966 31 29 ------------------------------------------------ Um sich aus der Liste auszutragen schicken Sie bitte eine E-Mail an [EMAIL PROTECTED] die im Body "unsubscribe debian-user-de <deine emailadresse>" enthaelt. Bei Problemen bitte eine Mail an: [EMAIL PROTECTED] ------------------------------------------------ Anzahl der eingetragenen Mitglieder: 739

