Как установить ftps-сервер pure-ftpd для centos 7

Configuration

  1. View the readme file for more information about pure-ftpd. http://download.pureftpd.org/pub/pure-ftpd/doc/README

  2. Note that Ubuntu uses a wrapper script to launch pure-ftpd using your desired configuration. Some of the options you can use can be found at http://wiki.ggis.biz/index.php/Pure-FTPd_on_Ubuntu and are shown below. These are not defaults and may be insecure, so try to understand their usage first. These are meant to modify files in the /etc/pure-ftpd/conf directory.

echo ‘yes’ > ChrootEveryone

echo ‘yes’ > BrokenClientsCompatibility

echo ’50’ > MaxClientsNumber

echo ‘5’ > MaxClientsPerIP

echo ‘yes’ > Daemonize

echo ‘no’ > VerboseLog

echo ‘yes’ > DisplayDotFiles

echo ‘yes’ > ProhibitDotFilesWrite

echo ‘yes’ > NoChmod

echo ‘no’ > AnonymousOnly

echo ‘yes’ > NoAnonymous

echo ‘no’ > PAMAuthentication

echo ‘no’ > UnixAuthentication

echo ‘/etc/pure-ftpd/pureftpd.pdb’ > PureDB

echo ‘yes’ > DontResolve

echo ’15’ > MaxIdleTime

echo ‘2000 8’ > LimitRecursion

echo ‘yes’ > AntiWarez

echo ‘no’ > AnonymousCanCreateDirs

echo ‘4’ > MaxLoad

echo ‘no’ > AllowUserFXP

echo ‘no’ > AllowAnonymousFXP

echo ‘no’ > AutoRename

echo ‘yes’ > AnonymousCantUpload

echo ‘yes’ > NoChmod

echo ’80’ > MaxDiskUsage

echo ‘yes’ > CustomerProof

echo ‘0’ > TLS

Original Ubuntu Forums thread: http://ubuntuforums.org/showthread.php?t=91052

Launch Pad Question: https://answers.launchpad.net/ubuntu/+source/pure-ftpd/+question/99048

TROUBLESHOOTING

You may be given one of these warnings when trying to connect to your server:

  Can't login as : account disabled
 "Sorry, but I can't trust you" 

These two warnings occur if your system set the UserID (UID) and/or GroupID (GID) associated with the ftpuser user below 1000. To see what the current values are, type the following at a shell:

id ftpuser
You’ll be given something similar to the following: uid=572(ftpuser) gid=972(ftpgroup) groups=972(ftpgroup)
The actual numbers don’t matter much, but they should be higher then 1000 for Pure-FTPD to be happy.To fix the UserID (UID) portion, open a shell and type:
sudo usermod -u 1021 -p -U ftpuser
To fix the GroupID (GID): sudo groupmod -g 1022 ftpgroup

Restart the Pure-FTPD daemon and you should be up and running.

Инсталляция Pure-FTPd в Debian, Ubuntu

Рассмотрим кратко установку и настройку Pure-FTPd сервера.

Инсталляция. После её окончания Pure-FTPd запущен и готов к работе.$ sudo aptitude install pure-ftpd

Starting ftp server: Running: /usr/sbin/pure-ftpd -l pam -8 UTF-8 -E -u 1000
-O clf:/var/log/pure-ftpd/transfer.log -B
 
$ ftp localhost
Connected to localhost.
220———- Welcome to Pure-FTPd ———-
220-You are user number 1 of 50 allowed.
220-Local time is now 11:24. Server port: 21.
220-This is a private system — No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:admin):

У PureFTPd в Ubuntu не используется файл конфигурации pure-ftpd.conf — все настройки хранятся в директории /etc/pure-ftpd/conf/ в виде отдельных файлов с именем параметра. То есть для изменения настроек сервера нужно создать файл с названием параметра и значением внутри.

  • Конфигурационные файлы и директории:
    etcdefaultpure-ftpd-common
    etcpure-ftpd
  • Включим chroot-jail. Можно или запустить PureFTPd с ключом -A или задать параметр.
    echo yes > etcpure-ftpdconfChrootEveryone
  • Поскольку мы будем настраивать авторизацию через PureDB, надо запретить PAM:
    echo no > etcpure-ftpdconfPAMAuthentication

Утилиты Pure-FTPD

  • Добавить пользователя и установить для него пароль:
    pure-pw useradd YourUser -u ftpusers -g ftpusers -d /home/YourDirFTP -c "John Smith"
  • Для применения изменений нужно обновить файл pureftpd.pdb командой. Чтобы избежать использования ‘pure-pw mkdb’ после каждого изменения данных, используйте опцию ‘-m’ в командах модификации
    pure-pw mkdb
  • Просмотр данных пользователя
    pure-pw show YourLogin
  • Изменить пароль
    pure-pw passwd YourLogin

Дополнительные настройки Pure-FTPd

  • MaxLoad. Максимальная параллельная загрузка:
    echo 4 > etcpure-ftpdconfMaxLoad
  • MinUID. 530 Sorry, but I can’t trust you. Для устранения этой ошибки нужно в /etc/pure-ftpd/conf/MinUID изменить значение 1000 на 33 этим мы разрешим системных пользователей начиная с 33, в моем случае это пользователь www-data. <wrap em>Этого не следует делать.</wrap>

DontResolve. Записывать в лог IP, а не имя клиента. Это приведет к ускорению работы Pure-FTPd так как не будет использоваться Что такое DNS.echo ‘yes’ > /etc/pure-ftpd/conf/DontResolve

Изменение этого параметра в Хостинг VPS/VDS на Ubuntu затронет лог-файл /var/log/syslog, а файл /var/log/auth.log не будет изменен, что важно при настройки Fail2ban. Fail2ban по умолчанию просматривает файл auth.log.

  • Bind изменить IP,port Для того чтобы задать определенный IP и/или порт нужно создать файл Bind, в котором через запятую указать IP и порт. Можно задать пустые значение, в этом случае будут использованы значения по умолчанию:
    echo '10.26.95.227,21000' > etcpure-ftpdconfBind
  • Приоритеты аутентификации
    # Пожалуйста, отметьте, что LDAPConfigFile, MySQLConfigFile,
    # PAMAuthentication и UnixAuthentication могут использоваться только
    # один раз, но они могут использоваться вместе. Например, если вы
    # используете MySQLConfigFile, затем UnixAuthentication, то идёт запрос
    # к MySQL. Если в БД такой пользователь не найден, то пробуется 
    # системный пользователь в /etc/passwd и /etc/shadow. Если SQL
    # аутентификация неудачна по причине неправильного пароля, то происходит
    # остановка дальнейшего поиска пользователя. Методы аутентификации
    # будут использоваться в порядке в котором они заданы
  • Запретить анонимный доступ — echo yes > /etc/pure-ftpd/conf/NoAnonymous
  • Более полный лог — echo yes > /etc/pure-ftpd/conf/VerboseLog
  • Показывать системные файлы (вида .имяфайла) — echo yes > /etc/pure-ftpd/conf/DisplayDotFiles
  • Время простою до отключения 15 минут — echo 15 > /etc/pure-ftpd/conf/MaxIdleTime

AMAZON AWS SETTINGS

  1. If installing on an AWS server, you will need to configure IP address routing information specific to your server. If using the default UBUNTU server, use the following. Note that echo will not properly be able to edit a file unless you are in a sudo shell, which is why we use «sudo bash -c».

    cd /etc/pure-ftpd/conf
    sudo bash -c 'echo "35000 36000" > PassivePortRange'
    sudo bash -c 'echo "YOURIPHERE" > ForcePassiveIP'
    sudo bash -c 'echo "yes" > DontResolve'

    These commands will allow most programs, like FileZilla, to connect via FTP passive mode to the server. Amazon AWS servers use internal IP addresses starting with «10.» for most things, and you will need to explicitly define this IP address for your FTP software to be able to communicate.

  2. Update your Amazon AWS Firewall settings.

    "Custom TCP Range" 35000 36000
    "Custom TCP Range" 21

