
Ich versuche, Dropbear so zu konfigurieren, dass es Folgendes tut.
1) Lauschen Sie nur auf Port 22 der Tun0-Schnittstelle (erstellt durch den OpenVPN-Dienst). 2) Verwenden Sie nur die Autorisierung mit öffentlichem Schlüssel.
Ich sehe, dass dropbear.socket Port 22 betrachten kann. Aber wie kann ich erreichen, dass es nur eine OpenVPN-Iface betrachtet (z. B. tun0)?
Ich habe „BindToDevice“ mit der systemd-Datei dropbear.socket ausprobiert, aber es tritt das Henne-Ei-Problem auf: Der Dropbear-Socket muss anzeigen, dass das Netzwerk aktiv ist, OpenVPN muss jedoch ein aktives Netzwerk haben, um mit der Erstellung des tun0-Geräts zu beginnen.
Gibt es eine bessere Möglichkeit, Dropbear so zu konfigurieren, dass nur eine bestimmte Schnittstelle angezeigt wird?
Antwort1
Nachdem ich selbst mit dem gleichen Problem zu kämpfen hatte, habe ich zwei Lösungen gefunden. Die erste ist etwas umständlich, ermöglicht aber die Verwendung von BindToDevice
. Sie erfordert das Festlegen DefaultDependencies=no
und anschließende Replizieren derStandardabhängigkeiten, mit Ausnahme der Before=sockets.target
Abhängigkeit. Die .socket
Datei könnte wie folgt aussehen:
[Unit]
Description=Dropbear Activation Socket
DefaultDependencies=no
After=sysinit.target
Requires=sysinit.target
Before=shutdown.service
Conflicts=shutdown.service
Requires=sys-devices-virtual-net-tun0.device
After=sys-devices-virtual-net-tun0.device
[Socket]
ListenStream=:22
BindToDevice=tun0
Accept=yes
[Install]
WantedBy=multi-user.target
Beachten Sie auch, dass ich „für“ und nicht „ WantedBy=
verwendet habe .multi-user.target
sockets.target
Es gibt jedoch eine andere Lösung, die einfacher ist, wenn Ihr Anwendungsfall die Angabe der tun0
IP-Adresse in der .socket
Datei zulässt. Geben Sie dazu die IP-Adresse in der ListenStream
Direktive an und verwenden SieFreeBind=yes
anstelle von BindToDevice=tun0
. Die resultierende .socket
Datei könnte folgendermaßen aussehen:
[Unit]
Description=Dropbear Activation Socket
[Socket]
ListenStream=<tun0 IP address>:22
FreeBind=yes
Accept=yes
[Install]
WantedBy=sockets.target