strongSwan als unprivilegierter Nutzer laufen lassen

Wer strongSwan benutzt und dem beim Gedanken Netzwerkdienste mit root laufen zu lassen etwas übel wird, kann beruhigt sein:
Man kann strongSwan als unprivilegierten Nutzer laufen lassen!

Im Laufe dieses Tutorials werden verschiedene Dateien verändert. Die veränderten Versionen sind dem Blogpost angehängt und können genutzt werden.
Damit strongSwan überhaupt die UID ändern kann, muss das Programm mit –with-capabilities=libpcap oder –with-capabilities=native kompiliert worden sein!
Für strongSwan ab Version 5.1.0:
Damit das funktioniert, muss zuerst der Einträge charon.user in der Datei “/etc/strongswan.conf”
angelegt und mit dem Benutzer, als der strongSwan laufen soll, festgelegt werden.

$ cat strongswan.conf


charon {
user=strongswan
group=strongswan
}


Für strongSwan vor Version 4.2.2:

Hierbei muss strongSwan mit den Parametern –user=hierderUser –group=hierdieGruppe, sowie –with-capabilities=libpcap neu kompiliert werden.
Siehe hier


Dann legt man einen neuen Benutzer mit Gruppe für strongSwan an:

$ groupadd -r strongswan && useradd -r -M -g strongswan -s /sbin/nologin strongswan

Und gibt der Gruppe die Rechte das “/etc/ipsec.d/private” Verzeichnis und ipsec.secrets zu lesen:

$ chown -R root:strongswan /etc/ipsec.d/private && chmod -R 640 /etc/ipsec.d/private && chown root:strongswan /etc/ipsec.secrets && chmod 640 /etc/ipsec.secrets

Dann muss der Datei “/usr/lib/strongswan/charon noch die Capability NET_ADMIN gegeben werden:

$ setcap CAT_NET_ADMIN+ep /usr/lib/strongswan/charon

Falls “leftfirewall” oder “rightfirewall” benutzbar sein sollen,
muss ausserdem noch sudo noch installiert werden und dem Benutzer “strongswan” Ausführbarkeitsrechte ohne Passwortabfrage für “iptables” und “ip6tables” gegeben, und das updown-Skript editiert werden:

$ cat /etc/sudoers


%strongswan ALL = NOPASSWD: /usr/bin/iptables
%strongswan ALL = NOPASSWD: /usr/bin/ip6tables

Für das Editieren des updown-Skripts muss leider ein Texteditor oder ein diff genutzt werden, da die Wörter “iptables” und “ip6tables” nicht nur in den Kommandos vorkommen. Die zu editierenden Zeilen sind diese:
iptables: 402, 405, 426, 429, 452, 455, 464, 467, 491, 495, 505, 509
ip6tables: 561, 564, 585, 588, 611, 614, 623, 626, 650, 654, 664, 668

Anhänge:
strongswan.conf
_updown
_updown_espmark

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.