Debido a que el servicio de ftp de alfresco funciona en modo pasivo, este abrirá puertos por encima del 1024 para llevar a cabo la comunicación de datos.
Si tenemos un firewall muy restrictivo, nos interesará definir un rango determinado de puertos y abrir sólo ese rango.
Para definir el rango de puertos debemos añadir a /tomcat/shared/classes/alfresco-global.properties los siguientes parámetros:
ftp.dataPortFrom=50000
ftp.dataPortTo=60000
En este caso estamos definiendo el rango del 50000 al 60000.
Veamos si esto funciona de verdad. Hacemos un ftp en modo debug a nuestro servidor:
ftp -d 192.168.60.13 2122
Connected to 192.168.60.13.
220 FTP server ready
ftp: setsockopt: Bad file descriptor
Name (servidor:rafa): usuario
---> USER usuario
331 User name okay, need password for usuario
Password:
---> PASS XXXX
230 User logged in, proceed
---> SYST
215 UNIX Type: Java FTP Server
Remote system type is UNIX.
Indicamos el modo pasivo:
ftp> passive
Passive mode on.
Y lanzamos un comando:
ftp> ls
ftp: setsockopt (ignored): Permission denied
---> PASV
227 Entering Passive Mode (192,168,60,13,211,39)
---> LIST
150 File status okay, about to open data connection
drw-rw-rw- 1 user group 0 Jan 1 1970 Alfresco
drw-rw-rw- 1 user group 0 Jan 1 1970 AVM
226 Closing data connection
ftp>
Vemos como efectivamente el puerto que ha utilizado está por encima del 50000 y por debajo del 60000 (el puerto se obtiene de los valores que van después de la ip, 211*256+39=54055).
Si hacemos un tcpdump en el servidor, filtrando por ip origen, veremos que efectivamente ese es el puerto que ha utilizado:
Para puerto de datos:
10:40:20.810783 Out MAC ethertype IPv4 (0x0800), length 68: 192.168.60.13.54055 > ip_local.50958: . ack 2 win 46 <nop,nop,timestamp 552972262 76243556>
Para puerto de conexión:
10:40:20.810795 In MAC ethertype IPv4 (0x0800), length 68: ip_local.50583 > 192.168.60.13.2122: . ack 271 win 115 <nop,nop,timestamp 76243556 552972260>