Настройка FTP сервера proftpd —

Настройка FTP сервера proftpd — Сертификаты

Проверка списка обновлений репозиториев

apt update

Установка фтп сервера proftpd и openssl

apt-get -y install proftpd openssl

узнать версию proftpd -v

1)Создадим папку

mkdir /etc/proftpd/ssl

2)Отвечаем на вопросы

openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

3)Защитите созданные файлы сертификатов. Secure the generated certificate files.(owner can read and write)

chmod 600 /etc/proftpd/ssl/proftpd.*

Включим TLS в ProFTPd

Enable TLS in ProFTPd

nano /etc/proftpd/proftpd.conf
... and uncomment the Include /etc/proftpd/tls.conf line:
[...]
#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf
[...]

Редактируем файл tls.conf

nano /etc/proftpd/tls.conf
TLSEngine                  on
TLSLog                     /var/log/proftpd/tls.log
TLSProtocol TLSv1.2
TLSCipherSuite AES128 EECDH:AES128 EDH
TLSOptions                 NoCertRequest AllowClientRenegotiations
TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient            off
TLSRequired                off
RequireValidShell          no

Let’s encrypt proftpd

Also, keep in mind that Filezilla doesn’t check the CAs that your OS trust so you need to manually trust it in the first connection. No matter whether it is a self-signed certificate, a Let’s Encrypt cert or a commercial one, in all of them, in the first connection, you need to trust the certificate.

The only thing you can do is trust the certificate. It is a Filezilla “feature” it doesn’t check the CAs that your OS trust so you need to manually trust it in the first connection. No matter whether it is a self-signed certificate, a let’s encrypt cert or a commercial one, in all of them, in the first connection, you need to trust it.

Добавление разрешающих правил для брандмауэра

В зависимости от используемой утилиты управления

Iptables:

iptables -I INPUT -p tcp -m tcp --dport 21 -j ACCEPT
systemctl iptables save

firewalld:

firewall-cmd --permanent --zone=public --add-port=21/tcp
firewall-cmd --reload

Дополнительная информация

Доступ к командной оболочке (shell)

Если вы всё-таки хотите предоставлять пользователю доступ к командной оболочке, то указывайте путь до любой действующей вместо /bin/false, например:

/bin/sh

или

/bin/bash

Пользователям обычного протокола FTP не нужен доступ к shell, поэтому безопаснее его не предоставлять.

Про сертификаты:  Помощь в оформлении сертификата на детский сад– услуги сертификации

Расположение proftpd.conf

Debian/Ubuntu: /etc/proftpd/proftpd.conf

CentOS: /etc/proftpd.conf

Используйте этот файл для более детальной настройки своего FTP-сервера при необходимости.

Ограничение прав FTP-пользователя

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

chmod 555 /home/имя_папки
mkdir /home/имя_папки/upload
chown имя_пользователя:имя_пользователя /home/имя_папки/upload

В данном случае второе имя_пользователя является именем группы, которое по умолчанию совпадает с созданным вами именем пользователя.

Настройка ftp сервера proftpd —

  • Файл ftpd.passwd
  • ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=tester --uid=33 --gid=33 --home=/home/tester/www/domain.ru --shell=/bin/false #создание нового ftp-пользователя и файла ftpd.passwd

    ftpasswd --passwd --name=tester --change-password #можно поменять пароль пользователя

    Настраиваем proftpd.conf

    RequireValidShell off
    AuthUserFile /etc/proftpd/ftpd.passwd

  • База данных mysql
  • Для работы нужен пакет proftpd-mod-mysql, если не установлен

    apt-get install proftpd-mod-mysql

    Далее (СУБД phpMyAdmin) создаём базу данных proftpd и пользователя proftpd_user с паролем proftpd_password и таблицу (sql-запрос)

    CREATE TABLE `proftpd`.`users` (
    `username` VARCHAR( 32 ) NOT NULL ,
    `password` VARCHAR( 32 ) NOT NULL ,
    `uid` INT NOT NULL ,
    `gid` INT NOT NULL ,
    `homedir` VARCHAR( 255 ) NOT NULL ,
    `shell` VARCHAR( 255 ) NOT NULL ,
    UNIQUE (`username`)
    ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

    В таблицу добавляем запись о пользователе

    INSERT INTO `proftpd`.`users` (`username`, `password`, `uid`, `gid`, `homedir`, `shell`) VALUES ('tester', 'pass', '33', '33', '/home/tester/www/domain.ru', '/bin/false');

    Настройка файла modules.conf

    LoadModule mod_sql.c
    LoadModule mod_sql_mysql.c

    Настройка файла proftpd.conf

    RequireValidShell off
    #AuthUserFile /etc/proftpd/ftpd.passwd #закоментирован
    Include /etc/proftpd/sql.conf
    AuthOrder mod_sql.c

    Настройка файла sql.conf

    <IfModule mod_sql.c>
    SQLBackend mysql
    SQLEngine on
    SQLAuthTypes Plaintext #пароли в открытом виде
    SQLConnectInfo proftpd@localhost proftpd_user proftpd_password #БД proftpd, пользователь proftpd_user и пароль proftpd_password
    SQLUserInfo users username password uid gid homedir shell #таблица users
    SQLAuthenticate users*
    SQLMinUserUID 33
    SQLMinUserGID 33
    SQLLogFile /var/log/proftpd/sql.log #записывать лог
    </IfModule>

    сhown www-data:www-data /home/tester/www/domain.ru #смена владельца и группы для директории

    # Дозагрузка с клиента на сервер
    AllowOverwrite on
    AllowStoreRestart on
    # Дозагрузка с сервера на клиента
    AllowRetrieveRestart on
    # Нестандартный порт
    Port 21
    # Дополнительные порты при использовании firewall
    PassivePorts 54000 55000
    # Права доступа к файлам и директориям
    Umask 002 002
    # Время логирования
    TimesGMT off
    SetEnv TZ :/etc/localtime
    # Настройка скорости передачи данных (upload и download)
    # TransferRate [ cmds ] [ kilobytes-per-sec[:free-bytes]] [ ["user"|"group"|"class" expression]]
    #TransferRate RETR,STOR,APPE,STOU 100.0:10240000 #100kbps:10Mb

    Настрока proftpd для использования tls в ubuntu / debian / ubuntu /

    Настройка ProFTPd довольно проста, сам сервер готов к работе сразу после установки, но если задача сделать более тонкую настройку, то придется немного покопаться.

    Про сертификаты:  Настройка SSH аутентификации по ключам в Windows 10 / 2019 | Windows для системных администраторов

    Основная проблема FTP серверов в том, что передача данных, между ним и клиентом происходит в открытом виде, по этому злоумышленнику не составляет труда прослушав сеть, получить ваш логин и пароль доступа, а дальше он все сделает сам.

    Для устранения этого, досадного, недостатка используется TLS-это позволяет осуществлять передачу данных в зашифрованном виде, что повышает безопасность.

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

    В этой статье я постараюсь рассказать о том, как это настроить и использовать в повседневной работе.

    Установка ProFTPd проста до безобразия, также вместе с ним установим openssl

    sudo apt-get install proftpd openssl

    Режим запуска выбираем standalone

    Редактируем основной конфигурационный файл proftpd.conf

    sudo nano/etc/proftpd/proftpd.conf

    Для активации функции защищенной передачи данных добавим в него следующие строки

    DefaultRoot ~
    IdentLookups off
    ServerIdent on "Secure FTP Server."

    Далее нам необходимо сгенерировать SSL сертификат для нормальной работы TLS, который будем хранить в директории proftpd для лучшего понимания создадим директорию ssl где все и будет находиться.

    sudo su
    
    mkdir /etc/proftpd/ssl

    Генерируем новый сертификат на 1 год, хотя, срок его действия, можно выбрать по своему смотрению

    openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

    В котором указываем:

    Country Name (2 letter code) [AU]: Название страны 
    State or Province Name (full name) [Some-State]: <-- Указываем область проживания
    Locality Name (eg, city) []: <-- Название города
    Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Название организации (можно взять отбалды)
    Organizational Unit Name (eg, section) []: <-- Название отдела в этой организации ( например: Отдел по борьбе с оборотнями в погонах ;)-только кратко  )
    Common Name (eg, YOUR name) []: <-- доменное имя вашего сервера.
    Email Address []: <-- адрес электронной почты

    Все ваш самоподписанный сертификат готов и находится по адресу /etc/proftpd/ssl

    Теперь нам необходимо включить возможность передачи данных по защищенному соединению.

    nano /etc/proftpd/proftpd.conf

    В конфигурационном файле необходимо найти строку Include /etc/proftpd/tls.conf по умолчанию она закомментирована.

    Про сертификаты:  Как посмотреть данные сертификата в Chrome? (обновление)

    Далее нам необходимо отредактировать файл /etc/proftpd/tls.conf

    nano /etc/proftpd/tls.conf

    Остановимся на нем немного подробнее:
    В этом файле необходимо отредактировать секцию <IfModule mod_tls.c> которая отвечает за функционал передачи данных, а также указывает на то, где находятся необходимые ключи и сертификаты.
    В принципе все что там написано можно удалить и вписать все занова, но лучше, все что не нужно и дублирует наши записи закомментировать, строку ниже добавить в конец конфига.

    <IfModule mod_tls.c>
    TLSEngine                  on
    TLSLog                     /var/log/proftpd/tls.log
    TLSProtocol                SSLv23
    TLSOptions                 NoCertRequest AllowClientRenegotiations
    TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
    TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
    TLSVerifyClient            off
    TLSRequired                on
    </IfModule>

    Все готово!
    Теперь необходимо перезапустить FTP сервер

    /etc/init.d/proftpd restart

    Для подключения можно использовать бесплатный FTP клиент Filezilla
    настраиваем подключение

    Настрока FileZilla client

    Указываем IP адрес сервера или доменное имя логин и пароль для входа, а вот в типе сервера указываем: FTPES-FTP через явный TLS/SSL
    Имейте в виду что остальные способы передачи данных будут отключены, а именно, передача в не зашифрованном виде- по этому если ваш FTP клиент не поддерживает использование TLS попасть на сервер будет не возможно!

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

    Проверка сертификата FTP сервера

    Теперь можно подключаться и чувствовать себя защищенным 😉

    Ограничение ftp-пользователей пределами домашнего каталога

    Данная статья подразумевает работу c конфигурацией ProFTPd «по умолчанию», а в этом случае пользователь может выходить за пределы своего домашнего каталога, и хотя прав на работу с другими папками у него, скорее всего, нет, но при недостаточно строгой конфигурации сервера это может представлять угрозу безопасности. Решить эту проблему можно добавив одну строку в файл proftpd.conf:

    DefaultRoot ~

    Добавить её можно в конец файла. После сохранения перезапустите FTP-сервер:

    systemctl restart proftpd.service

    Создание нового ftp-пользователя

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

    Установка ftp-сервера proftpd

    CentOS:

    Установка EPEL репозитория

    yum install epel-release

    Установка ProFTPd

    yum install proftpd

    Debian/Ubuntu:

    apt install proftpd

    Добавляем FTP в автозапуск сервера и запускаем его

    systemctl start proftpd.service
    systemctl enable proftpd.service

    Оцените статью
    Мой сертификат
    Добавить комментарий