на сервере:
# netstat -nlp | grep ':21'
должен показать процесс ftpd или что там у Вас, и адреса которые он слушает. должно быть
0.0.0.0:21 или ваш ip к которому соединяетесь ftp клиентом.
на сервере же запустить ftp клиент и соединиться тем адресом который точно случает ftp демон. Самый простой вариант поставить midnight commander запустить его и в нём ввести команду (предположим что сервер слушает 0.0.0.0, а значит и 127.0.0.1):
cd ftp://имяфтппользователя:пароль@127.0.0.1
в случае успеха увидите каталог ftp сервера.
# iptables -nvL INPUT
должно показать правила из которых следует что 21 порт принимается на нужном интерфейсе с нужного IP клиента. Если прописано правило для 21 порта (лучше прописать) то увидите счётчик пакетов. Если от момента рестарта iptables Вы пробовали с клиента соединиться счётчик должен быть ненулевой.
# cat /etc/sysconfig/iptables-config | grep 'IPTABLES_MODULES='
добавить модуль ip_nat_ftp и рестартануть IPTABLES
смотрим что там с AppArmor он тоже может блокировать доступ.
# aa-status
обычно на убунте по умолчанию не используют SELinux но проверить стоит.
# getenforce
Если активировано - временно можно отключить и попробовать соединиться снова.
Логи, любимое админское чтиво:
# cat /var/log/имя лога ftp сервера | grep -i 'ftp'
# cat /var/log/kern.log
Сначала нужно добиться соединения с локального ftp клиента, затем пробовать с удалённого.
PS извиняюсь но Ваши настройки смотреть не стал после того как увидел сколько JS скриптов с разных сайтов хочет подсунуть этот ...сайт ради картинки...