Proftpd - поддержка SFTP в Proftpd

Версия для печатиОтправить другуPDF version

Proftpd логотип

 

Будем отталкиваться от того, что имеется в наличии настроеный FTP-сервер на базе proftpd. Возникает вопрос, нужна ли поддержка этим сервером протокола SFTP...

Что такое SFTP, и "с чем его едят"

В протоколе FTP есть 2 ключевые проблемы:

  • пароли и данные передаются в открытом виде
  • для каждой передачи устанавливается дополнительное соединение.

Для шифрования данных и контрольного соединения был написан FTPS, но с ним проблем еще больше - все также требуется дополнительное соединение при передаче, а главное - контрольный канал теперь зашифрован и firewall никак не может помочь в прохождении FTP трафика через NAT. Кроме того - существуют различия в реализации, что добавляет еще больше проблем при
использовании FTPS.

SFTP - полностью новый протокол разработанный IETF SECSH, предлагающий аналогичные FTP возможности для удаленных операций и использующий SSH (обычно SSH2) для обеспечения шифрования и аутентификации. Известность получил в основном из-за того, что был встроен в SSH сервера, в частности - в OpenSSH 2.3.0 и выше.

Недостатки при работе с SFTP в OpenSSH

До OpenSSH 4.9 sftp сервер требовал запуска внешнего исполняемого файла и построение chroot окружения было связанно с дополнительными действиями. Невозможно ограничить скорость передачи для конкретного пользователя. Сложно сделать отличную от SSH базу с пользователями. В целом - sftp сервер в OpenSSH всегда был лишь приятным дополнением к OpenSSH предоставляя на порядок меньшие возможности чем, например, proftpd. Впрочем, недавно необходимость выбора между удобством и безопасностью отпала так как был написан и реализован модуль mod_sftp для proftpd, о нем и пойдет речь.

Proftpd и mod_sftp

Впервые модуль появился в версии 1.3.2rc2. Он не компилируется по умолчанию, так что для его использования надо указать его на этапе configure. Если Proftpd уже работает, проверить, поддерживается ли mod_sftp можно следующим образом:

# cat /var/db/ports/proftpd/options | grep SFTP
WITH_SFTP=true
WITH_SFTP_SQL=true
WITHOUT_SFTP_PAM=true

 В моем случае Proftpd собран с поддержкой mod_sftp.

Модуль имеет множество возможностей полный список которых можно посмотреть здесь.
Для минимальной настройки достаточно внести такие дополнения в файл /usr/local/etc/proftpd.conf:

<IfModule mod_tls.c>
        Port 2222
        SFTPEngine on
        SFTPHostKey /etc/ssh/ssh_host_dsa_key
        SFTPHostKey /etc/ssh/ssh_host_rsa_key
</IfModule>

После внесения изменений в конфигурационный файл, перезапускаем Proftpd. Теперь можно подключиться к 2222 любым sftp-клиентом (например FileZilla, или WinSCP).

Ваша оценка: Нет Средняя: 5 (4 голоса)

Весьма интересная запись,

Весьма интересная запись, спасибо! Наводит на размышления.

Аха... Когда-то

Аха... Когда-то возможности "tcpdump" изучал. Пароль ФТП довольно легко можно выделить из сетевого трафика.

Очень познавательно, спасибо.

Очень познавательно, спасибо.

Интересно!

Интересно!

Да, пароль действительно

Да, пароль действительно можно легко там выдернуть.

Сам пробовал подбирать пароль

Сам пробовал подбирать пароль - легко.

Наверное, не перебирать, а

Наверное, не перебирать, а перехватывать...

Пример перехвата:

# tcpdump -X -ni vlan8 port 21

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan8, link-type EN10MB (Ethernet), capture size 96 bytes
15:53:09.969373 IP 192.168.207.224.13404 > 192.168.159.250.21: S 333661688:333661688(0) win 65535 <mss 1360,nop,wscale 3,nop,nop,timestamp 0 0,nop,nop,sackOK>
        0x0000:  4500 0040 f9d3 4000 7c06 1022 c1e3 cfe0  E..@..@.|.."....
        0x0010:  c303 9ffa 345c 0015 13e3 45f8 0000 0000  ....4\....E.....
        0x0020:  b002 ffff b353 0000 0204 0550 0103 0303  .....S.....P....
        0x0030:  0101 080a 0000 0000 0000 0000 0101 0402  ................
15:53:09.969407 IP 192.168.159.250.21 > 192.168.207.224.13404: S 2426868424:2426868424(0) ack 333661689 win 32767 <mss 1360,nop,wscale 3,sackOK,timestamp 2704477984 0>
        0x0000:  4500 003c 026d 4000 4006 438d c303 9ffa  E..<.m@.@.C.....
        0x0010:  c1e3 cfe0 0015 345c 90a7 12c8 13e3 45f9  ......4\......E.
        0x0020:  a012 7fff f185 0000 0204 0550 0103 0303  ...........P....
        0x0030:  0402 080a a133 0f20 0000 0000            .....3......
15:53:09.977295 IP 192.168.207.224.13404 > 192.168.159.250.21: . ack 1 win 32768 <nop,nop,timestamp 5537189 2704477984>
        0x0000:  4500 0034 f9d5 4000 7c06 102c c1e3 cfe0  E..4..@.|..,....
        0x0010:  c303 9ffa 345c 0015 13e3 45f9 90a7 12c9  ....4\....E.....
        0x0020:  8010 8000 a1ef 0000 0101 080a 0054 7da5  .............T}.
        0x0030:  a133 0f20                                .3..
15:53:09.979978 IP 192.168.159.250.21 > 192.168.207.224.13404: P 1:70(69) ack 1 win 4212 <nop,nop,timestamp 2704477994 5537189>
        0x0000:  4500 0079 026f 4000 4006 434e c303 9ffa  E..y.o@.@.CN....
        0x0010:  c1e3 cfe0 0015 345c 90a7 12c9 13e3 45f9  ......4\......E.
        0x0020:  8018 1074 10d0 0000 0101 080a a133 0f2a  ...t.........3.*
        0x0030:  0054 7da5 3232 3020 5072 6f46 5450 4420  .T}.220.ProFTPD.
        0x0040:  312e 332e 3363 2053 6572 7665 7220 286d  1.3.3c.Server.(m
        0x0050:  7566                                     uf
15:53:09.993973 IP 192.168.207.224.13404 > 192.168.159.250.21: P 1:15(14) ack 70 win 32759 <nop,nop,timestamp 5537189 2704477994>
        0x0000:  4500 0042 f9d9 4000 7c06 101a c1e3 cfe0  E..B..@.|.......
        0x0010:  c303 9ffa 345c 0015 13e3 45f9 90a7 130e  ....4\....E.....
        0x0020:  8018 7ff7 9131 0000 0101 080a 0054 7da5  .....1.......T}.
        0x0030:  a133 0f2a 5553 4552 2066 7470 6d75 6666  .3.*USER.ftpmuff
        0x0040:  0d0a                                     ..
15:53:09.994328 IP 192.168.159.250.21 > 192.168.207.224.13404: P 70:105(35) ack 15 win 4212 <nop,nop,timestamp 2704478009 5537189>
        0x0000:  4500 0057 0270 4000 4006 436f c303 9ffa  E..W.p@.@.Co....
        0x0010:  c1e3 cfe0 0015 345c 90a7 130e 13e3 4607  ......4\......F.
        0x0020:  8018 1074 9830 0000 0101 080a a133 0f39  ...t.0.......3.9
        0x0030:  0054 7da5 3333 3120 5061 7373 776f 7264  .T}.331.Password
        0x0040:  2072 6571 7569 7265 6420 666f 7220 6674  .required.for.ft
        0x0050:  706d                                     pm
15:53:10.002395 IP 192.168.207.224.13404 > 192.168.159.250.21: P 15:29(14) ack 105 win 32755 <nop,nop,timestamp 5537189 2704478009>
        0x0000:  4500 0042 f9dd 4000 7c06 1016 c1e3 cfe0  E..B..@.|.......
        0x0010:  c303 9ffa 345c 0015 13e3 4607 90a7 1331  ....4\....F....1
        0x0020:  8018 7ff3 780d 0000 0101 080a 0054 7da5  ....x........T}.
        0x0030:  a133 0f39 5041 5353 2066 7470 7061 7373  .3.9PASS.ftppass
        0x0040:  0d0a                                     ..
15:53:10.007188 IP 192.168.159.250.21 > 192.168.207.224.13404: P 105:127(22) ack 29 win 4212 <nop,nop,timestamp 2704478021 5537189>
        0x0000:  4500 004a 0271 4000 4006 437b c303 9ffa  E..J.q@.@.C{....
        0x0010:  c1e3 cfe0 0015 345c 90a7 1331 13e3 4615  ......4\...1..F.
        0x0020:  8018 1074 637c 0000 0101 080a a133 0f45  ...tc|.......3.E
        0x0030:  0054 7da5 3533 3020 4c6f 6769 6e20 696e  .T}.530.Login.in
        0x0040:  636f 7272 6563 742e 0d0a                 correct...
15:53:10.014858 IP 192.168.207.224.13404 > 192.168.159.250.21: R 29:29(0) ack 127 win 0
        0x0000:  4500 0028 f9e1 4000 7c06 102c c1e3 cfe0  E..(..@.|..,....
        0x0010:  c303 9ffa 345c 0015 13e3 4615 90a7 1347  ....4\....F....G
        0x0020:  5014 0000 88b6 0000 0000 0000 0000       P.............
^C
9 packets captured
484 packets received by filter
0 packets dropped by kernel

Красным выделил перехваченные логин и пароль...

Спасибо, теперь понятна

Спасибо, теперь понятна разница между SFTP и FTPS.
А что такое SCP? Нашел только, что это более старый протокол, чем SFTP.
А FISH в MC? Он использует чистый SSH + shell?

SCP - это аналог локальной

SCP - это аналог локальной команды cp. Работает "поверх" SSH. Попросту говоря, позволяет копировать файлы с удаленного компьютера, используя как транспорт SSH. Для работы по SCP можно использовать утилиту, которая так и называется - scp.

FISH - протокол, созданный специально для Midnight Commander. Название протокола - это абревиатура, полученная из полного названия: FIle transfer over SHell. Можно сказать, это тот же scp, только интегрированный в MC.

 

Re: SCP - это аналог локальной

на самом деле — FISH используется не только в MC. Он присутствует так же в KDE'шном Dolphin'e, наряду с sftp и ftps ;).

Re: SCP - это аналог локальной

Миграция и распостранение - это закономерность. Тем более что протокол по своей сути - вообще штука мультиплатформенная, соответственно со временем "разбредается" по софту и ОС.

Re: Proftpd - поддержка SFTP в Proftpd

Добрый День! Никто не сталкивался с траблой - если включить модуль sftp в proftpd, то клиенту Filezilla (использует putty для связи по ssh) выводятся имена папок и файлов с  датой вначале, да и спецзанки типа "." и ".." отображаются.

Вот пример вывода psfp (утилита putty):

psftp> dir
Listing directory /
drwxrw-rw-    4 xxx      group      4096 Март 19 07:57 .
drwxrw-rw-    4 xxx      group      4096 Март 19 07:57 ..
drwxrw-rw-    2 xxx      group      4096 Март 19 08:28 download
drwxrw-rw-    2 xxx      group      4096 Март 19 08:30 upload

 

"Март 19 08:30 upload" такой папки на сервере на самом деле нет, и зайти на нее соответственно нельзя

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература