Ein Linux System ist von Hause aus schon relativ sicher. Jedoch gibt es noch weitere Möglichkeiten ein System weiter abzusichern. Eine davon ist es zum Beispiel das Verzeichnis /usr (unix system ressource) auf eine eigene Partition zu verlagern und diese anschließend nur noch read-only zu mounten.

    Für die Partitionierung wähle ich für /usr meißt 20 GB. Nach der Installation bzw. Repartitionierung kann diese dann über eine Anpassung der /etc/fstab als read-only gemountet werden. Der Vorteil dafür liegt klar auf der Hand. Es können keine weiteren Installation von Programme vorgenommen werden, da es nicht möglich ist, Änderungen in das /usr Verzeichnis zu schreiben.

    #system>    
    UUID=...       /usr          ext4   defaults,ro   0      2

    Das die Partition nun read-only gemountet ist, bedeutet jedoch nicht automatisch, dass man das System jedes mal Neustarten muss um eine Installation durchzuführen, sondern man kann die Partition im laufenden Betrieb einfach "ummounten":

    mount -o remount,rw /usr

    Ein Problem einer read-only /usr Partition ist jedoch, dass vor der Installation von neuen Paketen/Update von Paketen die Partition immer als writeable remounted werden muss. Dies kann man allerdings umgehen, indem vor Installationen die Partition als als writable mountet und nach Abschluss wieder als read-only. Dazu muss in der Datei /etc/apt/apt.conf folgendes ergänzt werden.

    DPkg
    {
      Pre-Invoke  { "mount /usr -o remount,rw" };
      Post-Invoke { "mount /usr -o remount,ro" };
    };

    Es gibt übrigens auch Möglichkeiten und Wege die Root Partition read-only zu mounten:

     

    Nachtrag (08.08.2012)

    Es kommt immer wieder vor, dass das mounten und remounten der /usr Partition zu Problemem führt, da sie zu früh wieder als read-only gemountet wird, obwohl noch Skripte im Hintergrund laufen.

    Ich habe mir daher gerade auf die Schnelle ein Skript gebaut, dass prüft ob apt, aptitude, dpkg laufen und ob sich im Verzeichniss /usr noch ausstehende Schreiboperationen befinden. Ist dies nicht der Fall, so wird erst dann die /usr Partition wieder als read-only gemountet. Die Prüfung auf apt, aptitude bzw. ipkg ist notwendig, da beim Laden der sources.list schon mal ein paar Sekunden vergehen können und mein Skript soll nicht währenddessen die Partition wieder als read-only mounten.

    #!/bin/bash
    logger /usr remount script started
    mount -o remount,rw /usr
    i=1
    j=1
    while [ $i -gt 0 ] || [ $j -gt 1 ]
    do
      sleep 2
      i=$(lsof /usr/ | awk '{print $4}' |grep "w" -c)
      j=$(ps aux | egrep '(apt|aptitude|dpkg)' -c)
      seconds=$[$seconds+2]
    done
    # force hd to write cache
    sync
    sleep 2
    mount /usr -o remount,ro
    logger /usr was $seconds sec. busy and is now free

     

    Leave A Reply