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.
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:
Und gibt der Gruppe die Rechte das “/etc/ipsec.d/private” Verzeichnis und ipsec.secrets zu lesen:
Dann muss der Datei “/usr/lib/strongswan/charon noch die Capability NET_ADMIN gegeben werden:
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:
%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