        |
Habilitar un túnel para que se puedan conectar desde una IP determinada de internet a una IP:PUERTO determinado de un equipo de SICO
Hay unas scripts para posibilitar que se pueda hacer una conexión desde una IP concreta de internet a un equipo:puerto concreto de SICO.
El puerto externo que se va a abrir es el vps.sicosoft.es:5910
El forwardeo lo pone el comando del apartado "1." que pongo a continuación y realmente es lo único estrictamente necesario. El resto de las instrucciones son para poder ver qué se está haciendo.
Antes de nada, hay que preguntar a la persona que se va a conectar que desde qué IP se va a conectar para darle acceso. Suponiendo que su IP es la 1.2.3.4 y se quiere dar acceso a la máquina de sico 3.0.1.225:5900 (puerto VNC de la máquina 3.0.1.225), se haría lo siguiente:
1. Desde uiharu, como usuario "dario", se escribe:
ssh root@vps.sicosoft.es -R 5910:3.0.1.225:5900 "./firewall-ip-port.sh 1.2.3.4 5910"
2. Con eso saldrá por pantalla lo siguiente:
Restricted port 5910 to connections from 1.2.3.4
Press ENTER to remove restrictions and exit
3. Para tener trazas de si está conectado o no, se abre otra ventana en uiharu como "dario" y se escribe:
ssh root@vps.sicosoft.es "TERM=vt100 ./connect-watch.sh 5910"
4. Se le dice a la persona en cuestión que ya puede conectarse con un VNC a la dirección vps.sicosoft.es:5910 (en el cliente VNC tiene que usar vps.sicosoft.es:10 )
5. Una vez que has visto que se ha conectado, puedes abrir tú también un VNC contra 3.0.1.225:0 con la opción "Shared" activada para no cerrar su conexión y así ver lo que está haciendo.
6. Cuando haya terminado de usar el VNC, se pulsa ENTER en la primera ventana para cerrar la redirección. Saldrá lo siguiente:
Restricted port 5910 to connections from 1.2.3.4
Press ENTER to remove restrictions and exit
Firewall rules restored to default.
7. Y eso es todo. Todo ha vuelto a la normalidad
Contenido de los scripts en vps.sicosoft.es
/root/firewall-ip-port.sh
#!/bin/bash
if [ "m$1" == "m" ] || [ "m$1" == "m--help" ] || [ "m$2" == "m" ] ; then
echo "Syntax: $0 remote-ip local-port"
echo "Example: $0 83.48.87.215 5910"
echo "Creates a firewall rule to only accept connections to that local port from the specified remote-ip"
exit 1
fi
IPTABLES=/sbin/iptables
DEV=ens3
EXT_IP=51.38.32.171
$IPTABLES -A INPUT -i $DEV -p tcp --dport "$2" -s "${1}/32" -j ACCEPT
$IPTABLES -A INPUT -i $DEV -p tcp --dport "$2" -j DROP
echo "Restricted port $2 to connections from ${1}"
echo "Press ENTER to remove restrictions and exit"
redir ${EXT_IP}:${2} 127.0.0.1:${2}
read dummy
ps -efa | grep "re[d]ir ${EXT_IP} ${2} 127.0.0.1 ${2}" | expand | sed "s/ */ /g" | cut -d ' ' -f 2 | xargs kill
bash /etc/default/iptables
echo "Firewall rules restored to default."
|
/root/connect-watch.sh
#!/bin/bash
if [ "m$1" == "m" ] || [ "m$1" == "m--help" ] ; then
echo "Syntax: $0 port-number"
echo "Uses watch to show connections to the externap IP in the specified port"
echo "Example: $0 5910"
echo "NOTE: Use Ctrl+C to exit"
exit 1
fi
EXT_IP=51.38.32.171
watch "netstat -pan | grep ${EXT_IP}:${1}"
|
|