Ich verwende derzeit Thunderbird mit Gnupg, um verschlüsselte E-Mails zu lesen. Wenn ich das Austauschverhalten richtig verstehe, werden die Speicherseiten mit den entschlüsselten E-Mails möglicherweise ausgelagert und hinterlassen Spuren auf der Festplatte, die theoretisch später forensisch wiederhergestellt werden können.
Es ist sicherlich möglich, nur eine verschlüsselte Auslagerungsdatei zu verwenden oder das Auslagern global für die Dauer der Verwendung vertraulicher Dateien zu deaktivieren. Dies wirkt sich jedoch auf die Leistung aus, wird möglicherweise vergessen und erfordert Root-Rechte.
Ist es möglich, bestimmte Dateien oder Programme als nicht ausgelagert zu markieren? Auch ohne Root-Zugriff? Könnte man eine Anwendung schreiben, die an technisch naive Benutzer verteilt werden kann und deren Speicherinhalt niemals auf die Festplatte übertragen wird?
quelle
cgexec
Thunderbird hinein. Sie benötigen noch Root-Zugriff, aber das ist die Auflösung auf Administratorebene. Wenn Sie Ihre eigene Anwendung entwickeln, würden Sie mlock verwenden .mlock
, sollten Sie überprüfen.Antworten:
In den Kommentaren schlug ich vor, dass Sie eine cgroup erstellen,
memory.swappiness
auf Null setzen (um das Austauschen zu minimieren) und Ihre Anwendung darin ausführen. Wenn Sie dies tun würden, würde Ihre Anwendung wahrscheinlich nicht ausgetauscht, wenn Sie nicht so wenig physischen Speicher hätten, dass das Austauschen von Seiten gegen Programme in dieser Gruppe die einzige Möglichkeit wäre, genügend physischen Speicher zur Verfügung zu stellen.So tun Sie dies auf RHEL 6.5:
Stellen Sie sicher, dass das
libcgroup
Paket installiert ist. Dadurch erhalten Sie Zugriff auf Userspace-Tools wiecgcreate
undcgexec
.Starten und aktivieren Sie den
cgconfig
Dienst, damit die Änderungen an der cgroup-Konfiguration zwischen den Neustarts erhalten bleiben. Unter RHEL sollte dieser Dienst auch die erforderlichen Dateisysteme unter dem/cgroup
Baum bereitstellen .Erstellen Sie die cgroup mit
cgcreate -g memory:thunderbird
Setzen Sie swappiness in dieser Gruppe mit auf Null
cgset -r memory.swappiness=0 thunderbird
Verwenden Sie
cgsnapshot -s > /etc/cgconfig.conf
diese Option , um eine aktualisierte persistente Konfiguration für dencgconfig
Dienst zu speichern (alle Änderungen waren bisher Laufzeitänderungen. Möglicherweise möchten Sie die Standardkonfigurationsdatei irgendwo speichern und erneut ausführen, bevor Sie sie zur persistenten Konfiguration machen.Sie können jetzt die
cgexec
gewünschten Anwendungen innerhalb derthunderbird
cgroup starten:[root @ xxx601 ~] # cgexec -g Speicher: Thunderbird ls
anaconda-ks.cfg a.out foreman.log index.html install.log install.log.syslog node.pp sleep sleep.c ssl-build stack test
[root @ xxx601 ~] #
Ich habe nicht
thunderbird
wirklich installiert, sonst hätte ich das getan. Ich bin mir nicht sicher, warum die Formatierung der oben genannten fehlerhaft ist.Eine Alternative dazu
cgexec
wäre, Thunderbird zu starten und die PID zurtasks
Datei für die Anwendung hinzuzufügen . Beispielsweise:[root @ xxx601 ~] # cat / cgroup / memory / thunderbird / task
[root @ xxx601 ~] # pidof httpd
25926 10227 10226 10225 10163 10162 10161 10160 10159 10157 10156 10155 10152 10109
[root @ xxx601 ~] # echo 25926> / cgroup / memory / thunderbird / task
[root @ xxx601 ~] # cat / cgroup / memory / thunderbird / task
25926
Auch hier ist zu erwähnen, dass dies das Austauschen technisch nicht verhindert, aber ohne die Anwendung selbst zu ändern, wahrscheinlich die beste Wahl ist. Ich habe gerade herausgefunden
memory.memsw.limit_in_bytes
, dass es eine direktere Kontrolle zu sein scheint, wenn es darum geht, kein Tauschen zu erzwingen, aber ich habe nicht genug damit herumgespielt, um mich wirklich wohl zu fühlen und zu sagen, dass es Ihr Problem vollständig behebt. Das heißt, es könnte etwas sein, um das man sich kümmern muss.Die eigentliche Antwort wäre, über anwendungssensible
mlock
Informationen zu verfügen , um diese Art von Bedenken zu umgehen. Ich bin bereit zu wetten, dass eine Anwendung wie Thunderbird dies tut, aber ich weiß nicht genug über die Interna, um dies zu kommentieren.quelle
chroot
in einemunshare
d---mount
Namespace, denke ich. Wenn Sie dies tun, bin ich bereit zu wetten, dass der Endleistungseffekt besser ist als ein verschlüsselter Tausch.memory.swappiness=0
Sie denken? Ich würde es nicht wissen - aber ich bin neugierig.MADV_DONTDUMP
. Meistens sind Menschen, die sich Sorgen um den Austausch vertraulicher Informationen machen, jedoch besorgt darüber, dass Laptops gestohlen und der Austauschbereich gekämmt werden. Zu dem Zeitpunkt, an dem Core Dumps initiiert werden, wurde das System bereits vollständig kompromittiert.Anwendungen können ihren Speicher sperren, sodass er nicht ausgetauscht werden kann.
Ich kenne jedoch keine Möglichkeit, dies von außen zu beeinflussen. Die Anwendung müsste geschrieben werden, um dies selbst zu verwenden. Mit Mails ist es wahrscheinlich besonders schwierig, da es normalerweise auch externe Programme zum Anzeigen von Anhängen und dergleichen beinhaltet.
Selbst mit Memlock besteht die Möglichkeit, dass es auf Ihrer Swap-Partition landet - wenn Sie Suspend to Disk verwenden, das den gesamten Speicher auf die Festplatte schreibt, unabhängig von Nicht-Swap-Einstellungen.
Es ist einfacher, zunächst nur die vollständige Festplattenverschlüsselung durchzuführen.
quelle
Ja, eine Anwendung kann durch den
mlock
Systemaufruf verhindern, dass ein Teil ihres Speichers ausgelagert wird . Dies ist jedoch in Ihrem Fall nicht wirklich nützlich.Vertrauliche Daten befinden sich nicht nur im Anwendungsspeicher. Es endet in temporären Dateien an verschiedenen Orten auf (
/tmp
,/var/spool
usw.). Thunderbird selbst zeigt die entschlüsselte E-Mail an, sodass Sie sie auch im RAM sperren müssen.Wenn Sie sicherstellen möchten, dass Ihre Festplatte keine Spuren vertraulicher Dateien enthält, müssen Sie Ihren Swap sowie alle potenziellen Speicherorte temporärer Dateien verschlüsseln (insbesondere,
/tmp
wenn es sich nicht um tmpfs handelt, und die meisten davon/var
zusätzlich natürlich in dein Home-Verzeichnis).Der Einfluss des verschlüsselten Austauschs auf die Leistung ist gering bis gleich Null. Die Verschlüsselung ist viel schneller als die Festplatten-E / A.
quelle
chroot
Ein Namespace-Container mit scheint eineswapoff
bessere Alternative zum verschlüsselten Swap zu sein. Sehr gute Antwort - keine andere Antwort erwähnte andere Dateisystemeffekte. Ich selbst habe einfach keinenswap
- ich besitze keinen Computer mit weniger als 4 GB RAM und sehe keinen Nutzen darin, ihn zu verwenden. Seine Verwendung ist nur für alle Maschinen praktisch, bei denen es um Suspend geht - und das lässt sich leicht per Skript ausführen.Ich denke nur , wenn es besser sei , mit der Änderung der Priorität des Bewerbungsverfahrens auf zB mit einem Start-up - Skript starten sie mit einer hohen Priorität beginnend mit
nice
undrenice
und mit der I / O - Priorität ändern , dass mitionice
und dann sehen , was das passiert.Sie können die Anwendung auf die höchste Prioritätsstufe "schön" machen, z. B. auf
-20
diese Weise verlassen Sie das Betriebssystem, um das zu tun, was es am besten kann, indem Sie entscheiden, wann die Anwendungsprozesse ausgetauscht werden sollen.Hat aber von anderen vorgeschlagen, wenn Sie mehr Kontrolle und Granularität wünschen, müssen Sie anfangen zu betrachten
cgroups
und einzustellenmemory.swappiness
quelle