Primero, estoy haciendo conceptos aproximados de algunas ideas para servicios habilitados para bitcoin que tengo en mente.
Una cosa que me pregunto es si existe un enfoque de mejores prácticas para ejecutar bitcoind en otro servidor que actúe como backend para otro servidor en particular.
Pensé en algo así:
Tengo un servidor virtual A y un PHP-Webspace simple y simple en otro host B.
A ejecuta mi bitcoind-deamon y solo permite llamadas RPC desde Bs IP.
B realiza sus llamadas RPC a A en un proceso de servidor que no fue activado por un cliente/visitante del sitio web.
¿Qué tan seguro garantizaría tal escenario? ¿Es posible que los nodos, conectados a mi servidor virtual A, identifiquen el propósito del servidor a partir de las transacciones e intenten atacarlo?
Incluso si lo hicieran, tendrían que usar un ataque MiM, porque A solo acepta la IP de B.
¿Qué más puedo hacer para que la comunicación sea más segura? ¿Autorización HTTP, SSL?
¿Es posible que los nodos, conectados a mi servidor virtual A, identifiquen el propósito del servidor a partir de las transacciones e intenten atacarlo?
Sí, si pueden ver lo suficiente de la red, pueden determinar si está originando una transacción o simplemente transfiriéndola. Sin embargo, es más fácil darse cuenta de que está ejecutando RPC a través de un escaneo de puertos.
Hay formas de evitar que un escaneo de puertos encuentre esto, como usar iptables (Ctrl-F 'excepto'). Tenga cuidado, porque el simple hecho de usar DROP
seguirá diciendo a los atacantes que hay algo especial en ese puerto.
Si tiene acceso SSH en ambas máquinas, simplemente puede crear un túnel SSH desde la máquina B a la A y reenviar el puerto 8332 a través de él. De esa manera, el comportamiento es como si bitcoind estuviera instalado en ambas máquinas, el tráfico entre las dos máquinas se cifra con SSH y bitcoind solo tiene que escuchar la interfaz de bucle invertido y no sería accesible desde la red.
Entiendo la lógica inicial de poner el bitcoind y las billeteras en un servidor separado, pero piénsalo... si tu servidor web se ve comprometido, entonces no importa dónde esté tu bitcoind... también está comprometido.
Ejemplo; Bitcoind está en el servidor A, el servidor web está en el servidor B. El servidor web B envía solicitudes -> al servidor bitcoind A. . respuestas -> volver al servidor web A.
Por lo tanto, si comprometo su servidor web B, puedo decirle que envíe un mensaje al servidor bitcoind diciendo enviar a la dirección [mi dirección del hacker] y eso es todo. Los fondos se han ido.
Gundon