(/var)/tmp

raiding

Well-Known Member
Mahlzeit!

Ich habe mir im Internet ein paar "hardening-freebsd-howtos" durchgelesen und unter anderem wird empfohlen, die Partition von /var/tmp (falls vorhanden) zu löschen und stattdessen einen Link auf /tmp zu kreieren um weniger potentielle "Angriffsfläche" zu bieten.

Was meint ihr dazu?

So wie ich das verstanden habe, speichert FreeBSD in /var/tmp Sachen, die nicht jeden bei jedem Neustart gelöscht werden sollen. Beinflusst es die Performance/Stabilität o.ä., wenn /var/tmp jetzt auf /tmp liegt und regelmäßig gereinigt wird?

Ausserdem spiele ich mit den Gedanken, /tmp als tmpfs in den RAM zu packen und ihm dort 4 GB zuzuweisen. ccache ist dort bereits mit seinem Schreibtisch hingezogen und ich bin von der Performance echt beeindruckt ... Würde das bei (/var)/tmp ebenfalls Sinn machen?

Gruß
 
Ich habe mir im Internet ein paar "hardening-freebsd-howtos" durchgelesen und unter anderem wird empfohlen, die Partition von /var/tmp (falls vorhanden) zu löschen und stattdessen einen Link auf /tmp zu kreieren um weniger potentielle "Angriffsfläche" zu bieten.
Halte ich für Mist. Dann hat /var/tmp sein Verhalten auf das sich Anwendung eben verlassen nicht. Das kann nur Ärger geben.

Wenn man die Sicherheit mit dem Löschen von /var/tmp erhöht dann muss man auch $HOME bei jedem Boot löschen. Kann man natürlich machen ist dann halt ….

Ausserdem spiele ich mit den Gedanken, /tmp als tmpfs in den RAM zu packen und ihm dort 4 GB zuzuweisen. ccache ist dort bereits mit seinem Schreibtisch hingezogen und ich bin von der Performance echt beeindruckt ... Würde das bei (/var)/tmp ebenfalls Sinn machen?
/tmp als tmpfs habe ich auch. Wenn genug RAM vorhanden ist macht das Sinn. Den ccache auf ein tmpfs weniger, dann ist der ja nach jedem Reboot weg. Was für eine Verschwendung!

Was ich noch in der make.conf habe: WRKDIRPREFIX?=/tmp/obj.${USER}

Ist schön für Leute die Ports selber bauen.
 
Wenn hier jemand mit poudriere das liest. Das selbe kann dort auch einschalten (USE_TMPFS=wrkdir in /usr/local/etc/poudriere.conf).
 
ich bin da so etwas wie ein tmpfs Fetischist und nutze es beinahe skrupellos.:
Code:
mount | grep tmpfs
tmpfs on /tmp (tmpfs, local)
tmpfs on /var/log (tmpfs, local)
tmpfs on /var/run (tmpfs, local)
tmpfs on /var/tmp (tmpfs, local)
Ich denke, jeder muss das mit seiner Nutzung vereinbaren.
So lasse ich auch SWAP vollkommen weg und hatte diese Einstellungen auch schon zu Zeiten, wo ich noch selbst aus den Ports baute. Ich kann nicht sagen, dass ich damit jemals Probleme erfahren hätte. tmpfs in der Größe festzulegen ist für mich nicht gut. Lass das doch alles dynamisch, ist viel praktischer. Dann verschwendest du nichts und läufst nicht so leicht in das Problem, dass eine der Partitionen dir mal zu klein werden kann.
Mein PC läuft mit ohne SWAP und diesem tmpfs bei 8G RAM quasi 24x7.
Auf einem kleinen 32Bit Asus 1000HE EEE habe ich quasi gleiches Setup mit nur 2G RAM, aber der Rechner ist nur selten und nur kurz an. Jedes Binär-Update hat er bisher gut überstanden und den regulären Betrieb macht er auch gut mit. Bisher vollkommen ohne ein Problem.

Früher habe ich mir sogar mehr Mühe gemacht und manche caches von Browsern ins tmpfs gelegt, oder thumbnail-Verzeichnisse aus meinem home. Das hat auch gut funktioniert, ich bin dazu heute nur zu faul und akzeptiere, was automatisch abläuft.

Was und wieviel in /var/tmp drin ist, kann stark von den benutzten Programmen abhängen. Bei mir ist dort nur ein kdecache gelistet und KDE benutze ich gar nicht. Das heißt, irgendeine Qt-Anwendung hat mir diesen Cache wohl gebracht, als ich zuletzt eine gestartet hatte. Da ich das nur selten mache, könnte ich diesen kdecache auch löschen, das würde ich im Betrieb nicht merken. Nur der nächste Start der gleichen (oder einer anderen Anwendung, die dort nachsieht) wäre wohl etwas langsamer.
 
was ich vergaß: wegen Angriffsfläche mache ich diese tmpfs-Geschichten nicht.
So lange der PC läuft und oben ist, ist es doch vollkommen egal, auf welchem Medium meine Partition nun untergebracht ist. Ist sie eingebunden, ist sie auch gefährdet.
Ist der PC aus, ist eine Partition aus tmpfs natürlich weg und damit selbst bei Diebstahl des PCs oder der Festplatten nicht gefährdet. Ähhm. Ich glaube, dass ich diesen Gedanken nicht weiter spinnen muss. Wenn mir jemand den PC klaut, hab eich vermutlich andere Sorgen, als die Sicherheit meines /var/tmp...

Ähnlich denke ich auch hinsichtlich Verschlüsselung von Partitionen oder ganzen Platten. Ich mache so was nicht.
 
Wenn es um Angriffsfläche geht ist die Sache ganz einfach: Vollverschlüsselung. Sollte man sowieso immer machen, da man niemals sicher sein kann, alle Daten vom Medium gelöscht zu haben, bevor es in den Wiederverkauf oder ins Recycling geht,
 
Gerade bezüglich Angriffsfläche finde ich das sogar unter gewissen Umständen kontraproduktiv. Viele angriffe auf Webservern hinterlassen ihre Spuren in /tmp oder /var/tmp (da kann idr auch der unprivilegierte User schreiben und ist auf allen *nixes verfügbar). Stell ich einen Angriff fest und wird der Server panisch abgedreht (jaja alles schon vorgekommen, auch vom "professionellen RZ") kann ich anhand der Daten die der Angriff hinterlassen hat vielleicht nachvollziehen, wie der Angriff geschehen ist, und was genau passiert ist, bzw. ob wirklich etwas kompromitiert wurde. Bei tmpfs tu ich mich schwer.
 
da man niemals sicher sein kann, alle Daten vom Medium gelöscht zu haben
Wie ist das eigentlich mit den SSDs im Vergleich zu HDs?
Bei den HDs habe ich schon Dinge gelesen, die man als Normalsterblicher eigentlich nicht glauben mag: sogar mehrfaches Überschreiben mit Nullen oder random-Werten hätte unter Umständen keine endgültige Vernichtung der Daten zur Folge und mit entsprechendem Aufwand (der aber wohl eher nur wissenschaftlich relevant sein dürfte und nicht unbedingt so praktiziert wird) könne die "ehemalige" Magnetisierung der Platten noch nachgewiesen, bzw ausgelesen werden. Bei SSDs müsste das doch um Größenordnungen besser sein, also nach einmaligem Überschreiben bereits ausreichenden Schutz bieten. Ich denke, die Chips können ja wohl kaum in der Art und Weise mechanisch aufbereitet werden, wie es die Scheiben einer HD können und es bleiben ja auch keine mechanischen (magnetischen) Veränderungen zurück, die man dann evtl noch in irgendwelchen Tiefen erkennen könnte.

