Установка и настройка FTP сервера (VSFTPD) на Debian server 9.

Разберем как установить и настроить простой, быстрый и безопасный FTP-сервер vsftpd на Debian server 9. Смысл данной затеи в том, чтобы организовать доступ по FTP к тестовому серверу на WordPress и создать хранилище для закачки файлов по FTP.

1. Обновляем систему до актуального состояния:

$ sudo apt update

$ sudo apt upgrade

2. Устанавливаем FTP-сервер (vsftpd) из репозитариев: 

$ sudo apt install vsftpd 

В процессе установки создастся пользователь ftp с домашним каталогом /srv/ftp. При желании место положение папки можно будет изменить.

Уже сейчас набрав в браузере ftp://192.168.1.46/ мы можем войти на наш сайт.

Вводим нашего пользователя serg и пароль:

И мы в системе.

3. Настройка сервера производится через конфигурационный файл /etc/vsftpd.conf.

Сначала необходимо скопировать оригинальный файл настроек, чтобы в случае проблем вернуть всё как было:

# cp /etc/vsftpd.conf /etc/vsftpd.conf.orig 

Открываем файл /etc/vsftpd.conf: 

# mcedit /etc/vsftpd.conf

1. Указываем, что нужно ожидать входящих соединений:

listen=YES 

2. Данная опция имеет взаимоисключающую запись, которую следует привести к виду:

listen_ipv6=NO

3. Разрешим вход только локальным пользователям:

anonymous_enable=NO
local_enable=
YES 

4. Разрешим пользователям записывать файлы и укажем серверу автоматически выставлять нужные права (755 на папки и 644 на файлы):

write_enable=YES
local_umask=
022

5. По умолчанию сервер использует время GMT, чтобы файлам устанавливалось время вашего часового пояса, используйте опцию: 

use_localtime=YES 

6. Включим лог загружаемых и скачиваемых файлов: 

xferlog_enable=YES 

7. Разрешим серверу устанавливать соединения для передачи данных на порт 20 (активный режим):

connect_from_port_20=YES

8. Следующие опции задают место и формат хранения логов:

xferlog_file=/var/log/vsftpd.log
xferlog_std_format=
YES 

9. Зададим таймауты сессии:

idle_session_timeout=600
data_connection_timeout=120
 

10. Также в целях безопасности изолируем пользователя в его домашнем каталоге и сразу разрешим запись в его корень:

chroot_local_user=YES
allow_writeable_chroot=
YES

11. Для коррекной работы с текстовыми данными можно включить поддержку ASCII, это позволит при передаче текстового файла с Windows системы в UNIX (Linux) корректно заменить символы переноса строки с CR+LF на LF для корректного отображение содержимого и выполнить обратное преобразование при передаче его назад.

ascii_upload_enable=YES
ascii_download_enable=
YES

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

12. Все остальные опции оставляем по умолчанию, хотя можете отредактировать приветствие сервера, написав там все что вам нравится:

ftpd_banner=Welcome to Roga i Kopyta LLC FTP

13. В конце конфигурационного файла зададим настройки для пассивного режима, рекомендуется явно задать порты, чтобы была возможность указать их при форвардинге, если сервер стоит за NAT или в правилах брандмауера: 

pasv_enable=YES
pasv_min_port=
62000
pasv_max_port=
62999 

Перезапускаем сервер (это нужно делать всякий раз после внесения изменений в конфигурацию): 

# service vsftpd restart

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

Все в порядке пользователь serg успешно подключен к своей папке home. 

Теперь нам нужно создать возможность новому пользователю управлять нашим сайтом по FTP. 

Для начала создадим нового пользователя dam3di5kar6mus:

# adduser dam3di5kar6mus

Pass — 4567345

Добавить нашего пользователя «newuser» в группу sudo, вам нужно запустить следующую команду: 

usermod -aG sudo dam3di5kar6mus

Допустим нам надо установить пользователю dam3di5kar6mus в качестве корневой директории /var/www/damston.ru/public_html.

Открываем файл /etc/vsftpd.conf: 

# mcedit /etc/vsftpd.conf

Для этого добавим опцию:

user_config_dir=/etc/vsftpd_user_conf 

Затем создадим саму директорию

# mkdir /etc/vsftpd_user_conf

Чтобы задать пользователю собственные настройки в данной директории следует создать файл с именем пользовтаеля и добавить в него необходимые опции. Изменения применяются без перезапуска FTP-сервера при следующем подключении клиента.

Создадим файл с настройками для dam3di5kar6mus:

# mcedit /etc/vsftpd_user_conf/dam3di5kar6mus

и внесем в него опцию:

local_root=/var/www/damston.ru/public_html

Перезагрузим сервер. 

При следующем подключении корневая директория пользователя dam3di5kar6mus изменится на указанную. Также в этом файле мы можем задавать любые персональные опции, например, другой umask или права на доступ к файлам. Однако мы не можем использовать здесь глобальные настройки: опции подключения, логгирования, аутентификации, они будут просто игнорироваться.

Введем в FTP-клиент следующие данные: ftp://192.168.1.46/ Логин:dam3di5kar6mus и

заданный пароль.

Все в порядке мы в директории WordPress.

Как правильно запретить доступ по SSH в Debian. 

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

Я придерживаюсь максимально гибкого подхода при вводе ограничений. Одним пользователям доступ к SSH нужен, другим нет. Чтобы проще рулить этим процессом, я обычно создаю группу no-ssh.

Все, кто в нее входит, будут лишаться доступа по SSH. Напомню, создать группу можно так:

# groupadd no-ssh

После этого добавляем в нее пользователей, которым доступ к SSH не нужен. Например: 

# usermod –G no-ssh dam3di5kar6mus

Хорошо, пользователь dam3di5kar6mus добавлен в группу no-ssh. Теперь внесем корректив в конфигурационный файл ssh-демона. Открываем файл с настройками:

# mcedit /etc/ssh/sshd_config

Перемещаемся в самый конец файла и добавляем одну единственную строчку:

DenyGroups no-ssh 

Сохраняем изменения (ctrl+o) и закрываем файл (ctrl+x). Одной простой строчкой мы установили запрет на подключение пользователей, входящих в группу no-ssh. Чтобы изменения вступили в силу, остается лишь перезапустить службу SSH:

/etc/init.d/ssh restart 

Все, теперь пользователь dam3di5kar6mus доступа к SSH лишился раз и навсегда.

Обеспечение передачи с помощью SSL/TLS.

FTP является открытым протоколом, который не шифрует данных. И даже если вы установите парольную аутентификацию для клиентов на сервере, данные, которые они введут при авторизации, будут переданы на хост открытым текстом. То есть стоит их перехватить, и злоумышленники смогут проникнуть на сервер.

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

В этой статье мы сгенерируем самоподписанный сертификат SSL с помощью команды openssl.

Следующая команда создаст 2048-битный закрытый ключ и самоподписанный сертификат, действительный в течение 10 лет. Как закрытый ключ, так и сертификат будут сохранены в одном файле:

$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Теперь, когда создан SSL-сертификат, откройте файл конфигурации vsftpd: 

# mcedit /etc/vsftpd.conf

Найдите директивы rsa_cert_file и rsa_private_key_file, измените их значение pam в пути к файлу и установите директиву ssl_enable на YES: 

rsa_cert_file=/etc/ssl/private/vsftpd.pem

rsa_private_key_file=/etc/ssl/private/vsftpd.pem

ssl_enable=YES

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

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


ИСТОЧНИК.

Установка и настройка FTP сервера (VSFTPD) на Ubuntu server 14.04.5 LTS.