Установка VSFTPd + SSL Не закончено!
На Ubuntu Server 10.10 Maverick Meerkat


Задача FTP-сервера в этом примере:
  1. Разрешить доступ анонимным пользователям только к определенным ресурсам FTP-сервера в режиме «только чтение».
  2. Ограничить анонимных пользователей по количеству подключений и скорости.
  3. Обеспечить безопасный доступ авторизированным пользователям. Сам по себе FTP-протокол абсолютно не безопасный, логин и пароль в момент авторизации передаются открытым образом и могут быть перехвачены, по этому авторизованные пользователи в обязательном порядке должны подключаться через SSL/TLS.
  4. Авторизованные пользователи должны быть виртуальными - я не вижу необходимости в заведении реальных пользователей (пусть даже и с отключенным шеллом). Примечание: виртуальным пользователям нельзя будет настроить индивидуальный доступ на папки, т.к. vsftpd всех их маскирует под одним реальным пользователем, задаваемым директивой guest_username=username и guest_enable=YES.
  5. Разрешить авторизированным пользователям совместное использование папки UPLOAD для обмена файлами.
  6. Выделить каждому авторизированному пользователю персональную папку, куда никто кроме него не может «писать/читать».

Установка необходимых компонентов

Становимся супер-пользователем (root):
sudo su
Устанавливаем сам ftp-сервер:
apt-get install vsftpd
Если нужны виртуальные пользователи, надо поставить библиотеку для авторизации PAM из обычного текстового файлика
apt-get install libpam-pwdfile
Для создания файла паролей, необходимо поставить запчасть от Apache под названием htpasswd.
Если Apache уже был установлен на сервере, то утилитка у вас уже есть и можно пропустить этот раздел.
Если Apache не был установлен, то ставим утилитку отдельно.
Для Apache версии 1.x, ставим apache-utils, Для Apache версии 2.x - ставим apache2-utils.
apt-get install apache2-utils

Настройка

Информация! Особенностью vsftpd является применение умолчательных директив. Т.е. если в файле конфигурации какой-то параметр не прописан явно, он берется самим vsftpd из настроек «по умолчанию». Отсюда следуют две вещи:
  • Можно делать рабочий конфигурационный файл буквально из 5 строчек.
  • Если что-то не работает или работает не так - надо почитать документацию и (вероятно) просто явно прописать какой-то параметр.
Создаем отдельную папку для vsftpd.

По умолчанию файл конфигурации лежит в /etc и называется vsftpd.conf, и это весьма неудобно.
Удобнее на мой взгляд сделать свою папку /etc/vsftpd и уже там хранить конфигурационный файл, файл сертификата SSL/TLS, базу виртуальных пользователей и прочее.
mkdir /etc/vsftpd
mv /etc/vsftpd.conf /etc/vsftpd
ln -s /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf
mkdir /etc/vsftpd/ssl

Создаем дерево FTP

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

Например, такой вариант:
  • Анонимные пользователи попадают в папку /home/ftp-shared/Anonymous и имеют права только на чтение.
  • Зарегистрированные пользователи попадают в папку /home/ftp-shared/Users и имеют права только на чтение;
    папка /home/ftp-shared/Users/UPLOAD - доступна всем на чтение/запись;
    папка /home/ftp-shared/Users/USER - доступна всем только чтение;
    папка /home/ftp-shared/Users/USER/user_name - доступна только владельцу на чтение/запись.
Создаем папки:
mkdir /home/ftp-shared
mkdir /home/ftp-shared/Anonymous
mkdir /home/ftp-shared/Users
mkdir /home/ftp-shared/Users/UPLOAD
mkdir /home/ftp-shared/Users/USER
mkdir /home/ftp-shared/Users/USER/user_name
Создаем группы пользователей:
groupadd ftpanonusers
groupadd ftpauthusers
Раздаем права:
chown ftp:ftpanonusers /home/ftp-shared/Anonymous
chown -R ftp:ftpauthusers /home/ftp-shared/Users
chmod 755 /home/ftp-shared/Anonymous
chmod 770 /home/ftp-shared/Users
chmod 775 /home/ftp-shared/Users/UPLOAD
chmod 755 /home/ftp-shared/Users/USER
chown user_name:ftpauthusers /home/ftp-shared/USER/user_name
chmod 700 /home/ftp-shared/Users/USER/user_name

Тут есть ошибка в связи с тем что в системе нет такого пользователя как user_name как можно задать владельца папке указывая несуществующего пользователя???


Генерируем сертификат SSL/TLS

