Тематические термины: FTP, Linux, CentOS
Устанавливаем EPEL репозиторий:
yum install epel-release
Устанавливаем ProFTPd:
yum install proftpd
Открываем необходимые порты на брандмауэре:
firewall-cmd —permanent —add-port=20-21/tcp
firewall-cmd —permanent —add-port=60000-65535/tcp
firewall-cmd —reload
Внесем небольшие правки в начальный конфигурационный файл:
vi /etc/proftpd.conf
Добавим строки:
UseIPv6 offIdentLookups offPassivePorts 60000 65535
Разрешаем сервис и запускаем его:
systemctl enable proftpd —now
Можно пробовать подключаться под любой системной учетной записью. Если необходимо добавить отдельного пользователя, вводим команду:
useradd ftpuser -m
passwd ftpuser
* в данном примере мы создали пользователя ftpuser. Второй командой мы задали пароль.
Редактируем конфигурационный файл (приводим к следующему виду):
#<IfDefine 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# <IfModule mod_tls_shmcache.c># TLSSessionCache shm:/file=/var/run/proftpd/sesscache# </IfModule>#</IfDefine>
Генерируем сертификат:
openssl req -x509 -days 1461 -nodes -newkey rsa:1024 -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.admins24.local/CN=test»
Перезапускаем сервис:
systemctl restart proftpd
Хранить пользователей можно в файле и базе данных. Рассмотрим настройку и того, и другого.
Устанавливаем proftpd-utils:
yum install proftpd-utils
Создаем каталог для хранения конфигурационных файлов froftpd:
mkdir /etc/proftpd.d
Создаем файл с паролями:
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 — оболочка, запрещающая локальный вход пользователя в систему.
Редактируем proftpd.conf:
Комментируем следующую строку:
#AuthOrder
Добавляем следующее:
RequireValidShell offAuthUserFile /etc/proftpd.d/ftpd.passwdAuthPAM offLoadModule mod_auth_file.cAuthOrder mod_auth_file.c
Устанавливаем компонент proftpd-mysql:
yum install proftpd-mysql
Если не установлена, ставим MariaDB:
yum install mariadb mariadb-server
Разрешаем и запускаем сервис:
systemctl enable mariadb
systemctl start mariadb
Задаем пароль для суперпользователя базы данных:
mysqladmin -u root password
Подключаемся к базе данных:
mysql -uroot -p
Создаем базу данных, таблицу и пользователя:
> 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 [email protected] IDENTIFIED BY ‘proftpdpass’;
* данными командами мы создали базу данных proftpd. В ней таблицу users и пользователя proftpu с паролем proftpdpass, которому дали право подключаться только с локального сервера.
Добавляем пользователя в таблицу и отключаемся от базы:
> INSERT INTO `proftpd`.`users` VALUES (‘sqluser1’, ENCRYPT(‘sqlpassword’), ’48’, ’48’, ‘/var/www’, ‘/sbin/nologin’);
* в данном примере мы создаем пользователя sqluser1 с паролем sqlpassword.
Создаем файл с конфигурацией для SQL:
vi /etc/proftpd.d/sql.conf
SQLBackend mysqlSQLEngine onSQLAuthTypes CryptSQLConnectInfo [email protected] proftpu proftpdpassSQLUserInfo users username password uid gid homedir shellSQLAuthenticate users*SQLMinUserUID 33SQLMinUserGID 33SQLLogFile /var/log/proftpd/sql.log
Настраиваем proftpd (добавляем строки):
LoadModule mod_sql.cLoadModule mod_sql_mysql.cInclude /etc/proftpd.d/sql.confAuthOrder mod_sql.c
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies