Pregunta ¿Cómo permitir solo las conexiones en túnel al puerto?


Me gustaría hacer que un git-daemon atraviese un túnel ssh permanente. Logré esta tarea. ¿Cómo bloqueo cualquier conexión remota sin enrutar al puerto GIT_DAEMON (9418 en mi caso)?

Ya probé reglas simples en iptables (bloquear todo excepto localhost):

$ iptables -A INPUT -p tcp -d ! localhost --destination-port 9418 -j DROP

Pero también bloquea un túnel (ya que guarda la dirección IP de origen). Si tengo un host más para el firewall, simplemente se puede hacer bloqueando cualquier conexión remota a este puerto, pero necesito este host para hacer este trabajo.

El túnel se crea de una de dos maneras:

Para ventanas:

plink.exe -N -i <key> -L 127.0.0.1:9418:192.168.1.69:9418 tunnel@192.168.1.69

Para Linux:

ssh -N -i <key> -L 127.0.0.1:9418:192.168.1.69:9418 tunnel@192.168.1.69

5
2018-06-12 07:43


origen


Respuestas:


Puede intentar esto (no probado)

# accept localhost
iptables -A INPUT -p tcp -d localhost --destination-port 9418 -j ACCEPT

# send everyone else packing
iptables -A INPUT -p tcp --destination-port 9418 -j DROP

Usando eso iptables -L dice:

ACCEPT     tcp  --  anywhere             localhost.localdomain tcp dpt:git
DROP       tcp  --  anywhere             anywhere            tcp dpt:git

EDITAR

Este es (probablemente) cómo debería configurarse su túnel:

ssh -N -i <key> -L 127.0.0.1:9418:127.0.0.1:9418 tunnel@192.168.1.69

Es importante que la segunda mitad sea 127.0.0.1 y NO una IP normal


3
2018-06-12 07:50



En realidad, puedes lograr esto sin usar iptables en absoluto, simplemente haciendo git-daemon enlazar a la interfaz de loopback, ej.

git daemon --listen=127.0.0.1

Esto lo hará para que solo se pueda conectar desde el host local y no requiera la configuración de privilegios de administrador.


7
2018-06-12 09:27