Dependiendo de para qué se necesite SSH, es posible que pueda lograr este objetivo (para archivos no triviales) utilizando IPTables para terminar las sesiones si el tamaño del paquete es mayor, digamos 1400 bytes. Esto significa que el ssh interactivo funcionará principalmente, pero tan pronto como algo intente enviar un paquete de 1500 bytes, como scp debería para un archivo de más de 1499 bytes asumiendo una MTU estándar de 1500, terminará la conexión.
Esto también evitará el ataque de "captura" que usted menciona.
Desafortunadamente, esto significa que puede tener problemas para editar algunos archivos con un editor de texto, si la pantalla necesita dibujar más de 1400 caracteres, o si necesita capturar un archivo largo o hacer una lista larga del directorio.
En el caso más simple, un comando para hacer esto podría ser algo así como
iptables -I OUTPUT -p tcp --dport 22 -m length --length 1400:0xffff -j DROP
Podemos hacer que esto funcione mejor combinando las comprobaciones de longitud de paquetes con ipt_recent, de modo que permita un número limitado de paquetes de más de 1400 bytes dentro de un marco de tiempo establecido (digamos 8 paquetes por 5 segundos); esto permitiría que se escapen paquetes de hasta 12k , pero puede darle la interactividad que necesitará para editar archivos, etc. Puede, por supuesto, modificar la cantidad de paquetes.
Esto podría parecerse a algo como
iptables -I OUTPUT -p tcp --dport 22 -m length --length 1400:0xffff \
-m recent --name noscp --rdest --set
iptables -I OUTPUT -p tcp --dport 22 -m length --length 1400:0xffff \
-m recent --name noscp --rdest --update --seconds 5 --hitcount 8 \
-j REJECT --reject-with tcp-reset
Los ejemplos de reglas anteriores solo protegen contra cargas scp como scp myfile.data remote.host:~
. Para protegerse adicionalmente contra descargas scp como scp remote.host:~/myfile.data /local/path
, repita las reglas anteriores pero reemplace --dport
con --sport
.
Un pirata informático puede solucionar estas limitaciones estableciendo una MTU de menos de 1400 en su máquina (o forzar mtu o similar). Además, aunque no puede limitar esto a ciertos usuarios, puede limitarlo por IP modificando las líneas de iptables según corresponda.
Saludos, David Go