El firewall en el servidor SSH rechaza la conexión de mi cliente (funciona bien sin el firewall habilitado)

El firewall en el servidor SSH rechaza la conexión de mi cliente (funciona bien sin el firewall habilitado)

Tengo un servidor SSH al que me gustaría conectarme desde mi Android.

Creé claves SSH y todo funciona bien. Mi celular se conecta a mi servidor vía SSH. No hay problema ahí.

El problema comienza cuando habilito mi iptablesfirewall. En este punto, mi firewall rechaza las conexiones provenientes de mi Android.

En mi Android estoy usando Termux. Cuando estoy en Termux, puedo encontrar mi dirección IP pública con

curl -4 icanhazip.com

Dice que mi IP pública para mi Android es x.x.121.3. Ofusqué la dirección aquí pero en la iptablesconfiguración real es exacta. Esta es la configuración:

Chain INPUT (policy DROP 7530 packets, 338K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    3   180 ACCEPT     tcp  --  *      *       x.x.161.85           0.0.0.0/0            tcp dpt:22 state NEW
    1    60 ACCEPT     tcp  --  *      *       x.x.134.54           0.0.0.0/0            tcp dpt:22 state NEW
    0     0 ACCEPT     tcp  --  *      *       x.x.121.3            0.0.0.0/0            tcp dpt:22 state NEW
    0     0 ACCEPT     tcp  --  *      *       x.x.136.182          0.0.0.0/0            tcp dpt:22 state NEW
  857 4470K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
   12   986 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  650 81372 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW,RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0

¿Qué estoy haciendo mal? ¿Cómo permitir conexiones SSH provenientes de mi celular?

Respuesta1

curl -4 icanhazip.comutiliza HTTP y el puerto 80 para recuperar datos. Puedes verificar esto ejecutando curl -v -4 icanhazip.com.

Puede ser que su ISP manipule el tráfico, por lo que cualquier conexión que realice al puerto 80 ingresa a Internet desde una dirección IP diferente a la de su otra comunicación (incluido SSH al puerto 22).

Por ejemplo, pueden enrutar HTTP desde muchos de sus clientes a través de un único servidor proxy, para aprovechar el caché y reducir la transferencia de datos a través del enlace más allá del proxy. El proxy es casi transparente: no requiere ninguna configuración por tu parte y "sientes" como si no hubiera ningún proxy; pero realiza solicitudes HTTP en nombre de muchos clientes, utilizando su dirección IP independiente. De hecho, todos los clientes aparecen ante los servidores HTTP como provenientes de esta única dirección IP.

Pase lo que pase, probablemente la dirección curlque le proporcionó no sea la dirección de origen que utilizan sus conexiones SSH. La dirección que permitiste en el firewall no es la correcta.

Es una suerte que puedas desactivar el firewall y conectarte correctamente. Utilice este hecho para descubrir la dirección IP correcta:

  1. Deshabilite el firewall temporalmente.
  2. Conéctate desde el celular.
  3. En la sesión de shell resultante, ejecute echo "$SSH_CONNECTION".
  4. La primera dirección IP es aquella desde la que el servidor "piensa" que se conecta.
  5. Si echo …no imprime nada, verifique los registros en el servidor para conocer la IP real del cliente. En mi Debian algunos comandos útiles son:

    sudo tail /var/log/auth.log
    journalctl _SYSTEMD_UNIT=ssh.service | tail
    

    O utilizar alguna herramienta ( lsof, ss,…) para ver las conexiones establecidas y direcciones asociadas; la conexión SSH que estás usando debería estar allí. No daré más detalles aquí sobre cómo limitar la lista y encontrar esta única conexión.

Después de descubrir la dirección correcta, reconfigure el firewall para permitir el tráfico SSH que se origina desde allí.

información relacionada