LINUX.ORG.RU
ФорумAdmin

Не могу настроить ProFTPD на CentOS

 ,


0

1

Добрый день.

**** CentOS 6.6 + ProFTPD 1.3.4a ***** 
Прошу помощи, сутки уже пытаюсь настроить ProFTPD - ничего не получается. Условно разделю вопросы на три пункта:

############# 1 #########################################

Установил proftpd 1.3.4a вручную:

# yum -y install ncurses-devel gcc gcc-c++ make rpm-build m4 redhat-rpm-config
# cd /tmp/
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.4a.tar.gz
# tar xzf proftpd-1.3.4a.tar.gz
# cd proftpd-1.3.4a
# ./configure --sysconfdir=/etc
# make
# make install
# cd ..
# rm -fr proftpd*
После чего не вижу proftpd в списке сервисов на автозагрузку (chkconfig), соответственно не могу поставить его в автозагрузку
# chkconfig proftpd on
Не могу запустить proftpd как сервис
# service proftpd start
только таким образом
# proftpd

Подскажите пожалуйста, как после установки вручную добавить proftpd в список Автозагрузки и как сделать так, чтобы после такой ручной установке proftpd можно было запускать как сервис через:

# service proftpd start

############ 2 ############################################

Установил proftpd 1.3.4d из репозитория CentALT. В конфигурационном файле /etc/proftpd.conf:

ServerName<----><------><------>«ProFTPD Default Installation»
ServerType<----><------><------>standalone
DefaultServer<-><------><------>on

# Port 21 is the standard FTP port.
Port<--><------><------><------>21

# Don't use IPv6 support by default.
UseIPv6><------><------><------>off

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask<-><------><------><------>022

# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances<--><------><------>30

# Set the user and group under which the server will run.
User<--><------><------><------>nobody
Group<-><------><------><------>nobody

# To cause every FTP user to be «jailed» (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~

# Normally, we want files to be overwriteable.
AllowOverwrite<><------>on

# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>
  DenyAll
</Limit>

# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
<Anonymous ~ftp>
  User<><------><------><------>ftp
  Group><------><------><------>ftp

  # We want clients to be able to login with «anonymous» as well as «ftp»
  UserAlias<---><------><------>anonymous ftp

  # Limit the maximum number of anonymous logins
  MaxClients<--><------><------>10

  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
  DisplayLogin<><------><------>welcome.msg
  DisplayChdir<><------><------>.message

  # Limit WRITE everywhere in the anonymous chroot
  <Limit WRITE>
    DenyAll
  </Limit>
</Anonymous>

Создал системного пользователя:

# useradd -d /var/testftp_my/ -M -s /bin/bash user
# passwd user
Пользователь в passwd:
user:x:502:502::/var/testftp_my/:/bin/bash

Когда захожу по ftp через WinSCP через созданного пользователя user, то могу без проблем выходить выше указанной директории /var/testftp_my/ без ограничений, вплоть до корня OS, разве только что не могу в определенных папках создавать и редактировать файлы, хотя в конфигурационном файле обозначено:

DefaultRoot ~

Тоже самое и при установке ProFTPD вручную - из 1-го пункта. Подскажите пожалуйста что не так, почему не получается ограничить пользователя на просмотр только папки «/var/testftp_my/», что может быть?

############# 3 ###################################

Установил proftpd 1.3.4d из репозитория CentALT. В конфигурационном файле /etc/proftpd.conf:

ServerName<----><------><------>«ProFTPD Default Installation»
ServerType<----><------><------>standalone
DefaultServer<-><------><------>on

# Port 21 is the standard FTP port.
Port<--><------><------><------>21

# Don't use IPv6 support by default.
UseIPv6><------><------><------>off

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask<-><------><------><------>022

# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances<--><------><------>30

# Set the user and group under which the server will run.
User<--><------><------><------>nobody
Group<-><------><------><------>nobody

# To cause every FTP user to be «jailed» (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~

# Normally, we want files to be overwriteable.
AllowOverwrite<><------>on

# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>
  DenyAll
</Limit>

# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
<Anonymous ~ftp>
  User<><------><------><------>ftp
  Group><------><------><------>ftp

  # We want clients to be able to login with «anonymous» as well as «ftp»
  UserAlias<---><------><------>anonymous ftp

  # Limit the maximum number of anonymous logins
  MaxClients<--><------><------>10

  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
  DisplayLogin<><------><------>welcome.msg
  DisplayChdir<><------><------>.message

  # Limit WRITE everywhere in the anonymous chroot
  <Limit WRITE>
    DenyAll
  </Limit>
</Anonymous>

AuthUserFile /usr/local/etc/proftpd/ftpd.passwd
AuthGroupFile /usr/local/etc/proftpd/ftpd.group
AuthOrder mod_auth_file.c
RequireValidShell off

Добавил виртуального пользователя

# ftpasswd —passwd —file=/usr/local/etc/proftpd/ftpd.passwd —name=tester —uid=500 —gid=500 —home=/var/testftp_my —shell=/bin/false

При этом -uid=500 и -gid=500 - это ip и gid реального системного пользователя с полными правами на папку /var/testftp_my, да и вообще на данную папку поставил права 777 временно.

Пользователь в /usr/local/etc/proftpd/ftpd.passwd:

tester:$1$SDx1Nb1TSbOzVMUrJ/EwvuBK0ipU1b/:500:500::/var/testftp_my:/bin/false

При попытке подключиться по ftp через WinSCP через созданного виртуального пользователя tester говорит - Доступ не разрешен!

Попробовал так еще создать виртуального пользователя:

# ftpasswd —passwd —file=/usr/local/etc/proftpd/ftpd.passwd —name=tester —uid=500 —gid=500 —home=/var/testftp_my —shell=/bin/bash

Такой же результат!

Попробовал через системного пользователя подключиться - подключается, хотя не должен, в настройках:

AuthOrder mod_auth_file.c

Подскажите пожалуйста, что не так, почему не подключается под виртуальном пользователем и почему наоборот подключается под системным, чего не должно быть? Да и то наверняка, даже если бы и подключился под виртуальным пользователем, то так-же как и в 2-ом пункте был бы доступ ко всем папками OS.

Спасибо.

Описывая проблему в RHEL и их клонах нужно сразу сообщать, включён SeLinux или нет.

По первому вопросу. Не удивительно, что в исходниках proftpd нет файла /etc/init.d/proftpd. Обычно его пишут те, кто создаёт rpm-пакет, а не те, кто разрабатывают программу (демона). Так что возмите его из CentALT'а или ещё из какого rpm-пакета и поправьте где надо.

По остальному нужно включить debug (через DebugLevel 9) или tracelog ( http://www.proftpd.org/docs/howto/Tracing.html ). Там тогда в логах будут сообщения.

Конкретно по второму вопросу нужно искать ″Preparing to chroot to directory ″ и смотреть, следующие после этого сообщения.

mky ★★★★★ ()
Ответ на: комментарий от mky

Selinux выключен, в /etc/selinux/config стоит:

SELINUX=disabled

Так-же выяснил такую последовательность, при подключении через FTP все работает как надо, а вот когда подключаюсь через sFTP, то работает как описано в первом после. Дополнительно:

-------------------------------

Когда подключаюсь через FTP через системного пользователя, то работает как надо (а именно пользователь не может выйти за пределы обозначенной домашней директории), лоиг proftpd пишутся:

128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:49:59 +0000] «PASS (hidden)» 230 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:49:59 +0000] «SYST» 215 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:49:59 +0000] «FEAT» - -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:49:59 +0000] «OPTS_UTF8 ON» 200 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:49:59 +0000] «OPTS UTF8 ON» - -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:49:59 +0000] «PWD» 257 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:49:59 +0000] «CWD /» 250 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:49:59 +0000] «PWD» 257 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:49:59 +0000] «TYPE A» 200 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:49:59 +0000] «PASV» 227 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:49:59 +0000] «MLSD» 226 582
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:50:03 +0000] «CWD /newdir/» 250 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:50:03 +0000] «PWD» 257 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:50:03 +0000] «TYPE A» 200 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:50:03 +0000] «PASV» 227 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:50:03 +0000] «MLSD» 226 345
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:50:06 +0000] «CWD /» 250 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:50:06 +0000] «CWD newdir2» 250 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:50:06 +0000] «PWD» 257 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:50:07 +0000] «TYPE A» 200 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:50:07 +0000] «PASV» 227 -
128-70-124-23.broadband.corbina.ru UNKNOWN new777 [30/Mar/2015:10:50:07 +0000] «MLSD» 226 223

---------------------------------

Когда подключаюсь через sFTP через системного пользователя, то пользователь спокойно гуляет по всем доступным папкам в OS, в логи proftpd при этом ничего не пишет.

---------------------------------

Когда подключаюсь через FTP через виртуального пользователя proftpd, то работает как надо (виртуальный пользователь не может выйти за пределы обозначенной домашней директории), логи proftpd пишутся:



128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:23 +0000] «PASS (hidden)» 230 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:23 +0000] «SYST» 215 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:23 +0000] «FEAT» - -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:23 +0000] «OPTS_UTF8 ON» 200 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:23 +0000] «OPTS UTF8 ON» - -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:23 +0000] «PWD» 257 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:23 +0000] «CWD /var/new888» 550 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:25 +0000] «TYPE A» 200 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:26 +0000] «PASV» 227 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:26 +0000] «MLSD» 226 955
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:29 +0000] «CWD ..» 250 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:29 +0000] «PWD» 257 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:44 +0000] «CWD new1» 250 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:44 +0000] «PWD» 257 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:44 +0000] «TYPE A» 200 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:45 +0000] «PASV» 227 -
128-70-124-23.broadband.corbina.ru UNKNOWN test [30/Mar/2015:11:11:45 +0000] «MLSD» 226 223

-------------------------------

Когда подключаюсь через sFTP через виртуального пользователя proftpd, то пишет «Доступ запрещен!» - не пускает, в логи proftpd при этом ничего не пишет.

------------------------------

Содержание iptables на всякий случай:

*filter
:INPUT DROP [197:24512]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [167:47613]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22,21 -j ACCEPT
COMMIT

Что-то между proftpd+ssh что ли?

Nezhnayka28 ()
Ответ на: комментарий от Nezhnayka28
Trace DELAULT:10

Когда подключаюсь через sFTP через системного пользователя, то пользователь спокойно гуляет по всем доступным папкам в OS, в логи proftpd при этом ничего не пишет.

Вот логи данной сессии при Tracing:

Mar 30 11:42:42 [1583] <signal:5>: signals blocked
Mar 30 11:42:42 [1583] <signal:5>: signals unblocked
Mar 30 11:42:42 [1583] <signal:9>: handling SIGALRM (signal 14)
Mar 30 11:42:42 [1583] <timer:4>: 10 seconds for timer ID 24075 ('Controls polling', for module 'ctrls') elapsed, invoking callback (0
Mar 30 11:42:42 [1583] <signal:5>: signals blocked
Mar 30 11:42:42 [1583] <signal:5>: signals unblocked
Mar 30 11:42:42 [1583] <signal:5>: signals blocked
Mar 30 11:42:42 [1583] <signal:5>: signals unblocked
Mar 30 11:42:42 [1583] <timer:6>: restarting timer ID 24075 ('Controls polling'), as per callback
Mar 30 11:42:42 [1583] <fsio:8>: using system lstat() for path '/etc/shutmsg'
Mar 30 11:42:52 [1583] <signal:5>: signals blocked
Mar 30 11:42:52 [1583] <signal:5>: signals unblocked
Mar 30 11:42:52 [1583] <signal:9>: handling SIGALRM (signal 14)
Mar 30 11:42:52 [1583] <timer:4>: 10 seconds for timer ID 24075 ('Controls polling', for module 'ctrls') elapsed, invoking callback (0
Mar 30 11:42:52 [1583] <timer:6>: restarting timer ID 24075 ('Controls polling'), as per callback
Mar 30 11:42:52 [1583] <fsio:8>: using system lstat() for path '/etc/shutmsg'
Mar 30 11:43:02 [1583] <signal:5>: signals blocked
Mar 30 11:43:02 [1583] <signal:5>: signals unblocked
Mar 30 11:43:02 [1583] <signal:9>: handling SIGALRM (signal 14)
Mar 30 11:43:02 [1583] <timer:4>: 10 seconds for timer ID 24075 ('Controls polling', for module 'ctrls') elapsed, invoking callback (0
Mar 30 11:43:02 [1583] <timer:6>: restarting timer ID 24075 ('Controls polling'), as per callback
Mar 30 11:43:02 [1583] <timer:4>: 30 seconds for timer ID 1024 ('scoreboard scrubbing', for module 'core') elapsed, invoking callback
Mar 30 11:43:02 [1583] <scoreboard:9>: scrubbing scoreboard
Mar 30 11:43:02 [1583] <signal:5>: signals blocked
Mar 30 11:43:02 [1583] <signal:5>: signals unblocked
Mar 30 11:43:02 [1583] <signal:5>: signals blocked

Когда подключаюсь через sFTP через виртуального пользователя proftpd, то пишет «Доступ запрещен!» - не пускает, в логи proftpd при этом ничего не пишет.

Вот логи данной сессии при Tracing:

Mar 30 11:39:04 [1528] <signal:5>: signals blocked
Mar 30 11:39:05 [1528] <signal:5>: signals unblocked
Mar 30 11:39:05 [1528] <signal:9>: handling SIGALRM (signal 14)
Mar 30 11:39:05 [1528] <timer:4>: 10 seconds for timer ID 24075 ('Controls polling', for module 'ctrls') elapsed, invoking callback (0
Mar 30 11:39:05 [1528] <timer:6>: restarting timer ID 24075 ('Controls polling'), as per callback
Mar 30 11:39:05 [1528] <fsio:8>: using system lstat() for path '/etc/shutmsg'
Mar 30 11:39:14 [1528] <signal:5>: signals blocked
Mar 30 11:39:14 [1528] <signal:5>: signals unblocked
Mar 30 11:39:14 [1528] <signal:9>: handling SIGALRM (signal 14)
Mar 30 11:39:14 [1528] <timer:4>: 30 seconds for timer ID 1024 ('scoreboard scrubbing', for module 'core') elapsed, invoking callback
Mar 30 11:39:14 [1528] <scoreboard:9>: scrubbing scoreboard
Mar 30 11:39:14 [1528] <signal:5>: signals blocked
Mar 30 11:39:14 [1528] <signal:5>: signals unblocked
Mar 30 11:39:14 [1528] <signal:5>: signals blocked
Mar 30 11:39:14 [1528] <signal:5>: signals unblocked
Mar 30 11:39:14 [1528] <lock:9>: attempt #1 to write-lock scoreboard mutex fd -1
Mar 30 11:39:14 [1528] <lock:3>: write-lock (attempt #1) of scoreboard mutex fd -1 failed: Bad file descriptor
Mar 30 11:39:14 [1528] <timer:6>: restarting timer ID 1024 ('scoreboard scrubbing'), as per callback
Mar 30 11:39:14 [1528] <fsio:8>: using system lstat() for path '/etc/shutmsg'

Nezhnayka28 ()
Ответ на: комментарий от Nezhnayka28

Млин, оказывается для использования sFtp еще кучу всего надо сделать с proftpd - я этого не знал.

Подскажите пжл, где папкет proftpd с поддержкой LoadModule mod_sftp.c взять?

Nezhnayka28 ()
Ответ на: комментарий от Nezhnayka28

Стандартно функционал sftp-сервера реализует open-sshd. Вы из winscp по sftp подключались именно к нему, а не к proftpd. Это так, к ответу на предыдущие посты.

А proftpd с sftp, например, лежит в epel. Может где ещё есть посвежее, ищите, качайте, смотрите содежимое /usr/libexec/proftpd.

mky ★★★★★ ()
Ответ на: комментарий от mky

Спасибо большое за ответы. Вот ставлю proftpd с CentALT (версия 1.3.4d) - при этом в папке

/usr/libexec/proftpd
Есть файл
mod_sftp.co
Но при подключении в конфигурационный файл:
LoadModule mod_sftp.c
и при перезагрузки сервиса proftpd начинает ругаться на эту директиву. Насколько понимаю что необходимо переконфигурировать pfoftpd с этим модулем, но не знаю как это сделать, но очень хочу разобраться.

Помогите плиз.

Nezhnayka28 ()
Ответ на: комментарий от mky

А если переустанавливаю proftpd из epel репозитория (1.3.3d) то здесь

LoadModule mod_sftp.c
работает

Но за то не работает

ftpasswd
ошибка
bash: /usr/bin/ftpasswd: No such file or directory

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

Nezhnayka28 ()
Ответ на: комментарий от Nezhnayka28

ftpasswd это перловый скрипт, он не особо завязан на версию proftpd, его можно скачать отдельно http://www.castaglia.org/proftpd/#ContribTools .

Про уязвимости лучше помнить точно, не обязательно, что все старые версии подвержены её, или пакет из epel может быть уже наложен патч, устраняющий её. Ну, а так, хотите самую последнюю версию — компилируйте, собирайте 1.3.5 или 1.3.4e.

mky ★★★★★ ()
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.4a.tar.gz
# tar xzf proftpd-1.3.4a.tar.gz
# cd proftpd-1.3.4a
# ./configure --sysconfdir=/etc

за такое надо бить по рукам

True way

# cd /tmp
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.4e.tar.gz
# rpmbuild -ta --target=x86_64 --with ldap --with mysql --with pcre --with ssl --with wrap proftpd-1.3.4e.tar.gz

На выходе поучим что то типа

...
...
...
Wrote: /root/rpmbuild/SRPMS/proftpd-1.3.4e-1.el6.src.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/proftpd-1.3.4e-1.el6.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/proftpd-ldap-1.3.4e-1.el6.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/proftpd-mysql-1.3.4e-1.el6.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/proftpd-wrap-1.3.4e-1.el6.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/proftpd-devel-1.3.4e-1.el6.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/proftpd-utils-1.3.4e-1.el6.x86_64.rpm

ALex_hha ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.