Meine HDs werden übrigens immer ausgeschlachtet, niemals verkauft und nur Stückweise, also zerlegt recycled.
Ich bin ganz scharf auf die verwendeten Magnete und bastele damit immer Halter für Papiere auf magnetischem Untergrund. Sehr praktisch und ganz einfach zu machen: innen in einen ausgedienten, möglichst flachen Kronenkorken der Lieblings-Biersorte einlegen und fertig ist ein brauchbarer Magnethalter. Die Magnete müssen in kleinere Stücke zerbrochen werden, was nicht so leicht ist, aber mit etwas Mut und Übung ganz brauchbar gelingt.
Und die Scheiben sind für mich die reinsten Wunderwerke und hätte ich nicht schon so viele herumliegen, würde ich die gar nicht hergeben wollen. Unheimlich, wie glatt und eben eine Oberfläche sein kann.
 
Danke für den Input, Leute. Werde mir mal angucken, die man dynamisches tmpfs erstellt.

@Kamikaze selbstverständlich hast du recht: WRKDIRPREFIX ist ne make-Variable. Danke für die Korrektur.

Vollverschlüsselung halte ich auch für sinnvoll, besonders da viele Prozessoren heutzutage AES-NI unterstützen!
 
ich bin da so etwas wie ein tmpfs Fetischist und nutze es beinahe skrupellos.:
Code:
mount | grep tmpfs
tmpfs on /tmp (tmpfs, local)
tmpfs on /var/log (tmpfs, local)
tmpfs on /var/run (tmpfs, local)
tmpfs on /var/tmp (tmpfs, local)

Man muss sich halt bewusst sein, dass man bei einem Absturz oder beim Debugging dann eben keine Logs hat bzw. dass Logs einem die RAM, die sonst für Caching und anderes genutzt werden könnte damit abhanden kommt.

So lasse ich auch SWAP vollkommen weg und hatte diese Einstellungen auch schon zu Zeiten, wo ich noch selbst aus den Ports baute.
Das bedeutet, auch, dass nicht verwenete (inactive) memory nicht rausgeswappt wird, womit wieder RAM potentiell unnötig bzw. besser verwendbar genutzt werden könnte.

Außerdem wären dann im Falle eines Kernel Panics keine Daten dazu geschrieben, was heißt, dass potentiell (zum Debugging) für Entwickler wertvolle Informationen verloren gehen. Gerade nicht so einfach reproduzierbare Abstürze sind ja die wertvolleren.

Früher habe ich mir sogar mehr Mühe gemacht und manche caches von Browsern ins tmpfs gelegt, oder thumbnail-Verzeichnisse aus meinem home. Das hat auch gut funktioniert, ich bin dazu heute nur zu faul und akzeptiere, was automatisch abläuft.

Habe ich auch mal gemacht. Unter Arch gab's sogar ein Skript das das beim Starten/Stoppen dann permanent speichert, aber in vielen Fällen ist es ja ohnehin das Lesen um was es geht und darum sollte sich das OS kümmern und entsprechend Memory frei haben. Weshalb ich das Ganze mittlerweile recht kontraproduktiv finde, weil in den meisten das System einen besseren Überblick hat, was wie genutzt wird und wie gecached werden sollte. Wenn ich dem dann rein Funke indem ich Memory permanent für tmpfs stehle, heißt dass das eben weniger für tatsächlich nützliches verfügbar ist. Also zum Beispiel weil es in /var/log mitunter einiges gibt wo nur einmal, zum Beispiel beim Boot viel geloggt wird.

Was in /var/run ist ist auch in den meisten Fällen was einmal oder selten gelesen oder geschrieben wird. Ist zwar nicht viel, aber dann tut es der HD auch nicht weh.

Kurzum sollte man selber wissen was man tut, und potentiell auch messen, sonst machen vermeidliche Optimierungen eher das Gegenteil. Und vieles kommt da eben auf das jeweilige System an.

Mag niemandem was vorschreiben und ich weiß es macht Spaß, nur dann drauf zu kommen, dass man den gegenteiligen Effekt hat, als den den man erhofft ist manchmal unschön. Vor allem wenn man eine Weile dran gewerkelt hat.

