Ist es sicher, Bitcoin auf einem anderen Server auszuführen?

Ich mache erste, grobe Konzepte einiger Ideen für Bitcoin-fähige Dienste, die ich im Sinn habe.

Eine Sache, die ich mich frage, ist, gibt es einen Best-Practice-Ansatz zum Ausführen von Bitcoin auf einem anderen Server, der als Backend für einen bestimmten anderen Server fungiert?

Ich dachte an sowas:

Ich habe einen vServer A und einen einfachen PHP-Webspace auf einem anderen Host B .

A führt meinen Bitcoin-Deamon aus und erlaubt nur RPC-Aufrufe von Bs IP.

B führt seine RPC-Aufrufe an A in einem Server-Prozess durch, der nicht von einem Client/Website-Besucher ausgelöst wurde.

Wie sicher würden Sie ein solches Szenario gewährleisten? Ist es möglich, dass Knoten, die mit meinem vServer A verbunden sind, anhand der Transaktionen den Zweck des Servers erkennen und versuchen, ihn anzugreifen?

Selbst wenn sie dies tun, müssten sie einen MiM-Angriff verwenden, da A nur die IP von B akzeptiert.

Was kann ich noch tun, um die Kommunikation sicherer zu machen? HTTP-Authentifizierung, SSL?

Antworten (3)

Ist es möglich, dass Knoten, die mit meinem vServer A verbunden sind, anhand der Transaktionen den Zweck des Servers erkennen und versuchen, ihn anzugreifen?

Ja, wenn sie genug vom Netzwerk sehen können, können sie herausfinden, ob Sie eine Transaktion veranlassen oder nur weiterleiten. Es ist jedoch einfacher herauszufinden, dass Sie RPC durch einen Port-Scan ausführen.

Es gibt Möglichkeiten, um zu verhindern, dass ein Port-Scan dies findet, z. B. die Verwendung von iptables (Ctrl-F 'außer'). Seien Sie vorsichtig, denn nur die Verwendung DROPwird Angreifern immer noch sagen, dass dieser Port etwas Besonderes ist.

Danke für deinen Tipp (: Ich warte noch etwas länger auf andere Antworten, bevor ich deine als Lösung markiere

Wenn Sie auf beiden Maschinen SSH-Zugriff haben, können Sie einfach einen SSH-Tunnel von Maschine B zu A erstellen und Port 8332 durch ihn weiterleiten. Auf diese Weise ist das Verhalten so, als wäre Bitcoin auf beiden Maschinen installiert, der Datenverkehr zwischen den beiden Maschinen wird mit SSH verschlüsselt und Bitcoin muss nur auf die Loopback-Schnittstelle lauschen und wäre nicht vom Netzwerk aus zugänglich.

Spricht Bitcoin nicht nativ SSL?
Ja, aber Sie müssen noch den Port zum Netzwerk öffnen.
Ich sehe nicht, wie ein SSH-Tunnel die Sicherheit in diesem Fall wirklich verbessert. Außerdem fand ich Tools wie Stunnel ziemlich instabil und würde es im Allgemeinen vermeiden, bewegliche Teile zu einem Server-Setup hinzuzufügen, es sei denn, sie sind absolut erforderlich.

Ich verstehe die anfängliche Logik, Bitcoin & Wallets auf einen separaten Server zu legen, aber denken Sie darüber nach ... wenn Ihr Webserver kompromittiert wird, spielt es keine Rolle, wo sich Ihr Bitcoin befindet ... es ist auch kompromittiert.

Beispiel; Bitcoind ist auf Server A, Webserver ist auf Server B. Webserver B sendet Anfragen -> an Bitcoind Server A . . Antworten -> zurück zu Webserver A.

Wenn ich also Ihren Webserver B kompromittiere, kann ich ihn anweisen, eine Nachricht an den Bitcoin-Server zurückzusenden, die lautet: sendtoaddress [myhackeraddress], und das war's. Geld weg.

Das stimmt teilweise. Aber es kann weiter geschützt werden.. Wenn ich in meiner eigenen Oberfläche nur einen bestimmten Befehlssatz erstelle, über den beide Server nur miteinander kommunizieren können, kann der Angreifer auch nur diese verwenden. Obwohl Sie Recht haben: Die meisten Websites müssten so etwas wie makeTransaction(amount, from, to) unterstützen.
@Gundon bringt einen guten Punkt zur Sprache ~ Sie könnten den Bitcoin-Server so einrichten, dass er nur einen vordefinierten Bereich zulässiger RPC-Aufrufe akzeptiert, wie: getbalance..etc.
Und wenn die Zeit nicht kritisch ist und es in Ordnung ist, alle Transaktionen nur einmal am Tag durchzuführen, können Sie auch bestimmte RPC-Aufrufe mit einem Passwort schützen. Wenn Sie einen Wrapper auf dem Bitcoin-Server schreiben, könnte dies auch pro Benutzer erfolgen und das Passwort müsste nicht auf Ihrem öffentlichen Server gespeichert werden