- Заметки Лёвика
- web программирование, администрирование и всякая всячина, которая может оказаться полезной
- proftpd — шпаргалка по настройке
- ProFTPD добавить пользователя
- 1 комментарий к записи “proftpd — шпаргалка по настройке”
- FTP-сервер ProFTPd на CentOS 7
- Подготовка системы
- 1. Настройка времени
- 2. Настройка брандмауэра
- 3. Настройка SELinux
- Установка и базовая настройка ProFTPd
- ProFTPd через TLS
- Виртуальные пользователи
- В файле
- В базе данных MySQL (MariaDB)
- Виртуальные пользователи proftpd, как добавить пользователя
- Установка и настройка ProFTPd на Ubuntu Server
- Настройка системы
- 1. Время
- 2. Брандмауэр
- а) Iptables
- Установка и запуск с базовыми параметрами
- Шифрование при передаче данных
- Использование виртуальных пользователей
- Хранение в файле
- Хранение в MariaDB (MySQL)
- Настройка FTP-сервера
- Настройка прав доступа
- Устранение проблем
- Читайте также
Заметки Лёвика
web программирование, администрирование и всякая всячина, которая может оказаться полезной
proftpd — шпаргалка по настройке
proftpd — несложный в настройке FTP сервер
При установке на Ubuntu/Debian в режиме inetd выдаёт ошибку.. следует отредактировать файл /etc/proftpd/proftpd.conf и задать режим standalone.
Хитрости с пользователями — можно добавить псевдонимы и задать каждому свой пароль (часто используется для “публичных” FTP-каталогов)
UserPassword aliaswm SHA_PASSWORD1
UserPassword webmaster SHA_PASSWORD2
#алиас для пользователя
UserAlias aliaswm webmaster
# ограничиваем всех пользователей в домашнем каталоге
DefaultRoot
# а алиас наш — в подкаталоге
DefaultRoot
ProFTPD добавить пользователя
Чтобы настроить proftpd для корректной работы с виртуальными пользователями, в конец конфигурационного файла /etc/proftpd/proftpd.conf добавляем информацию, где будут храниться профили пользователей:
Самих пользователей proftpd будем создавать командой
ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=test1 —shell=/bin/false —home=/www/test1/ —uid=108 —gid=65534
В данном случае, мы добавили пользователя test1 с uid=108 и gid=65534 (совпадает с id группы ftp-пользователя по умолчанию), домашним каталогом /www/test1 и без shella (false)
Создадим второго пользователя
ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=test2 —shell=/bin/false —home=/www/test2/ —uid=108 —gid=65534
Ограничения для пользователей можно прописать в файле .ftpaccess
vi /www/test1/.ftpaccess
Order deny,allow
Allowuser test1
Курить маны тут:
http://www.proftpd.org/docs/faq/linked/faq-ch4.html#AEN383
http://www.proftpd.org/docs/directives/linked/by-context.html
http://www.proftpd.org/localsite/Userguide/other/userguide_full.html — большой док
Метки: linux ftp
Опубликовано Пятница, Ноябрь 11, 2011 в 16:12 в следующих категориях: Без рубрики. Вы можете подписаться на комментарии к этому сообщению через RSS 2.0. Вы можете добавить комментарий, или trackback со своего сайта.
Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)
html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)
ссылка (для отправки по почте)
1 комментарий к записи “proftpd — шпаргалка по настройке”
При настройке UserPassword и UserAlias совместно для существующего пользователя не нужно указывать пароль псевдонима. Полчаса убил на поиск ошибки. Если пользователь webmaster а его алиас aliaswm достаточно: UserPassword webmaster SHA_PASSWORD1 UserAlias aliaswm webmaster Строчка не нужна! UserPassword aliaswm SHA_PASSWORD2
Источник
FTP-сервер ProFTPd на CentOS 7
Сервер FTP является простым средством передачи данных. Несмотря на наличие облачных систем, которые позволяют делать то же самое, собственный FTP имеет меньше ограничений и является более безопастным средством для обмена конфиденциальной информацией.
Подготовка системы
Прежде чем начать настройку нашего сервера, выполним следующие действия:
- Настроим правильное время на сервере. Это позволит нам видеть корректное значение в соответствующем атрибуте файлов и папок.
- Настроим брандмауэр. Откроем порты, которые нужны для работы ftp.
- Отключим или настроим SELinux. На выбор.
Рассмотрим эти действия подробнее.
1. Настройка времени
Зададим правильный часовой пояс:
timedatectl set-timezone Europe/Moscow
* в данном примере будет задана зона по московскому времени. Список всех доступных зон можно посмотреть командой timedatectl list-timezones.
Теперь установим утилиту для синхронизации времени и запустим ее в качестве сервиса:
yum install chrony
systemctl enable chronyd —now
2. Настройка брандмауэра
Нам нужно открыть порты 20, 21 для работы ftp и динамический диапазон — мы будем использовать 60000-65535.
В CentOS, как правило, используется утилита управления брандмауэром на базе firewalld, но мы также рассмотрим и iptables.
а) При использовании Firewalld:
firewall-cmd —permanent —add-port=20-21/tcp —add-port=60000-65535/tcp
б) При использовании iptables:
iptables -I INPUT -p tcp —match multiport —dports 20,21,60000:65535 -j ACCEPT
service iptables save
3. Настройка SELinux
Для отключения SELinux вводим две команды:
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
Для настройки рекомендую ознакомиться с другой инструкцией Настройка SELinux в CentOS.
Установка и базовая настройка ProFTPd
Устанавливаем EPEL репозиторий:
yum install epel-release
yum install proftpd
Внесем небольшие правки в начальный конфигурационный файл:
UseIPv6 off
IdentLookups off
PassivePorts 60000 65535
Разрешаем сервис и запускаем его:
systemctl enable proftpd —now
Можно пробовать подключаться под любой системной учетной записью. Если необходимо добавить отдельного пользователя, вводим команду:
useradd ftpuser -m
* в данном примере мы создали пользователя ftpuser. Второй командой мы задали пароль.
ProFTPd через TLS
Редактируем конфигурационный файл (приводим к следующему виду):
#
TLSEngine on
TLSRequired on
TLSRSACertificateFile /etc/pki/tls/certs/proftpd.pem
TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd.pem
TLSCipherSuite ALL:!ADH:!DES
TLSOptions NoCertRequest
TLSVerifyClient off
TLSRenegotiate ctrl 3600 data 512000 required off timeout 300
TLSLog /var/log/proftpd/tls.log
#
# TLSSessionCache shm:/file=/var/run/proftpd/sesscache
#
#
openssl req -x509 -days 1461 -nodes -newkey rsa:2048 -keyout /etc/pki/tls/certs/proftpd.pem -out /etc/pki/tls/certs/proftpd.pem -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=test.dmosk.local/CN=test»
systemctl restart proftpd
Виртуальные пользователи
Хранить пользователей можно в файле и базе данных. Рассмотрим настройку и того, и другого.
В файле
yum install proftpd-utils
Создаем каталог для хранения конфигурационных файлов froftpd:
Создаем файл с паролями:
ftpasswd —passwd —file=/etc/proftpd.d/ftpd.passwd —name=vuser1 —uid=48 —gid=48 —home=/var/www —shell=/sbin/nologin
* где /etc/proftpd/ftpd.passwd — полный путь до файла, в котором хранятся пользователи; vuser1 — имя пользователя (логин); uid и gid — идентификаторы пользователя и группы системной учетной записи, от которой будет выступать сервер; /var/www — домашний каталог пользователя; /sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.
Комментируем следующую строку:
RequireValidShell off
AuthUserFile /etc/proftpd.d/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c
systemctl restart proftpd
Можно пробовать подключиться под созданным пользователем (в нашем примере, vuser1).
В базе данных MySQL (MariaDB)
Устанавливаем компонент proftpd-mysql:
yum install proftpd-mysql
Если не установлена, ставим MariaDB:
yum install mariadb mariadb-server
Разрешаем и запускаем сервис:
systemctl enable mariadb
systemctl start mariadb
Задаем пароль для суперпользователя базы данных:
mysqladmin -u root password
Подключаемся к базе данных:
Создаем базу данных, таблицу и пользователя:
> CREATE DATABASE proftpd DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> CREATE TABLE `proftpd`.`users` (
`username` VARCHAR( 32 ) NOT NULL ,
`password` CHAR( 41 ) NOT NULL ,
`uid` INT NOT NULL ,
`gid` INT NOT NULL ,
`homedir` VARCHAR( 255 ) NOT NULL ,
`shell` VARCHAR( 255 ) NOT NULL DEFAULT ‘/sbin/nologin’,
UNIQUE (`username`)
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
> GRANT SELECT ON proftpd.* TO proftpu@localhost IDENTIFIED BY ‘proftpdpass’;
* данными командами мы создали базу данных proftpd. В ней таблицу users и пользователя proftpu с паролем proftpdpass, которому дали право подключаться только с локального сервера.
Добавляем пользователя в таблицу и отключаемся от базы:
> INSERT INTO `proftpd`.`users` VALUES (‘sqluser1’, ENCRYPT(‘sqlpassword’), ’48’, ’48’, ‘/var/www’, ‘/sbin/nologin’);
* в данном примере мы создаем пользователя sqluser1 с паролем sqlpassword.
Источник
Виртуальные пользователи proftpd, как добавить пользователя
В качестве дистрибутива будем использовать Ubuntu 18.
Конфигурационные файлы располагаются в каталоге /etc/proftpd, перейдем в него
В файл нужно добавить 2 директивы. Первую из них можно просто раскомментировать (строка 34)
AuthUserFile /etc/proftpd/ftpd.passwd
В файлах /etc/passwd и /etc/groups выясняем идентификатор пользователя и группы. Для www-data это обычно 33.
Создаем файл для proftpd с пользователями
ftpasswd —uid 33 —gid 33 —name ftpuser —shell /bin/bash —home /var/www/web/ —passwd
ftpasswd: creating passwd entry for user ftpuser
Password:
Re-type password:
ftpasswd: entry created
Создаем файл для proftpd, содержащий группу
ftpasswd —group —name=ftpgroup —gid=33 —member=ftpuser
ftpasswd: creating group entry for group ftpgroup
ftpasswd: entry created
Меняем права на файлы
chmod 400 /etc/proftpd/ftpd.passwd /etc/proftpd/ftpd.group
Устанавливаем пользователя proftpd и группу nogroup
chown proftpd.nogroup /etc/proftpd/ftpd.passwd /etc/proftpd/ftpd.group
[ ok ] Restarting proftpd (via systemctl): proftpd.service.
Теперь можно авторизоваться в FileZilla
Описание настройки proftpd с системными пользователями.
Источник
Установка и настройка ProFTPd на Ubuntu Server
Среди возможностей ProFTPd есть использование виртуальных пользователей с uid системных учетных записей, работа по FTP через TLS, использование виртуальных пользователей с хранением их в отдельном файле или базе данных. Мы рассмотрим настройку всех этих возможностей сервера FTP на примере Linux Ubuntu 18.04 и 20.04. Инструкция также, во многом, подойдет для настройки на Debian.
Настройка системы
Подготовим нашу операционную систему для корректной работы сервера FTP. Для этого настроим синхронизацию времени и правила в Firewall.
1. Время
Для корректного отображения времени создания файлов, необходимо синхронизировать его с внешним источником. Также необходимо задать корректный часовой пояс. Для этого вводим команду:
timedatectl set-timezone Europe/Moscow
* в данном примере мы задаем зону по московскому времени. Список все доступных зон можно посмотреть командой timedatectl list-timezones.
apt-get install chrony
. и разрешаем его запуск при загрузке системы:
systemctl enable chrony
2. Брандмауэр
Если в нашем сервере используется фаервол (по умолчанию, он работает с разрешающими правилами), разрешаем порты:
- 20 — для передачи данных.
- 21 — для передачи команд.
- с 60000 по 65535 — набор для пассивного обмена FTP. Данный диапазон может быть любым из свободных, но практика показывает, что данные значения работают стабильнее.
В зависимости от утилиты управления брандмауэром, дальнейшие действия будут отличаться.
а) Iptables
Если для управления netfilter мы используем утилиту Iptables, то вводим команду:
iptables -I INPUT -p tcp —match multiport —dports 20,21,60000:65535 -j ACCEPT
Для сохранения правил можно использовать утилиту:
apt-get install iptables-persistent
В ufw команда будет следующей:
ufw allow 20,21,60000:65535/tcp
Установка и запуск с базовыми параметрами
Установка ProFTPd на Ubuntu выполняется следующей командой:
apt-get install proftpd
Открываем основной конфигурационный файл:
Редактируем значения для параметров:
* где UseIPv6 — разрешаем или запрещает использование IPv6. Если в нашей среде будет использоваться IP версии 6, то значение данной опции должно быть on.
Снимаем комментарий для опции PassivePorts и задаем ей следующее значение:
PassivePorts 60000 65535
* где 60000 — 65535 — диапазон динамических портов для пассивного режима.
Разрешаем автозапуск FTP-серверу и перезапускаем его:
systemctl enable proftpd
systemctl restart proftpd
Готово — пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или браузер. В качестве логина и пароля используем учетную запись пользователя Ubuntu.
Если мы хотим использовать выделенную учетную запись для FTP, то создаем ее командой:
useradd ftpuser -m
Задаем ей пароль:
Если мы хотим, чтобы учетная запись не могла покидать пределы своей домашней директории, в настройках ProFTPd снимаем комментарий с опции:
И перезапускаем сервис:
systemctl restart proftpd
Шифрование при передаче данных
Следующим этапом настроим передачу данных через TLS.
В конфигурационном файле сервера ftp снимаем комментарий для строки:
Открываем конфигурационный файл tls.conf:
Снимаем комментарии для следующих настроек:
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
.
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
.
TLSOptions NoCertRequest EnableDiags NoSessionReuseRequired
.
TLSVerifyClient off
.
TLSRequired on
* параметр TLSRequired можно задать в значение off, если мы не хотим требовать от клиента соединения по TLS.
Приводим значение для одного из раскомментированных параметров к следующему:
TLSProtocol SSLv23 TLSv1.2
* мы добавили TLSv1.2 для поддержки более актуального протокола шифрования. В противном случае, некоторые старые клиенты могут возвращать ошибку Error in protocol version.
openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=ftp.dmosk.local/CN=ftp»
* где ftp.dmosk.local — имя сервера в формате FQDN (не принципиально).
systemctl restart proftpd
Использование виртуальных пользователей
Для безопасности рекомендуется использовать не реальных пользователей системы, а виртуальных. Мы рассмотрим процесс их хранения в файле или базе данных.
Хранение в файле
Создаем виртуального пользователя командой:
ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=ftpvirt —uid=33 —gid=33 —home=/var/tmp —shell=/usr/sbin/nologin
- /etc/proftpd/ftpd.passwd— путь до файла, в котором хранятся пользователи;
- ftpvirt — имя пользователя (логин);
- uid и gid — идентификаторы пользователя и группы системной учетной записи (например, www-data);
- /var/tmp — домашний каталог пользователя;
- /usr/sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.
Открываем конфигурационный файл proftpd:
Снимаем комментарий или редактируем опцию (если не сделали это раньше):
* данная опция говорит о том, что корневой директорией для пользователя будет домашняя директория. Это нужно, чтобы FTP-пользователи не могли выйти за пределы дозволенного и видеть на сервере сайты друг друга.
Создаем дополнительный конфигурационный файл для proftpd:
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c
Перезапускаем сервис FTP-сервера:
systemctl restart proftpd
Хранение в MariaDB (MySQL)
Настройку разделим на два этапа:
- Установку и настройку СУБД.
- конфигурирование FTP-сервера.
В качестве СУБД будем использовать MariaDB / MySQL.
Устанавливаем на Ubuntu СУБД и модуль mysql для ProFTPd:
apt-get install mariadb-server proftpd-mod-mysql
Разрешаем автозапуск сервиса mariadb:
systemctl enable mariadb
Задаем пароль для пользователя root в mysql:
mysqladmin -u root password
Подключаемся к базе данных:
Создаем базу данных для хранения пользователей:
> CREATE DATABASE proftpd DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* в данном примере мы создали базу данных proftpd.
Создаем таблицу в созданной базе:
> CREATE TABLE `proftpd`.`users` (
`userid` VARCHAR( 32 ) NOT NULL ,
`passwd` CHAR( 41 ) NOT NULL ,
`uid` INT NOT NULL ,
`gid` INT NOT NULL ,
`homedir` VARCHAR( 255 ) NOT NULL ,
`shell` VARCHAR( 255 ) NOT NULL DEFAULT ‘/usr/sbin/nologin’,
UNIQUE (`userid`)
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
* данной командой мы создаем таблицу users в базе данных proftpd.
Создаем пользователя mariadb для доступа к таблицам базы proftpd:
> GRANT SELECT ON proftpd.* TO proftpd_user@localhost IDENTIFIED BY ‘proftpd_password’;
* мы создали пользователя proftpd_user с паролем proftpd_password, которому дали право подключаться только с локального сервера.
Добавляем FTP-пользователя в таблицу:
> INSERT INTO `proftpd`.`users` VALUES (‘sqluser’, ENCRYPT(‘sqlpassword’), ’33’, ’33’, ‘/var/tmp’, ‘/usr/sbin/nologin’);
* в данном примере мы создаем пользователя sqluser с паролем sqlpassword.
. и отключаемся от базы:
Настройка FTP-сервера
Открываем конфигурационный файл для proftpd:
Снимаем комментарий для подключения файла sql.conf:
Открываем на редактирование файл sql.conf:
Приводим его к виду:
.
SQLBackend mysql
.
SQLEngine on
SQLAuthenticate users
.
SQLAuthTypes Crypt
.
SQLConnectInfo proftpd@localhost proftpd_user proftpd_password
.
SQLUserInfo users userid passwd uid gid homedir shell
.
SqlLogFile /var/log/proftpd/sql.log
.
* где нужно обратить внимание на следующие параметры:
- SQLAuthenticate — указываем, что модуль должен выполнять аутентификацию по пользователю.
- SQLAuthTypes — способ хранения пароля в базе. Можно перечислить несколько вариантов. Для наибольшей безопасности мы разрешили хранить пароли только в зашифрованном виде.
- SQLConnectInfo — параметры для подключения к базе. Здесь мы задаем имя и сервер базы данных, а также данные пользователя для подключения.
- SQLUserInfo — информация о таблице, где хранится пользователь. Мы указываем на название таблицы и перечисляем название полей, в которых хранятся нужные сведения.
Создаем дополнительный конфигурационный файл для proftpd:
RequireValidShell off
AuthOrder mod_sql.c
Открываем файл modules.conf:
Снимаем комментарии для следующих строк:
LoadModule mod_sql.c
.
LoadModule mod_sql_mysql.c
Перезапускаем сервис FTP-сервера:
systemctl restart proftpd
Можно пробовать подключаться к базе под пользователем sqluser с паролем sqlpassword.
Настройка прав доступа
Разберем пример, когда нам нужно будет к одной и той же папке дать разные права — одному пользователю только на чтение, другому на чтение и запись.
* в данном примере мы задаем права для директории /var/tmp. Мы разрешаем запись в директорию только для пользователя ftpvirt, остальные права разрешены для всех.
Устранение проблем
Для решения проблем в работе FTP-сервера можно просмотреть файл журнала. Файлов может быть несколько и они находятся в каталоге /var/log/proftpd. Основной — proftpd.log.
Для просмотра вводим команду:
tail -f /var/log/proftpd/proftpd.log
По умолчанию, настройка лога в конфигурационном файле proftpd выглядит так:
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
При необходимости, можно настроить дополнительный файл журнала:
ExtendedLog /var/log/proftpd/access.log WRITE,READ write
ExtendedLog /var/log/proftpd/auth.log AUTH auth
* в данном примере в файле /var/log/proftpd/access.log будут храниться логи обращения к файлам; /var/log/proftpd/auth.log — аутентификации.
Не забываем перезагрузить сервис:
systemctl restart proftpd
Читайте также
Другие инструкции про FTP, которые могут быть полезны:
Источник