• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

/tmp, /var/tmp, /usr

alexdk

Member
Hallo,

kürzlich habe ich gelesen, dass es sicher ist, wenn man

/usr als read-only, /var/tmp und /tmp mit der option noexec mountet.

Wie groß würdet ihr /usr, /var/tmp, und /tmp machen? Wie groß den rest (/) ?
Welche einbußen muss man da im Alltagsbetrieb hinnehmen?

Danke
 
A

Anonymous

Gast
Wenn du keinen reinen Serverbetrieb hast auf einem System an dem nichts mehr großartiges geändert wird. Sondern ein normales OpenSuse verwendest bei dem du alle 3 Tage entweder irgend was installierst oder updatest oder sonstwie in Yast in der Konfiguration umeinander spielst, dann lass das mit /usr und readonly sein. Yast ist auf sowas überahupt nicht vorbereitet und du bekommst mehr Probleme als dir lieb ist.

Die tmp-Verzeichnisse kann man selbstverständlich Sicherheitstechnisch weiter beschränken, dazu müsste du aber genau wissen, wie groß sie maximal werden, da du dafür eigene Dateisysteme anlegen müsstest. Die Große von /tmp alleine kann schon zwischen ein paar 100MB und einigen zig GB schwanken je nachdem wie du verschiedene Programme konfiguriert hast und was du auf dem Rechner machst. ZB K3B lagert dort eventuell per default schon mal ganze DVDs temporär aus, usw. Wenn du das nicht 100 Prozent einschätzen kannst, dann lass es lieber sein. Die Fehlermeldungen die durch volle temporäre Verzeichnisse entstehen werden nicht in jedem grafischen Programm auch wirklich als solche eindeutig angezeigt. Wenn alles andere im System sicher bleibt, und mit Rootrechten nicht gearbeitet sondern wirklich nur administriert wird, dann sind die temporären Verzeichnisse so wie sie per default mit Sticky-bit versehen, nicht wirklich ein Problem.

Wichtiger ist, das alle temporär mountbaren Verzeichnisse zB USB/CD/DISKETTE/NETZLAUFWERKE abgesichert sind und es auch bleiben, hier besteht eine 1000 mal größere Gefahr das schädliche Programme ausgeführt werden können oder Dateien mit zweifelhaften Zugriffsrechten existieren.

Nicht alles was man irgendwo ließt, das als maximale Sicherheit angeprießen wird, ist auch praktisch. Am aller sicheresten ist es zB wenn der Rechner gar nicht erst eingeschaltet wird. ;) ;) ;) ;) ;)
Die Linuxsysteme sind von den Distributionen so vorkonfiguriert das sie für ihren typischen Einsatzzweck ein Optimum an Sicherheit gewähren. Alle Konfigurationen und Tools sind darauf abgestimmt. Wer mehr Sichertheit braucht oder will benötigt einen regelmäßigen größeren Verwaltungsaufwand, da diese Tools und Konfigurationen so eben nicht immer oder überhaupt nicht mehr funktionieren. Man sollte also ganz genau wissen was man warum macht und welche Auswirkungen das hat. Was für Profis kein Problem darstellt ist für Otto-Normallinuxer nicht mehr händelbar.

Ansonsten das hier galt mal für Suse 9.x mittlerweile sind zB einige Programmegruppen von /opt weggewandert. Aber bis auf MB genau kann man es sowie nicht errechnen und alles ist immer von dem abhängig was du installierst und was du mit deinem Rechner machst.

robi
 

panamajo

Guru
alexdk schrieb:
Wie groß den rest (/) ?
Welche einbußen muss man da im Alltagsbetrieb hinnehmen?
Ich stimme robis Ausführungen zu.

Je nach Anwendung ist es sinnvoll eigene Partitionen anzulegen für:
/home
Wo die User ihren Kram ablegen. Das kann ja mal viel werden, wenn man das alles auf einer Partion hat ist der Umzug einfach.
/srv
Für Webserver
/var
Wenn auch eine Datenbank (MySQL, PostgreSQL) dabei ist bzw. für Server ist eine eigene Partition für /var immer eine gute Idee.
 