FTPs-сервер это…

FTPS-сервер, осуществляет возможность безопасной передачи файлов по сети между локальным и удаленным компьютером. FTPS — представляет собой FTP-сервер, который использует протоколы TLS/SSL для создания шифруемого соединения, что делает его использование в разы безопаснее чем обычный FTP-сервер.

Pure-FTPd — является одним из наиболее популярных FTPS-серверов, он очень прост в установке и настройке, и в тоже время хорошо обеспечивает надежное и безопасное использование (при должной настройке).

В данной статье мы рассмотрим установку и настройку популярного FTPS-сервера Pure-FTPd для VPS/VDS под управлением ОС CentOS 7.

Если вы ищете наиболее простой и безопасный способ передачи файлов между компьютерами, то предлагаю обратить внимание на протоколы SFTP и SCP. C их помощью можно быстро передать файлы и при этом не нужно устанавливать какие либо дополнительные сервисы, т.к

в Linux все изначально предусмотрено для мгновенного начала передачи файлов поверх протокола SSH.

Настройка сервера Pure-FTPd

Введите следующую команду для редактирования файла конфигурации Pure-FTPd:

Убедитесь, что вы включили данные опции:

# If you want simple Unix (/etc/passwd) authentication, uncomment this (Если вы хотите простой Unix (/etc/passwd) аутентификации, раскомментируйте эту строку) UnixAuthentication yes

Для обеспечения Pure-FTPd, убедитесь, что следующие строки есть у Вас:

# Кейдж у каждого пользователя в его домашней директории ChrootEveryone yes

# Если вы хотите войти все команды клиента, установите на «да». # Эта директива может дублироваться также log ответы сервера. VerboseLog yes

# Запретить анонимные соединения. Только позвольте авторизованным пользователям. NoAnonymous yes

Введите следующие две команды, чтобы включить Pure-FTPd:

Шаг #4: Создание виртуального пользователя

Допустим в системе есть обычный пользователь johndoe, без sudo привилегий, которому необходимо предоставить доступ к директории сайта — /var/www/example.ru .

Для начала создадим группу ftp пользователей — ftpusers.

Установим группу ftpusers для каталога /var/www/example.ru .

Добавим право записи для группы.

Далее добавим пользователя johndoe в группу ftpusers.

Делегируем для пользователя johndoe доступ к папке сайта.

На основе его учетной записи создадим виртуального пользователя для директории сайта /var/www/example.ru .

Для создания виртуального пользователя выполните следующую команду, где вместо username укажите имя виртуального пользователя, также укажите имя пользователя системы, его группу и директорию.

Создадим базу данных для виртуального пользователя.

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

Показать список пользователей.

Ярлыки

11.1

11.1.1 trial

11.10

12.04

14.04

16.04

17.04

17.10

18.04

1С + postgresql под windows

1С:Отчетность

1С:Предприятие 7.7

1c

20.04

32 бит

3proxy

9.6.2

автономный сервер

админ

администрирование

анализ сервера

архивирование

безопсность

березка

веб доступ

время

второй кластер

выгнать пользователей

госзакупки

диагностика

диагностика postgresql

документация

Дорошкевич

журнал регистрации

Завершение работы пользователей

зависимости postgresql

запуск postgresql

зафиксировать postgresql

ибп

интересно

камин

книги

Конфигурация сервера

КриптоПро

лицензии

лицензия

логи

локальная сеть

минисервер 1с

Моё рабочее

мой сервер

настройка дампов

непрерывное архивирование

обновление 1с

обновление ядра

обновление postgresql

ограничение 1Гб

ОКБ

Олег Харин

ОПО

оптимизация

ошибка

пароли

переименовать хост

перенос win lin

печать

Поиск пакетов

Потоковая репликация

