10 Punkte von xguru 2024-08-27 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Ein Tool, das Befehle ausführt, indem es UDP-Pakete an einen Server sendet
  • Die Befehle werden serverseitig konfiguriert, daher definiert der Client keinen auszuführenden Befehl, sondern wählt nur aus vorhandenen Befehlen aus
  • Besteht aus 3 Binärdateien
    • client: wird auf einem Computer ausgeführt und sendet UDP-Pakete
    • server: empfängt UDP-Pakete und prüft ihre Gültigkeit
    • commander: führt den im Dateninhalt des UDP-Pakets kodierten Befehl aus, wenn er gültig ist
  • Sicherheit
    • Da über UDP gesendet wird, antwortet der Server überhaupt nicht: kein Port-Scanning möglich
    • Die vom Client an den Server übertragenen Daten werden mit RSA verschlüsselt
    • Der Client definiert nur, welcher Befehl ausgeführt werden soll, die Befehle werden auf dem Server gespeichert -> der Client kann Befehle auswählen, aber nicht definieren
    • Die Server-Software sollte mit so wenigen Betriebssystemrechten wie möglich ausgeführt werden
    • Alle vom Server empfangenen Pakete werden zur Sperrliste hinzugefügt, um vor Replay-Angriffen zu schützen
    • (WIP) DoS-Schutz

Anwendungsbeispiel: single packet authorization (SPA)

Um die Serversicherheit zu erhöhen, kann man statt SSH vollständig offen zu lassen den SSH-Port kurz öffnen und dann wieder schließen

address = "0.0.0.0:8080"  # Adresse, auf der der Ruroco-Server lauscht (wenn systemd/ruroco.socket nicht verwendet wird)  
config_dir = "/etc/ruroco/"  # Pfad, unter dem die Konfigurationsdateien gespeichert werden  
  
[commands]  
# SSH öffnen (nur für die IP-Adresse, von der die Anfrage kam)  
open_ssh = "ufw allow from $RUROCO_IP proto tcp to any port 22"   
# SSH schließen (nur für die IP-Adresse, von der die Anfrage kam)  
close_ssh = "ufw delete allow from $RUROCO_IP proto tcp to any port 22"  
  • Konfiguriere Ruroco auf dem Server so und führe auf der Client-Seite den folgenden Befehl aus
    ruroco-client send --address host.domain:8080 --private-pem-path /path/to/ruroco_private.pem --command open_ssh --deadline 5
  • Der Server prüft mithilfe von RSA, ob der Client berechtigt ist, den betreffenden Befehl auszuführen, und führt den unter "open_ssh" definierten Befehl aus
  • Das Argument --deadline bedeutet, dass der Server den Befehl innerhalb von 5 Sekunden nach der Ausführung des Befehls starten muss
  • Zugriff auf den SSH-Port wird nur für die IP erlaubt, von der das UDP-Paket gesendet wurde
  • Natürlich sollten wie bei jeder Exponierung des SSH-Ports ins Internet auch alle anderen Sicherheitsmaßnahmen umgesetzt werden
  • Durch Hinzufügen weiterer Befehle in der Konfigurationsdatei können beliebig viele Befehle definiert werden

Noch keine Kommentare.

Noch keine Kommentare.