OP
A

alexdk

Member
Danke erstmal für die Antworten.

Den verlinkten Artikel zum Sticky-Bit habe ich mir durchgelesen. So wie ich das verstanden habe, behebt es das Problem,
dass wenn ein User Schreibrechte auf ein Verzeichnis hat, auch Dateien löschen kann.
Kann ich mit dem Sticky-Bit die selbe Funktion herbeiführen, wie mit dem mounten als noexecute ?

Ich weiß nicht wie Yast / Zypper konfigurierbar sind, aber meinen wissens kann ich bei Debianm welches
APT als Paketmanager verwendet, APT sagen, er soll vor und nach der Installation von Paketen bestimmte Befehle ausführen.
Somit wäre /usr als readonly kein Problem, oder? - Geht das unter Suse auch irgendwie mit Yast/Zypper?

Was die tmp-Benutzung angeht..... bei K3B z.B wähe ich immer einen anderen Ordner, wenn ich Images anlege. CD's kann man on-the-fly kopieren.

Was wird noch alles in /tmp gesichert? Welche Programme möchten da temporäre Daten sichern?

Wie ist das eigentlich mit /var/tmp?

Danke
 
A

Anonymous

Gast
alexdk schrieb:
Den verlinkten Artikel zum Sticky-Bit habe ich mir durchgelesen. So wie ich das verstanden habe, behebt es das Problem,
dass wenn ein User Schreibrechte auf ein Verzeichnis hat, auch Dateien löschen kann.
Kann ich mit dem Sticky-Bit die selbe Funktion herbeiführen, wie mit dem mounten als noexecute ?
Das Sticky-Bit verhindert, das ein User Dateien eines anderen Users löschen kann, nicht mehr und nicht weniger. Diese allein verhindert aber zB auch zuverlässig, das man Dateien eines anderen Users austauschen könnte, obwohl man keine Schreibrechte an der Datei selbst hat.
Sonst könnte man zb unterhalb von /tmp die Orginaldatei einfach löschen und eine Datei selben Namens erstellen. Bis es der Besitzer der Orginaldatei gemerkt hat, ist es eventuell schon zu spät.

noexecute verhindert das dort Programme ausführen können, egal ob da ein Ausführungsrecht gesetzt ist oder nicht.

Stell dir folgendes vor:
Root entwickelt ein Script, und da er keine Ahnung von Rechneradministration hat speichert er sein Script als /tmp/test.sh und führt es auch so aus. Da er merkt das geht erstmal nicht, hat er die nächste hervorragend zündende Idee
Code:
chmod 777 /tmp/test.sh
Da ist aber noch ein User auf dem selben Rechner, der der Meinung ist, er könnte den Rechner viel besser selbst administrieren als der alte Root und möchte desshalb den alten Root als solchen ablösen und sich kurzerhand selbst zum Root erklären.
Das ist jetzt eine Sache von 30 Sekunden und einer handvoll Befehlen und der alte Root hat weder ein Passwort noch sonstwie noch irgendwelche Gewalt über den Rechner.
Der böse User braucht nur mal schnell eine Zeile in das Script einzufügen die root dann beim Testen seines Scriptes mit ausführt. Danach braucht der böse User nur noch zu beweisen das er mehr Ahnung hat als der alte Root und dieser kommt gar nicht mehr auf den Rechner ;)

In diesem Beispiel hätte jetzt das noexecute verhindert das root auf die Idee kommt, Scripte oder Programme aus eine öffentlich beschreibbaren Verzeichnis heraus auszuführen. Der böse User hätte wohl bei einem solchem Root aber nur ein paar Tage länger warten müssen bis er eine günstige Gelegenheit hat. ;) ;) ;)

