Configuration
-
View the readme file for more information about pure-ftpd. http://download.pureftpd.org/pub/pure-ftpd/doc/README
-
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
-
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.
-
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с
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
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. Работа с виртуальными пользователями происходит в два этапа:
- Создание файла со списком пользователей и их параметрами (по умолчанию ‘/etc/pureftpd.passwd’), на этом этапе вы также можете вносить изменения в список аккаунтов
- Создание на основе файла списка бинарного файла, с которым в конечном итоге и будет работать сервер (по умолчанию ‘/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
-
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
-
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
-
Make a private SSL key
sudo mkdir -p /etc/ssl/private/
-
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
-
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
-
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
-
Install the pure-ftpd package and the pureadmin package from the Universe Repository.
sudo apt-get install pure-ftpd pureadmin
-
Then create the user group.
sudo groupadd ftpgroup
and
sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser
in the terminal.
-
Next create your ftpuser directory
sudo mkdir /home/ftpusers
-
Then to create a user directory for joe
sudo mkdir /home/ftpusers/joe
(you can create a directory for each ftp user)
-
Then to add user joe
sudo pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe
-
Then to create you user database
sudo pure-pw mkdb
-
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.
-
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/
-
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