Разберем как установить и настроить простой, быстрый и безопасный 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.