Auf Dauer wirksam ist hier auch ein regelmäßiges Überprüfen solcher Verzeichniss auf ausführbare Dateien und Dateien mit Sonderrechten. Das könnte cron zB alle Stunde erledigen. Das schützt dann zwar nicht kurzfristig, aber der Lerneffekt auf dem Rechner sollte das normalerweise dauerhaft verhindern, und wer jedoch "böse User" auf dem Rechner hat ;) ;) ;)


robi
 
OP
A

alexdk

Member
Dann wäre eine Kombination aus Sticky-Bit und noexecute in meinen Augen eine gute Kombination.

Fragt sich nur, wie groß ich die Temp-Parititon machen soll.... und die Partitionierung allgemein. (80GB-Platte)

SWAP
/
/usr
/tmp
/var/tmp
/home

Da bin ich mir nicht sicher, wie viel Platz ich /tmp, /var/tmp und /usr geben soll. Wenn ich diese 3 Verzeichniss auf eigene Partitionen lege, wie groß sollte / werden?

Danke
 

panamajo

Guru
alexdk schrieb:
Da bin ich mir nicht sicher, wie viel Platz ich /tmp, /var/tmp und /usr geben soll. Wenn ich diese 3 Verzeichniss auf eigene Partitionen lege, wie groß sollte / werden?
Code:
l33t:~ # du -sh /tmp /var/tmp
20M     /tmp
72M     /var/tmp
Ich sehe nicht warum man dafür eine eigene Partition benötigen sollte...
 
OP
A

alexdk

Member
panamajo schrieb:
alexdk schrieb:
Da bin ich mir nicht sicher, wie viel Platz ich /tmp, /var/tmp und /usr geben soll. Wenn ich diese 3 Verzeichniss auf eigene Partitionen lege, wie groß sollte / werden?
Code:
l33t:~ # du -sh /tmp /var/tmp
20M     /tmp
72M     /var/tmp
Ich sehe nicht warum man dafür eine eigene Partition benötigen sollte...

Damit ich /tmp und /var/tmp mit der Option noexecute mounten kann.
 
A

Anonymous

Gast
alexdk schrieb:
Damit ich /tmp und /var/tmp mit der Option noexecute mounten kann.
Die Größe musst du bei dir selbst einschätzen können, woher sollen wir wissen was du auf deinem Rechner machst und was du konfiguriert hast. Ich brauche zB trotz regelmäßigen Aufräumen von /tmp dort auf einigen Rechnern mehr als 1GB.

Übrigens nur mal so am Rande erwähnt, es gibt auch Pakete die haben zB solche Sätze hier in der Orginal-Installationsbeschreibung.
The directory /tmp must have write, read, execute access for all(world). ....
Kann dir zB bei Datenbankanwendungen und ähnlichen Paketen passieren. Ob das jetzt auf das Verzeichnis als ganzes oder nur dieser einen Verzeichnis-Datei /tmp bezieht, wird so daraus aber auch erstmal nicht klar ersichtlich,

robi
 
OP
A

alexdk

Member
robi schrieb:
alexdk schrieb:
Damit ich /tmp und /var/tmp mit der Option noexecute mounten kann.
Die Größe musst du bei dir selbst einschätzen können, woher sollen wir wissen was du auf deinem Rechner machst und was du konfiguriert hast. Ich brauche zB trotz regelmäßigen Aufräumen von /tmp dort auf einigen Rechnern mehr als 1GB.

Übrigens nur mal so am Rande erwähnt, es gibt auch Pakete die haben zB solche Sätze hier in der Orginal-Installationsbeschreibung.
The directory /tmp must have write, read, execute access for all(world). ....
Kann dir zB bei Datenbankanwendungen und ähnlichen Paketen passieren. Ob das jetzt auf das Verzeichnis als ganzes oder nur dieser einen Verzeichnis-Datei /tmp bezieht, wird so daraus aber auch erstmal nicht klar ersichtlich,

robi

OK, noexecute könnte mir somit doch Probleme machen, hmmm....
 
Oben