Vieles hat man sich als Entwickler ja gut überlegt und wenn was in sowas wie /tmp Sinn macht dann tut man es auch dort hin.

Hier auch der Auszug zu dem was Kamikaze schon erwähnt hat aus hier(7):
/tmp/ temporary files that are not guaranteed to persist across system reboots

/var/tmp/ temporary files that are kept between system reboots

Eine kleine Anmerkung noch. Man kann das Verhalten von Swap übrigens auch mittels sysctls bestimmen. Da gibt's so schöne Sachen, wie vm.defer_swapspace_pageouts, auch in Kombination mit vm.v_free_min, was ein Mittelweg dazu wäre Swap ganz zu deaktivieren (mittels vm.disable_swapspace_pageouts).

Wie gesagt, was richtig ist kommt auf den Anwendungsfall an, aber da wird auch immer wieder dran verbessert und es steckt einiges an Erfahrung. Vieles wird von FreeBSD selbst getuned, indem es nach schaut, wie die Last ist, wie viel RAM zur Verfügung ist, etc.

Zum Verkauf von Festplatten. Dazu ist Verschlüsselung prima. Wenn man ganz sicher sein will, kann man ja noch mit Random Data drüber geben.

Zu SSDs in dem Fall habe ich vor einer Weile gehört, dass das noch Forschungsgegenstand ist. Da wird vielleicht das einfache Verschlüsseln interessanter, als die Sache mit Random Data, gerade wenn die Firmware was in Richtung "kaputte Sektoren abschalten" tut.

Hoffe ehrlich gesagt, dass Leute ihre SSDs verkaufen. Denke das würde Preise reduzieren und nicht noch mehr unnötigen Elektroschrott produzieren. Da ist Verschlüsselung echt toll, damit man sich da nicht mehr riesige Sorgen machen muss. Also wenn man das mal als Basis hat, dann kann man immer noch mit Random Date drüber gehen, wenn man sie tatsächlich verkauft.

Btw. für Vollverschlüsselung kann genügend RAM zum Cachen wieder nützlich sein. ;)
 
beim Debugging dann eben keine Logs
Kurzum sollte man selber wissen was man tut,
Ja, das sehe ich ganz genauso, wobei ich ja unbedarft bin und mich auch gerne belehren lasse. Allerdings habe ich auch einen ziemlichen Dickschädel. Es ist aber genau der Grund, weshalb ich nicht einfach nur einen Stempel setze sondern versuche, meine Situation und Gedanken zu beschreiben, aus denen ich mich für mein Setup entschieden habe. Das ist für viele andere vollkommen unbrauchbar, weil sie anders denken oder ein anderes Umfeld haben.

Ich kann mit logs und core-files nicht viel anfangen, bzw schalte ich auf meinen Rechnern meistens alle logs aus, wenn sie mal stehen und laufen. Ich bin nicht so neugierig, arbeite alleine an dem PC und der hängt nicht direkt am Internet. Wenn es mal Probleme gibt, dann kann ich logs wieder einschalten und kurzerhand die benötigten Verzeichnisse aus dem tmpfs herausholen. Aber, das ist noch nie vorgekommen.

Was den SWAP angeht, kann ich den auch nicht gebrauchen.
Ich weiß, dass SWAP wichtig fürs System ist, weil ich das gelesen habe.
Aber, ich nutze schon seit Jahren auf diversen PCs und unter diversen Systemen keinen SWAP und habe bisher keine einzige schlechte Erfahrung damit gemacht. FreeBSD toleriert das ganz wunderbar und jeder kann es einfach mal mit swapoff testen. Mein Argument war immer, dass ja 2xRAM=SWAP empfohlen und vom Installer umgesetzt wird. Wenn ich also 500MB RAM habe, dann benutze ich 1G SWAP, insgesamt also 1,5G Speicher-Platz. Wenn ich 2G RAM habe, ist das mehr, als gerade eben mit RAM und SWAP zusammen, aber trotzdem nehme ich nun einen SWAP von 2G hinzu und komme damit auf 4G Speicherplatz. Irgendwann dachte ich mir, dass das unlogisch ist und deshalb schaltete ich SWAP aus. Ich kann darüber nicht klagen, bei mir funktioniert das vollkommen problemlos seit vielen Jahren.

dynamisches tmpfs erstellt.
zum Beispiel mit
Code:
tmpfs		/tmp			tmpfs	rw,mode=1777	0	0
in der fstab. mode=1777 steht nicht für die Dynamik, sieh dir mal die man page an, ob das auch was für dich wäre.

Vollverschlüsselung halte ich auch für sinnvoll, besonders da viele Prozessoren heutzutage AES-NI unterstützen!
Ja, aber das ist doch wiederum ziemlich egal, wie schnell deine CPU ist, wenn jemand die Platte geklaut hat.
Wenn du mit der entschlüsselten Partition oder dem entschlüsselten Dateisystem arbeitest (also meistens fast immer, wenn man den PC benutzt), ist die Verschlüsselung ja aufgehoben. Du musst ja entschlüsseln und ein evtl Angreifer hat dann Zugriff auf die Daten, wie wenn da nichts verschlüsselt wäre. Die Verschlüsselung nutzt nur dann, wenn jemand das entsprechende Dateisystem im verschlossenen Zustand entwendet hat.
Ansonsten wird da quasi on-the-fly entschlüsselt, wie wenn du Kompression im Dateisystem eingeschaltet hast. Das merkt man quasi nicht.
Wie auch immer, man muss das alles selbst entscheiden. Meine Erfahrung ist, dass ich ein einziges Mal einen Laptop liegen habe lassen und tatsächlich gestohlen bekam. Mir wäre die HW lieber gewesen, als die Daten darauf. Ich habe keine wichtigen Daten auf PCs. Es kann sein, dass Leute das anders sehen, aber für mich waren die Daten vollkommen ersetzbar, bzw, ich hatte eh eine Kopie davon. Wenn jemand nun diese Daten benutzen möchte, kann ich keinen Schaden dadurch erleiden. Aber, vermutlich ging es dem Dieb auch nur um die HW. Die Platte war damals allerdings auch verschlüsselt. Im Gegenzug habe ich mich selbst und auch einige Bekannte und Kollegen schon häufiger aus einem System ausgesperrt. Passwort vergessen, defekte Tastatur, defektes Key-Medium usw. Dann dauert es im günstigsten Fall einige Zeit, bis man seinen Rechner wieder verwenden kann. Manchmal habe ich auch totalen Datenverlust erlebt. Die Konsequenz für mich ist deshalb gewesen, keine Verschlüsselung mehr zu verwenden. Ich für mich brauche das nicht und passe lieber auf meine Laptops auf (die inzwischen so alt sind, dass sie auch niemand mehr stehlen will). Die Hauptrechner in meinem Haus halte ich eh für sicher. Wenn jemand einbricht, wird er anderes als die zehn Jahre alten, schweren Kisten ohne wert klauen. Wiederum gilt aber: auch hier habe ich keine wichtigen Daten auf dem PC, es könnte mir niemand damit schaden.
 
Aber, ich nutze schon seit Jahren auf diversen PCs und unter diversen Systemen keinen SWAP und habe bisher keine einzige schlechte Erfahrung damit gemacht.

Klar funktioniert's, wollte nur sagen, dass es nicht immer sinnvoll ist und sogar das System langsamer machen, weil das System potentiell mehr cachen kann, auch wenn mehr als genug RAM für den normalen Betrieb da ist. Aber bin schon still. :)
 
@pit234a Danke, werde ich machen. Gestern ist mir beim bootstrap von gcc das 2,5GB tmpfs vollgelaufen. Hab dann einfach den "size=" Parameter entfernt und schon war die Dynamik da. Warum einfach, wenns auch kompliziert geht? :D
 
Zurück
Oben