понедельник, 30 мая 2016 г.

Ftp за NAT

Ftp за NAT проброс портов и настройка диапазона. 

за основу взята статья

Стандартная задача - пробросить ftp за Nat. Небольшая сложность в том, что нужно кроме 21 порта пробросить диапазон дополнительных портов и настроить сам ftp на указаение данного диапозона и ip внешнего интерфейса.
К примеру, выделим для ftp порт 2100 и 10000-10100
Локальный ftp сервер работает на 192.168.122.100 порт 21.

Тогда настройки iptables для "шлюза":

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 2100 -j DNAT --to-destination 192.168.122.100:21
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 10000:10100 -j DNAT --to-destination 192.168.122.100

И в самом ftp надо указать эти нюансы. В случае vsftpd это делается добавлением строк:

pasv_min_port=10000 ;Указываем используемые сервером порты, первый
pasv_max_port=10100 ;и последний
pasv_address=_внешний_ip_шлюза_

В первом приблежении можно считать настроенным.

 Правила firewall на gate:

$IPT -t nat -A PREROUTING -i $REAL_IF -p tcp -m tcp --dport 60021 -j DNAT --to-destination 192.168.0.57:21

$IPT -t nat -A PREROUTING -i $LOCAL_IF -p tcp -m tcp --dport 60021 -j DNAT --to-destination 192.168.0.57:21

 $IPT -t nat -A PREROUTING -i $LOCAL_IF -p tcp -m tcp --dport 10000:10100 -j DNAT --to-destination 192.168.0.57

$IPT -t nat -A PREROUTING -i $REAL_IF -p tcp -m tcp --dport 10000:10100 -j DNAT --to-destination 192.168.0.57



добавить в функцию  на firewallе :
 function default_policy()
{
    /sbin/modprobe ip_conntrack
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp

....
}

 конфиг proftpd:


 Include /etc/proftpd/modules.conf
UseIPv6 off
ServerType standalone
MaxInstances 30
SystemLog   /var/log/proftpd/proftpd.log

TimesGMT off
SetEnv TZ :/etc/localtime


        CharsetLocal KOI8-R
        CharsetRemote CP1251


#UseReverseDNS off

MasqueradeAddress 100.100.100.100

PassivePorts 10000 10100

  <IfModule mod_facts.c>
    FactsAdvertise off
  </IfModule>

ServerName "oen_PR_ftp"
DeferWelcome off
Port 21
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin                    welcome.msg
ListOptions                 "-l"
DenyFilter \*.*/
# Пользователь, под которым будет запускаться FTP-сервер
User proftpd
# Группа, с которой будет запускаться FTP-сервер
Group nogroup
# Маска (права доступа) для файлов (первое значение 022) и каталогов (второе значение 022), создаваемых в каталогах
Umask 022  022
# Разрешить перезаписывать существующие файлы
AllowOverwrite on
# Для каждого пользователя в качестве корневого каталога устанавливаем его домашнюю папку. В этом случае пользователь не сможет выйти выше, т.е. попасть в /var/ftp или /var/ftp/check
DefaultRoot ~

# Настраиваем права доступа к пользовательским каталогам

# для каталога  /ftp/check:
<Directory /var/ftp/check>
# Пусть check имеет полный доступ к своей папке (закачивать файлы, скачивать файлы, создавать папки, удалять )
Umask                022  022
<Limit WRITE>
AllowUser check
</Limit>
</Directory>
# Настраиваем логи
TransferLog /var/log/proftpd/xferlog

# Отключаем проверку командного интерпретатора пользователя
RequireValidShell off
# указываем файл с учетными записями для авторизации пользователей
AuthUserFile        /etc/proftpd/ftpd.passwd
# Include other custom configuration files
Include /etc/proftpd/conf.d/
AllowForeignAddress on








права на папку 

user@srv-ftp:~$ ls -la /var/ftp/check
итого 108
drwxr-xr-x 2 proftpd nogroup  4096 мая   31 15:39 .
drwxr-xr-x 3 proftpd nogroup  4096 апр.  26 17:17 ..
-rw-r--r-- 1 proftpd nogroup 25007 мая   31 15:41 7845C4A87C78
-rw-r--r-- 1 proftpd nogroup 46047 мая   27 12:43 8C89A5FB6DF7
-rw-r--r-- 1 proftpd nogroup  7629 апр.  26 17:27 adduserftp.tar.gz
-rw-r--r-- 1 root    root     2491 мая   31 15:39 proftpd.conf
-rw-r--r-- 1 proftpd nogroup     6 мая    4 11:59 test11.txt
-rw-r--r-- 1 proftpd nogroup     2 мая    4 11:57 test1.txt
-rw-r--r-- 1 proftpd nogroup    39 апр.  27 22:02 test.txt


Комментариев нет:

Отправить комментарий