программная лицензия

размер базы

размер таблиц

РИБ

сборка postgresql

сервер хранилища

сессии

скачать дистрибутивы

скрипт

скрипт wal

справочник

спутник

спящие сеансы

сравнение cpu

ссылки

статический ip

тест

тестирование

Тестирование и исправление конфигурации

тестовый сервер

технологический журнал

тюнинг postgresql

удаление 1с

удаление postgresql

управление серверами

установка 1с

установка 2 сервера 1с

файловый режим

фиас

флешка

фрагментация памяти

холодный backup

Шпаргалка PostgreSQL

штрих-коды

энергосбережение

acme.sh

aksusbd

Aladdin Monitor

alt linux

alternative downloads

amcheck

ammyy admin

apache2

apc

apparmor

apport

Asterisk

astra

astra linux

astra lxc

astra lxd

atop

audio

autologon

autovacuum

B360M

B365M

backup

Bash-скрипты

bridge-utils

bug

cache_hit_ratio

cadaver

canon

centos

Certbot

Certificate

checkdb

chromium

chromium-gost

cloak

clonezilla

cpu

cpufreqd

cron

crontab

cryptcp

Crypto-Pro

cryptopro

CryptSync

cups-pdf

curl

cwRsync

Cygwin

cygwin-rsyncd

dante

db2

debian

debian 10

desktop

disk

Dns Leak Test

DO

docker

docker-compose

DokuWiki

dump

elastix

etersoft

excel

fail2ban

Failover

fedora

files

FileZilla

fio

firefox

fragster

freenx

ftp

ghostscript

GIMP

git

gitlab

gnome

gnome-tweak-tool

gost

governor

gpg

GPT to MBR

haproxy

hasp

hasp & lxc

hdd

hold

host

hostname

hostnamectl

Hyper-Threading

i7

i7-7700

icmp

intel

intel graphics 630

Intel Kaby Lake

ip

iperf

IPSec

iptables

journalctl

juju

Junction

kerberos

kvm

L2TP

Let’s Encrypt

linux

live-cd

LMNoIpServer

Load Average

log

LPD

LVM

lxc

lxc in lxd

lxd

lxd & virtualbox

lxd 1c

lxd backup

lxd haproxy

lxd nextcloud

lxd resource control

lxd vps

lxd-p2c

macvlan

Mandos

mariadb

mc

MediaWiki

mining

mint

MobaXterm

mp3

mssql

multipath

mysql

MZ1LB960HAJQ-00007

net.netfilter.nf_conntrack_max

nethasp

nethasp.ini

network

NetworkManager

nextcloud

Nginx

NoMachine

ntp

numactl

numlock

nut

NVMe

nvOC

ondemand

openconnect

OpenSSH

OpenSSL

openvpn

ops

orel. orel docer

pdf

performance

pg_basebackup

pg_catalog.pg_statistic

pg_controldata

pg_dump

pg_dump в каталог

pg_probackup

pg_probackup одна база

pg_probackup upgrade

pg_repack

pg_resetxlog

pgadmin4

pgBackRest

pgbench

PGConf

PgTune

phpvirtualbox

Playonlinux

plink

posfix

postfix

postgrespro

postgrespro-std-11

postgresql

PostgreSQL Configurator

postgresql port

postgresql ssl

postgresql win

postgresql.conf

proxmox

pulseaudio

pure-ftpd

python

QtdSyn

RAID

ramdisk

ramfs

rancher

ras

rclone

reverse-proxy

rphost

rsync

Rufus

samba

Samsung SSD

sandisk

Sar

screen

server

Shadowsocks

smartctl

smartmontools

smbclient

snap

snapshot

spice

squid

ssd

ssh

ssh к флешке

ssh по сертификату

ssl

stats_temp_directory

strongSwan

stubby

stunnel

Supermicro

swap

swappiness

sysctl

sysctl.conf

systemd

tap

TCmalloc

teamviewer

telegram

temp_tablespaces

terminal server

test

test Тестовый сервер

test ssd

test2

test3

timedatectl

timezona

tint2

tmpfs

TRIM

ubuntu

ubuntu 18.04

ubuntu 20.04

ufo

ufw

unity

UNIX sockets

ureadahead

usb

v2ray-plugin

vacuum

vacuumdb

vbox

vino

virsh

virt

virt-manager

virt-viewer

virtualbox

vnc

vsftpd

wal

wd my cloud

web

webdav

wget

windows

windows server

windows vs linux

wine

WinSetupFromUSB

WireGuard

wordpress

x11vnc

xming

xrdp

xubuntu

xubuntu-desktop

xvfb

yandex-disk

youtube

youtube-dl

zabbix

zfs

zram

Настройка ftpd

Настройка ftpd для FreeBSD (для Linux больших отличий быть не может):

Для включение ftpd нужно раскоментировать одну строку в inetd.conf и перезапустить inetd> ee /etc/inetd.conf
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
> /etc/rc.d/inetd restart

Некоторые настройки сервера, в том числе и касающиеся ограничения доступа, можно выполнить с помощью ключей командной строки. Если вы запускаете ftpd из inetd, добавьте нужные параметры в соответствующей строке файла inetd.conf (по умолчанию там записан только ключ l).

Для протоколирования даемон ftpd использует сообщения Использование syslog.> ee /etc/syslog.conf
ftp.info /var/log/xferlog

В файле /etc/ftpusers находится список пользователей, которым запрещен доступ по FTP. По умолчанию он включает системные учетные записи, но в него можно добавить и определенных пользователей, которым будет запрещен доступ по FTP.

Анонимный доступ: Для анонимного FTP доступа на сервер, в системе FreeBSD необходимо создать пользователя ftp. Этот пользователь сможет входить на FTP сервер с именем пользователя ftp или anonymous, с любым паролем (существует соглашение об использовании почтового адреса пользователя в качестве пароля). FTP сервер выполнит chroot при входе пользователя anonymous для ограничения доступа только домашним каталогом пользователя ftp. У этого пользователя должна быть «легальная» оболочка (одна из указанных в /etc/shells). Также у него не может быть пустого пароля.

Существуют два текстовых файла, определяющих сообщение, отправляемое FTP клиентам. Содержимое файла /etc/ftpwelcome будет выведено пользователям перед приглашением на вход. После успешного входа будет выведено содержимое файла /etc/ftpmotd

Обратите внимание, что путь к этому файлу задается относительно домашнего каталога пользователя, так что анонимным пользователям будет отправляться ~ftp/etc/ftpmotd.

Ограниченный доступ: Вам может понадобиться ограничить доступ определенных пользователей без полного запрета использования FTP. Это можно сделать через файл /etc/ftpchroot

В нем находится список пользователей и групп, к которым применяется ограничение доступа. В том случае, если имя пользователя присутствует в файле /etc/ftpchroot, то соответствующий процесс запускается в chroot-окружении, ограничивая пользователю доступ только его домашним каталогом (или тем, который указан во втором поле файла ftpchroot). При необходимости организовать такую работу для большого числа пользователей (например, дать всем абонентам доступ для обновления своих домашних веб-страничек), в ftpchroot можно указать общую для них группу, предварив ее имя символом @. Во втором поле дополнительно может быть указан каталог, который следует использовать в качестве корневого для соответствующего пользователя или группы. Вот пример такого файла:vasya
petya /var/db/petya
@dialup

Теперь Вася и все пользователи группы dialup смогут работать только в пределах своих домашних каталогов, а для Пети в качестве рабочей будет определена указанная папка /var/db/petya. С помощью разделителя /./ можно указать каталог, отличающийся от корневого, который станет текущим:

serg /home/serg/./public_html

В данном случае для пользователя serg доступ будет ограничен каталогом /home/serg, но в качестве текущего при входе на сервер установится /home/serg/public_html.

Configuration

Pure-FTPd configuration is completely done with its startup arguments.

There is a wrapper script, which reads . It then starts Pure-FTPd with the corresponding arguments.

Set up virtual users

With Pure-FTPd, it’s possible to use virtual users instead of real system users.

The available users need to be provided by one ore more backends. See .

For simplicity and demonstration purposes, the PureDB backend will be used. Uncomment the following two lines:

# We disable the anonymous account.
NoAnonymous yes
# We use PureDB as backend and specify its path.
PureDB /etc/pureftpd.pdb

Now only authenticated users can connect. To add users to the PureDB we need to create a -like file which is then used to create the PureDB.

To create, view, or modify the file, we use the command.

# pure-pw useradd someuser -u ftp -d /srv/ftp

This creates the user someuser which runs as the FTP system user. By default, the user is chrooted to . In the event that that’s undesirable, replace with .

Note:

The virtual users running as the FTP system users can not log in by default. To change that behavior, set the option MinUID in to 14 (UID of the ftp user).

We also need to list the shell of the FTP system user in .

# echo "/bin/false" >> /etc/shells

Note: Symlinks outside of the chrooted directory do not work since the package is not compiled with . You can use as a workaround.

Before this account is usable, we need to commit our changes:

# pure-pw mkdb

The virtual user can now access everything in .

The command creates the file mentioned earlier called , which houses all information related to your virtual users. There is no need to restart your service when issuing this command as it is updated on the fly and changes take effect immediately.

Changing user password

For example, to change a user’s password, type the command:

# pure-pw passwd someuser

Afterwards, commit your changes by updating :

# pure-pw mkdb

Removing user

To remove a user, type the command:

# pure-pw userdel someuser

The user’s home directory is not removed via this command; therefore, it must be removed manually.

Checking user settings

To check a user’s current account settings, type the command:

# pure-pw show someuser

Backends

You need to specify one or more backends. If you specify more than one, Pure-FTPd will respect the order in which they are specified. It will use the first backend which contains the requested user.

Available backends are:

  • MySQL
  • LDAP
  • PostgreSQL
  • PAM
  • PureDB

Set up TLS

Create a certificate

Create a Self-Signed Certificate:

# mkdir -p /etc/ssl/private
# openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -sha256 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Make it private:

# chmod 600 /etc/ssl/private/*.pem

Enable TLS

Towards the bottom of you should find a section for TLS. Uncomment and change the TLS setting to to enable both FTP and FTPS:

TLS             1

Virtual Users PureDB

Механизм Virtual Users в Pure-FTPD (README.Virtual-Users), представляет из себя следующее — в системе заводится системный пользователь, который ассоциируется с виртуальным пользователем. Можно ассоциировать несколько виртуальных пользователей с реальным системным пользователем. Для виртуальных пользователей назначается свой каталог, можно назначить ему так же квоты и прочее.

Включим авторизацию из база данных пользователей PureDB (создадим символическую ссылку), по умолчанию была настроена авторизация Unix(no — выключена) и PAM (yes — включена). При аутентификации важен порядок ( security) загрузки, потому добавим цифру 60 в название создаваемой символической ссылки, чтобы проверка пользователя начиналась именно с проверки из PureDBln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60PureDB
ls -l /etc/pure-ftpd/auth/
 
lrwxrwxrwx 1 root root 26 Sep 17 12:32 60PureDB -> /etc/pure-ftpd/conf/PureDB
lrwxrwxrwx 1 root root 26 Sep 17 12:29 65unix -> ../conf/UnixAuthentication
lrwxrwxrwx 1 root root 25 Sep 17 12:29 70pam -> ../conf/PAMAuthentication

Создадим системного пользователя ftpuser без shell и добавим его в группу www-data (в которую входит веб сервер Apache, чтобы права были вида ftpuser:www-data)useradd -g www-data -d /home/ftpuser -m -s /bin/false ftpuser
id ftpuser
uid=1001(ftpuser) gid=33(www-data) groups=33(www-data)
id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Создание виртуальных пользователей. Все операции над пользователями FTP сервера осуществляться с помощью утилиты pure-pw. Работа с виртуальными пользователями происходит в два этапа:

  1. Создание файла со списком пользователей и их параметрами (по умолчанию ‘/etc/pureftpd.passwd’), на этом этапе вы также можете вносить изменения в список аккаунтов
  2. Создание на основе файла списка бинарного файла, с которым в конечном итоге и будет работать сервер (по умолчанию ‘/etc/pureftpd.pdb’);
  • Создадим нашего первого пользователя tester
    pure-pw useradd tester -u ftpuser -g www-data -d varwwwjoo -c "John Smith" -y 4
    pure-pw mkdb # что бы изменения были сразу же внесены в файл 'pureftpd.pdb' используйте ключ -m
    chown -R ftpuser:www-data varwwwjoo

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

    ls -l varwwwjoo
    drwxr-xr-x 2 ftpuser www-data 4096 Sep 17 14:04 test1
    -rw-r--r-- 1 ftpuser www-data     Sep 17 14:04 test2
  • Все! Настройка завершена.

SECURITY

  1. FTP is by nature a rather unsecure protocol. Add TLS support to prevent your sessions from being vulnerable to man-in-the-middle-attacks

    sudo apt-get install openssl
  2. Enable TLS only mode in Pure-FTPd

    sudo echo 2 > /etc/pure-ftpd/conf/TLS

    or for a less secure version that also accepts insecure FTP connections

    sudo echo 1 > /etc/pure-ftpd/conf/TLS
  3. Make a private SSL key

    sudo mkdir -p /etc/ssl/private/
  4. Create your key

    sudo openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
  5. SSL certificates are inherently insecure if other users can read them. You must secure the certificate before it can be used by changing file permissions.

    sudo chmod 600 /etc/ssl/private/pure-ftpd.pem
  6. And now you need to restart Pure-FTPd

    /etc/init.d/pure-ftpd restart

Шаг #3: Настройка конфигурации

Теперь настроим важные параметры FTPS-сервера. Главным конфигурационным файлом для Pure-FTPd является — /etc/pure-ftpd/pure-ftpd.conf . Перейдем к его редактированию.

Нам необходимо настроить несколько опций, которые отвечают за работу FTPS-сервера и его безопасность.

Запретим локальным пользователям доступ к системным директориям (каждый пользователь сможет получить доступ только к своей домашней директории — /home/username ).

Запретим возможность подключения для анонимных пользователей.

Определим базу данных пользователей.

Активируем использование SSL-сертификата.

Выберем наиболее расширенный набор алгоритмов для шифрования соединения.

Укажем где Pure-FTPd должен искать, созданный нами ранее, сертификат.

При использовании FTP вместе с SSL, вам понадобится включить пассивный режим, в котором для передачи данных используется больше портов, а не только один 21 порт. В связи с этим вам нужно выбрать группу портов, которую будет использовать Pure-FTPd. Если вы не выделите порты под пассивный режим, то скорее всего FTP-клиент не сможет получить список файлов, к которым пользователь пытается получить доступ.

Так как мы собираемся использовать FTP с защищенным каналом передачи, то нам понадобиться включить пассивный режим и выбрать группу портов для его использования. В данном примере я выберу группу портов от 45000 до 50000.

PassivePortRange 45000 50000

Сохраните изменения в файле конфига и перезапустите службу pure-ftpd.

Настройка vsftpd

Конфигурация сервера vsftpd хранится в файле

В следующих разделах мы рассмотрим некоторые важные настройки, необходимые для настройки безопасной установки vsftpd.

Начните с открытия файла конфигурации vsftpd:

1. Доступ по FTP

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

/etc/vsftpd.conf

2. Включение загрузки

Найдите и раскомментируйте чтобы разрешить изменения файловой системы, такие как загрузка и удаление файлов:

/etc/vsftpd.conf

3. Chroot jail

Чтобы предотвратить доступ локальных пользователей FTP к файлам за пределами их домашних каталогов, раскомментируйте строку lne, начинающуюся с :

/etc/vsftpd.conf

По умолчанию из соображений безопасности, когда chroot включен, vsftpd откажется загружать файлы, если каталог, в котором заблокированы пользователи, доступен для записи.

Используйте одно из приведенных ниже решений, чтобы разрешить загрузку при включенном chroot:

  • Метод 1. — Рекомендуемый вариант — оставить включенной функцию chroot и настроить каталоги FTP. В этом примере мы создадим внутри дома пользователя, который будет служить каталогом и каталогом загрузки с возможностью записи для загрузки файлов:
    /etc/vsftpd.conf

  • Метод 2. Другой вариант — включить директиву
    /etc/vsftpd.conf

    Используйте эту опцию, только если вы должны предоставить своему пользователю доступ с правом записи к его домашнему каталогу.

4. Пассивные FTP-соединения.

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

/etc/vsftpd.conf

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

5. Ограничение входа пользователя

Вы можете настроить vsftpd, чтобы разрешить вход только определенным пользователям. Для этого добавьте следующие строки в конец файла:

/etc/vsftpd.conf

Когда этот параметр включен, вам необходимо явно указать, какие пользователи могут входить в систему, добавив имена пользователей в (по одному пользователю в строке).

6. Защита передачи с помощью SSL / TLS

Чтобы зашифровать передачи FTP с помощью SSL / TLS, вам потребуется сертификат SSL и настроить FTP-сервер для его использования.

Вы можете использовать существующий сертификат SSL, подписанный доверенным центром сертификации, или создать самозаверяющий сертификат.

Если у вас есть домен или поддомен, указывающий на IP-адрес FTP-сервера, вы можете быстро сгенерировать бесплатный SSL-сертификат Let’s Encrypt.

Мы сгенерируем 2048-битный закрытый ключ и самозаверяющий SSL-сертификат, который будет действителен в течение десяти лет:

И закрытый ключ, и сертификат будут сохранены в одном файле.

После создания SSL-сертификата откройте файл конфигурации vsftpd:

Найти и директивы, изменить их значения на путь к файлу и установите директиву :

/etc/vsftpd.conf

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

Перезапустите службу vsftpd

Когда вы закончите редактирование, конфигурационный файл vsftpd (без комментариев) должен выглядеть примерно так:

/etc/vsftpd.conf

Сохраните файл и перезапустите службу vsftpd, чтобы изменения вступили в силу:

Install »Pure-FTPD» with GUI

  1. Install the pure-ftpd package and the pureadmin package from the Universe Repository.

    sudo apt-get install pure-ftpd pureadmin
  2. Then create the user group.

    sudo groupadd ftpgroup

    and

    sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

    in the terminal.

  3. Next create your ftpuser directory

    sudo mkdir /home/ftpusers
  4. Then to create a user directory for joe

    sudo mkdir /home/ftpusers/joe

    (you can create a directory for each ftp user)

  5. Then to add user joe

    sudo pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe
  6. Then to create you user database

    sudo pure-pw mkdb
  7. Then

    sudo ln -s /etc/pure-ftpd/pureftpd.passwd /etc/pureftpd.passwd

    and

    sudo ln -s /etc/pure-ftpd/pureftpd.pdb /etc/pureftpd.pdb

    and

    sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/PureDB

    which will create symbolic links between the respective files.

  8. Next you need to modify the permissions of /home/ftpusers directory and of any other subdirectories. The owner must be ftpuser while Group must be ftpgroup

    sudo chown -hR ftpuser:ftpgroup /home/ftpusers/
  9. After doing that open up pureadmin in the terminal.

    gksudo pureadmin

    and stop firestarter if it is installed.

NOTES

The user joe is used as an example, you can change user joe and/or add or remove other users through pureadmin.

You may need to restart PureFTPD before changes take effect.

sudo /etc/init.d/pure-ftpd restart
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: