Proftpd различные варианты настроек

Thank you for reading this post, don't forget to subscribe!

Установка и базовая настройка

Уста­нав­ли­ва­ем EPEL репозиторий:

yum install epel-release

Уста­нав­ли­ва­ем ProFTPd:

yum install proftpd

Откры­ва­ем необ­хо­ди­мые пор­ты на брандмауэре:

firewall-cmd --permanent --add-port=20-21/tcp

firewall-cmd --permanent --add-port=40900-40999/tcp

firewall-cmd --reload

Доба­вим неболь­шие прав­ки в началь­ный кон­фи­гу­ра­ци­он­ный файл:

vi /etc/proftpd.conf

UseIPv6 off
IdentLookups off
PassivePorts 40900 40999

Раз­ре­ша­ем сер­вис и запус­ка­ем его:

systemctl enable proftpd

systemctl start proftpd

Мож­но про­бо­вать под­клю­чать­ся под любой систем­ной учет­ной запи­сью. Если необ­хо­ди­мо доба­вить отдель­но­го поль­зо­ва­те­ля, вво­дим команду:

useradd ftpuser -d /var/www -s /sbin/nologin

passwd ftpuser

* в дан­ном при­ме­ре мы созда­ли поль­зо­ва­те­ля ftpuser с домаш­ней дирек­то­ри­ей /var/www.

не забы­ва­ем доба­вить в /etc/shells стро­ку /sbin/nologin
cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/sbin/nologin

ProFTPd через TLS

Редак­ти­ру­ем кон­фи­гу­ра­ци­он­ный файл (при­во­дим к сле­ду­ю­ще­му виду):

vi /etc/proftpd.conf

#<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 -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.ru/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:

vi /etc/proftpd.conf

Ком­мен­ти­ру­ем сле­ду­ю­щую строку:

#AuthOrder

Добав­ля­ем следующее:

RequireValidShell off
AuthUserFile /etc/proftpd.d/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c

Пере­за­пус­ка­ем сервис:

systemctl restart proftpd

В базе данных MySQL (MariaDB)

Уста­нав­ли­ва­ем ком­по­нент 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 proftpu@localhost IDENTIFIED BY 'proftpdpass';

* дан­ны­ми коман­да­ми мы созда­ли базу дан­ных proftpd. В ней таб­ли­цу users и поль­зо­ва­те­ля proftpu с паро­лем proftpdpass, кото­ро­му дали пра­во под­клю­чать­ся толь­ко с локаль­но­го сервера.

Добав­ля­ем поль­зо­ва­те­ля в таб­ли­цу и отклю­ча­ем­ся от базы:

> INSERT INTO `proftpd`.`users` VALUES ('sqluser1', ENCRYPT('sqlpassword'), '48', '48', '/var/www', '/sbin/nologin');

> \q

* в дан­ном при­ме­ре мы созда­ем поль­зо­ва­те­ля sqluser1 с паро­лем sqlpassword.

Созда­ем файл с кон­фи­гу­ра­ци­ей для SQL:

mkdir /etc/proftpd.d

vi /etc/proftpd.d/sql.conf

SQLBackend mysql
SQLEngine on
SQLAuthTypes Crypt
SQLConnectInfo proftpd@localhost proftpu proftpdpass
SQLUserInfo users username password uid gid homedir shell
SQLAuthenticate users*
SQLMinUserUID 33
SQLMinUserGID 33
SQLLogFile /var/log/proftpd/sql.log

Настра­и­ва­ем proftpd (добав­ля­ем строки):

vi /etc/proftpd.conf

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
Include /etc/proftpd.d/sql.conf
AuthOrder mod_sql.c

Пере­за­пус­ка­ем сервис:

systemctl restart proftpd