Создаем файл сертификата (RSA, 2048 bit, на 10 лет):
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/vsftpd/ssl/vsftpd.pem -out /etc/vsftpd/ssl/vsftpd.pem
медитируем
Generating a 2048 bit RSA private key
.........................+++
.......................................................................+++
writing new private key to '/etc/vsftpd/ssl/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Далее необходимо ответить на ряд вопросов, см.пример:
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Russian Federation
Locality Name (eg, city) []:Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Company_name
Organizational Unit Name (eg, section) []:IT-Department
Common Name (eg, YOUR name) []:ftp.you_domain.ru
Email Address []:admin@you_domain.ru

Виртуальные пользователи

Создаем файл виртуальных пользователей и сразу добавляем первого
htpasswd -c /etc/vsftpd/virtual_users.db user_name
Добавляем нового пользователя, ключ уже использовать не надо, т.е. просто:
htpasswd /etc/vsftpd/virtual_users.db user_name1
Смена пароля
htpasswd /etc/vsftpd/virtual_users.db user_name1

Настраиваем PAM

Открываем в редакторе /etc/pam.d/vsftpd
В самое начало добавляем следующие строки (если добавить в конец файла, то работать не будет!):
# for virtual vsftpd users
auth    sufficient      pam_pwdfile.so pwdfile /etc/vsftpd/virtual_users.db
account sufficient      pam_permit.so

Модифицируем конфигурационный файл

Открываем в редакторе /etc/vsftpd/vsftpd.conf
# General
listen=YES
listen_ipv6=NO
background=NO
listen_port=21
connect_from_port_20=YES
max_clients=32
max_per_ip=8

#
# Anonymous
anonymous_enable=YES
no_anon_password=YES
anon_root=/home/ftp-shared/Anonymous
anon_max_rate=51200     # Limit 50 KB/sec (50KB * 1024 = 51200 bytes)
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
anon_umask=022

#
# Local users
local_enable=YES
local_root=/home/ftp-shared/Users
local_max_rate=0	# Unlimited speed
user_config_dir=/etc/vsftpd/vsftpd_user_conf # Это что за файл? Его нет нихуя!!!
chroot_local_user=YES
local_umask=022
write_enable=YES

#
# Virtual users
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
hide_ids=YES

#
# Sessions
idle_session_timeout=300
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
#ftpd_banner=Welcome My FTP Server
banner_file=/etc/vsftpd/banner.txt

#
# Security
secure_chroot_dir=/var/run/vsftpd
max_login_fails=3
pasv_min_port=60000
pasv_max_port=60499
pam_service_name=vsftpd

#
# SSL & TLS
ssl_enable=YES
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# Anonymous cannot use SSL/TLS
allow_anon_ssl=NO
# Local users always use SSL/TLS
force_local_logins_ssl=YES
force_local_data_ssl=YES

#
# Logging
syslog_enable=NO
xferlog_enable=YES
xferlog_file=/var/log/vsftpd/xferlog.log
Cоздаем файл баннер /etc/vsftpd/banner.txt, для приветствующего сообщения сервера.
touch /etc/vsftpd/banner.txt
Открываем в редакторе /etc/vsftpd/banner.txt и вставляем например такой текст.
Welcome to My FTP server.
==================================================================
Restrictions.
 - Anonymous users: Rate limit 50 KB/sec, 8 session per IP-address
 - Registered users: Unlimited speed and you must use SSL/TLS

Enjoy!

Смотрим что получилось и медетируем...

cat /etc/vsftpd/banner.txt
Welcome to My FTP server.
==================================================================
Restrictions.
 - Anonymous users: Rate limit 50 KB/sec, 8 session per IP-address
 - Registered users: Unlimited speed and you must use SSL/TLS

Enjoy!

Запуск, остановка, перезагрузка и статус vsftpd
service vsftpd start
service vsftpd stop
service vsftpd restart
service vsftpd status

Примечание: Устаревший способ

В новой версии Ubuntu рекомендуют использовать команду service вместо прямого запуска скриптов из /etc/init.d как показано на примере ниже:

/etc/init.d/vsftpd restart

Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service vsftpd restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the restart(8) utility, e.g. restart vsftpd
vsftpd start/running, process 26329

Ссылки

一步一步地会到目的

I do not smoke or drink



Search for Extra-Terrestrial Intelligence at Home
Search for Extra-Terrestrial Intelligence at Home

User signature graphic BOINC Stars

Power by BOINC


International Space Station
Прямая трансляция переговоров космонавтов МКС с ЦУП.
Только голос | Голос и Видео
Говорят они не всегда, только по необходимости, так что не удивляйтесь, если на канале будет тишина.

Ubuntu 14.04 (Trusty Tahr) Daily Build

>>> Старые релизы Ubuntu <<<

Оглавление

Cisco Systems

Связь через консольный кабель
Сброс пароля на Catalyst 2950
Создание VLAN на Catalyst 2950
Создание и управление стеками коммутаторов

FreeBSD 8.2 - Сервер с "нуля"

Установка
Начальная настройка
Сборка ядра (c Kernel NAT)
Named
OpenVPN

Ubuntu Server

Настраиваем WEB-сервер
Apache2 + PHP5 + MySQL + phpMyAdmin
Пример для виртуальных хостов

VSFTPd + SSL Не закончено!
Установка TFTP сервера (tftpd)
Установка Midnight Commander
Установка Deluge с Web-интерфейсом
Бэкапим MySQL базы
MySQL шпаргалки
Резервное копирование - м1
Простой шлюз на Ubuntu Server
Сетевое радио на Icecast2
Объединение HDD дисков
Управление автозагрузкой
Настройка сети вручную
Защита от брутфорса
ssh, ftp, http: fail2ban

OpenVPN Installation Ubuntu

Ubuntu Desktop

Настройка Ubuntu Desktop 10.10
Раскукоживаем Менеждер обновлений
Раскладка - флажки вместо текста
QutIM - клиент ICQ, Jabber, MAgent, IRC
Температура железа на панеле

Горячие клавиши в Ubuntu Unity

Драйвера NVIDIA в Ubuntu
Радио лоток в области уведомлений
SSHFS - Монтируем удаленную FS
Резервное копирование Ubuntu Desk
Загрузочная флешка Ubuntu Server
Загрузочная USB из под Windows
Как найти нужный PPA-репозиторий
Видеонаблюдение под Ubuntu 10.04 для "чайников"
Видеонаблюдение легально!

Linux

Полезные команды Linux
Конфиг железа в Ubuntu
Мониторинг хостов в сети
Разное на одном листе
inotify - это подсистема ядра Linux, которая позволяет получать уведомления об изменениях в файловой системе.

Полезное под Windows

FTPS - защищённое соединение
PuTTY - Как сохранить настройки
VirtualBox - Клонирование виртуальных машин.

Скриптовые языки

AWK - Язык обработки структурированных текстов

Чит-листы или Шпаргалки

pdf css_cheat-sheet ver.1
pdf css_cheat-sheet ver.2
pdf php_cheat-sheet ver.1
pdf php_cheat-sheet ver.2
pdf javascript_cheat-sheet ver.1
pdf mysql_cheat-sheet ver.1
pdf html_cheat-sheet ver.1
pdf regular_expressions ver.1
pdf regular_expressions ver.2
pdf mod_rewrite_cheat-sheet ver.1
pdf mod_rewrite_cheat-sheet ver.2
pdf sql_server_cheat-sheet ver.1
pdf microformats_cheat-sheet ver.1
pdf seo_cheat-sheet ver.0.4
pdf wordpress_designer ver.1

Последовательное соединение проводников
Последовательное соединение проводников

Параллельное соединение проводников
Параллельное соединение проводников


Gedit style schemes

xml darktango.xml
xml emacs-darkslategrey.xml

HTML заметки

Разные валидные фичи
10 преступлений с HTML тегами
Заметки по установке
MaxSite CMS версия 0.42

Горизонтальное CSS Меню
.htacces паролим сайт
Противоугонный пакет

Коллекция jQuery plagins

Quovolver [?]
Custom Animation Banner [?]
Style my tooltips [?]


ipv6.nic.ru

QR Coder.ru
Генератор QR-кодов


2:5020/1209.12@FidoNet

Logo WebMoney
WMIDwmid 358066815673
pursewmzZ452007172362
wmrR568219491953
wmeE770110075404

Logo Yandex.Money
 Yndex purse4100178599238




Мои сортовые телефоны и смартфоны:
  1. 1997-1999 - ERICSSON DH318, ERICSSON DH618
  2. 1999-2002 - Siemens C25 in case "Chameleon"
  3. 2002-2004 - SAMSUNG SGH-T400
  4. 2004-2008 - Qtek s100
  5. 2008-2011 - SAMSUNG SGH-i900 WiTu 8Gb
  6. 2011-2013 - HTC Wildfire S
  7. 2013-2015 - HTC One S
  8. 2015-2017 - ASUS Zenfone 2 ZE550ML
  9. 2017-2020 - Xiaomi Redmi Note 4 4Gb 64Gb
  10. 2021-2024 - Xiaomi Redmi Note 8 Pro 6Gb 64Gb
  11. 2025-н.в. - Xiaomi POCO M6 Pro 12Gb 512Gb