Skip to content
Snippets Groups Projects
Commit 8f22f67e authored by Christian Elberfeld's avatar Christian Elberfeld
Browse files

encrypted /srv for verwaltung

parent f7557d57
No related branches found
No related tags found
No related merge requests found
...@@ -165,6 +165,9 @@ ...@@ -165,6 +165,9 @@
servicename: "gitea", servicename: "gitea",
domain: "verwaltung-git.warpzone.ms" domain: "verwaltung-git.warpzone.ms"
} }
- {
role: verwaltung/cryptdata, tags: cryptdata,
}
- { - {
role: verwaltung/docker_jameica, tags: jameicavnc, role: verwaltung/docker_jameica, tags: jameicavnc,
servicename: "jameicavnc", servicename: "jameicavnc",
......
...@@ -18,37 +18,4 @@ Für die datenhaltung von Jameica ist ein lokaler MySQL Server installiert. ...@@ -18,37 +18,4 @@ Für die datenhaltung von Jameica ist ein lokaler MySQL Server installiert.
- Installation GitTea - Installation GitTea
- Weitere Administrative Tools ? - Weitere Administrative Tools ?
## Einrichtung Festplattenverschlüssellung
Auf der Vorstands-VM ist das Verzeichnis /srv mit ecryptFS verschlüsselt.
Die Einrichtung hierfür erfolgt manuell.
Bei der Einrichtung muss /srv noch leer sein
### Tools installieren
apt-get -y install ecryptfs-utils
### Crypt mount einrichten
mount -t ecryptfs /srv /srv
Select key type: passhrase
Select cipher: aes
Select key bytes: 16
Enable plaintext pass: no
Enable filename encryption: yes
Confirm filename encryption key (autogen) >> Signatur merken
Select proceed mount: yes
Select append sig: yes
### Crypt-Helper einrichten
Datei: ~/mount_srv.sh (<Signatur> mit der obigen Signatur ersetzen)
```bash
#!/bin/sh
echo "Select option 2 and enter Passphrase"
mount -t ecryptfs /srv /srv -o rw,noatime,nodiratime,ecryptfs_unlink_sigs,ecryptfs_fnek_sig=<Signatur>,ecryptfs_key_bytes=16,ecryptfs_cipher=aes,ecryptfs_sig=<Signatur>,ecryptfs_passthrough=n
```
### Referenzen
https://www.howtoforge.com/tutorial/how-to-encrypt-directories-and-partitions-with-ecryptfs-on-debian/
# Festplattenverschlüssellung für /srv
Die Datendisk (gemountet auf /srv) ist mit LUNKS verschlüsselt.
Dieser Mount muss nach einem Restart des Servers manuell gemountet werden, damit das Passwort nicht auf dem Server gespeichert ist.
Nach einem Restart des Server kann man sich per SSH einloggen.
Der Start der Docker Services ist blockiert solange /srv nicht gemountet ist.
Zum Mounten von /srv kann das folgende Script verwendet werden (als root): ~/mount_crypt_and_start services.sh
# Vergrößern der Crypt-Partition
## in Proxmox
- Server herunterfahren
- Virtuelle Disk: Resize Disk
- Server starten
## auf dem Server
s. Script: mount_crypt_and_start_services.sh
Nach dem Mounten wird das Dateisystem automatisch vergrößert.
Der Server muss vorher neu gestartet werden, LUKS erkennt beim erneuten öffnen des Devices die neue Größe automatisch und passt die Partition an.
# Manuelles Mounten der Crypt Partition
s. Script: mount_crypt_and_start_services.sh
# Initiale Einrichtung der Crypt-Partition
Neben der Root-Partition muss eine weitere Disk für die VM hinzugefügt werden.
In dieser Anleitung wird /dev/sdX hierfür verwendet
Benötigte Pakete (debian): btrfs-progs cryptsetup
1. LUKS Volume erstellen (wir verwenden die ganze disk)
cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --key-size 512 /dev/sdX
2. Verschlüsselte Disk laden
cryptsetup open /dev/sdX cryptvol
3. Dateisystem erstellen
mkfs.btrfs /dev/mapper/cryptvol
4. manuell mouten
mount -o noatime,nodiratime,defaults /dev/mapper/cryptvol /srv
5. Lock-Datei erstellen
echo "INITIALIZED on $(date)" > /srv/cryptvol_mounted
- name: Script Helper erstellen
template:
src: "{{ item }}"
dest: "/root/{{ item }}"
mode: o+x
with_items:
- "mount_crypt_and_start_services.sh"
- name: Systemd Service overrrides - dirs
file:
path: "/etc/systemd/system/{{ item }}.d"
state: "directory"
with_items:
- "containerd.service"
- "docker.service"
- "docker.socket"
- name: Systemd Service overrrides - files
template:
src: "systemd-override.service"
dest: "/etc/systemd/system/{{ item }}.d/local.conf"
with_items:
- "containerd.service"
- "docker.service"
- "docker.socket"
#!/bin/bash
# mount encrypted /srv and start docker services
echo "Stop services if running"
systemctl stop containerd.service
systemctl stop docker.service
systemctl stop docker.socket
echo "open crypt device (and expand partition if needed)"
cryptsetup open /dev/sdb cryptvol
echo "mount /srv"
mount -o noatime,nodiratime,defaults /dev/mapper/cryptvol /srv
mount | grep /dev/mapper/cryptvol
echo "encrypted /srv mounted, content of /srv:"
ls -alh /srv
echo "resize filesystem to new size if needed .."
btrfs filesystem resize max /srv
echo "starting services"
systemctl start containerd.service
systemctl start docker.service
systemctl start docker.socket
systemctl status containerd.service
systemctl status docker.service
systemctl status docker.socket
[Unit]
ConditionFileNotEmpty=/srv/cryptvol_mounted
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment