Установка сервера vsFTPd
Протокол передачи файлов FTP
это TCP
протокол для передачи файлов между компьютерами, работает на основе модели клиент-сервер. Серверный компонент постоянно слушает FTP
запросы от удаленных клиентов. При получении запроса он управляет входом и установкой соединения. На протяжении сессии он выполняет любые команды, переданные FTP
клиентом.
Одним из самых популярных FTP
серверов является vsftpd
— его легко устанавливать, настраивать и поддерживать. Доступ к FTP
серверу возможен в двух режимах:
- В анонимном режиме удаленный клиент может получить доступ к
FTP
серверу, используя учетную записьanonymous
илиFTP
и передав адресemail
в качестве пароля. Данные в директории/srv/ftp
доступны для всех анонимных пользователей. - В авторизованном режиме пользователь должен иметь учетное имя и пароль в системе. Доступ к каталогам и файлам зависит от прав доступа пользователя, указанного при входе. Обычный пользователь ограничен своей домашней директорией.
В зависимости от способа установления соединения для передачи данных различают активный и пассивный режимы работы FTP
:
- В активном режиме клиент устанавливает управляющее соединение на порт
21
сервера и передает специальную командуPORT
, в которой указывает свой адрес и порт для передачи данных. Получив данную команду, сервер устанавливает соединение с20
порта на указанный в команде порт клиента. - В пассивном режиме клиент устанавливает управляющее соединение на порт
21
сервера и передает специальную командуPASV
. В ответ сервер передает адрес и порт, на который следует устанавливать соединение для передачи данных. Получив эту информацию, клиент устанавливает подключение к серверу и начинает передачу данных.
Основной недостаток активного режима — клиенту требуется выделенный IP-адрес
. Также определенные сложности будут возникать при нахождении клиента за брандмауэром или NAT-ом
. В пассивном режиме все соединения инициирует клиент и поэтому к нему нет никаких требований. По этой причине на сегодняшний день основным режимом работы FTP
является пассивный в авторизованном режиме.
Установка vsFTPd
Обновляем список пакетов сервера:
sudo apt update
Обновляем пакеты сервера:
sudo apt upgrade
Устанавливаем сервер vsftp
:
sudo apt install vsftpd
Включаем сервер vsftp
:
sudo systemctl start vsftpd
Добавляем веб сервер vsftp
в автозагрузку::
sudo systemctl enable vsftpd
Проверка работоспособности сервера vsftpd
:
sudo systemctl status vsftpd
Управление сервером vsftpd
Отключаем сервер vsftp
:
sudo systemctl stop vsftpd
Перезагружаем сервер vsftp
:
sudo systemctl restart vsftpd
Запретить запуск службы при загрузке системы:
sudo systemctl disable vsftpd
В процессе установки FTP-сервера
создается пользователь ftp
с домашней директорией /var/ftp
.
Настройка анонимного доступа
Прежде чем вносить какие-либо изменения в конфигурационный файл, создадим копию файла конфигурации:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.default
Открываем на редактирование файл конфигурации:
sudo nano /etc/vsftpd/vsftpd.conf
Настройка vsftpd
по умолчанию не разрешает подключаться анонимным пользователям, чтобы это изменить, раскомментируем строчку:
anonymous_enable=YES
Запрещаем подключаться со своим логином и паролем:
local_enable=NO
Разрешаем запись для всех пользователей, кроме анонимных:
write_enable=YES
Разрешаем запись (т.е. загрузку файлов) еще и анонимным:
anon_upload_enable=YES
Чтобы анонимный пользователь мог создавать директории:
anon_mkdir_write_enable=YES
Разрешаем пассивный режим:
pasv_enable=YES
После внесения изменений перезагружаем сервер:
sudo systemctl restart vsftpd
Перейдем в /var/ftp
и создадим неколько каталогов, которые будут доступны на запись всем пользователям:
sudo mkdir /var/ftp/audio
sudo chmod 777 /var/ftp/audio
sudo mkdir /var/ftp/video
sudo chmod 777 /var/ftp/video
sudo mkdir /var/ftp/others
sudo chmod 777 /var/ftp/others
При выборе анонимного доступа, обязательно должен быть выключен файервол
Настройка авторизованного доступа
Прежде чем вносить какие-либо изменения в конфигурационный файл, создадим копию файла конфигурации:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.default
Открываем на редактирование файл конфигурации:
sudo nano /etc/vsftpd/vsftpd.conf
В итоге у нас должен получится вот такой файл конфигурации:
# данная опция запускает FTP-сервер как службу, сервер не должен запускаться от inetd
listen=YES
# listen обеспечивает поддержку IPv4, listen_ipv6 обеспечивает сразу IPv6 и IPv4, поэтому должна быть включена только одна из них.
listen_ipv6=NO
# запрещаем доступ для анонимных пользователей
anonymous_enable=NO
# разрешаем локальных и виртуальных пользователей
local_enable=YES
# разрешаем пользователяим изменения файловой системы
write_enable=YES
# задаем маску для вновь создаваемых файлов и директорий, это обеспечит установку прав 755 на директории и 644 на файлы, т.е. полный доступ только владельцу и чтение для группы и остальных.
local_umask=022
# изолируем пользователей в их домашних директориях
chroot_local_user=YES
# добавим опцию, чтобы не возникала ошибка у изолируемых пользователей в их домашних директориях
allow_writeable_chroot=YES
# включим запись в лог-файл /var/log/vsftpd.log загружаемых и скачиваемых файлов
xferlog_enable=YES
# использовать стандартный формат лога
xferlog_std_format=YES
# для корректной работы с текстовыми данными, в частности с символами переноса строки в разных ОС (CR+LF в Windows, LF в Linux) включим поддержку ASCII
ascii_upload_enable=YES
# FTP автоматически будет менять символы переноса строки для соответствия стандартам системы
ascii_download_enable=YES
# разрешим пассивный режим
pasv_enable=YES
# минимальный порт
pasv_max_port=65535
# максимальный порт
pasv_min_port=60000
# директория куда бутеп перенаправлено FTTP соединение
local_root=/home/bitrix/ext_www
# использовать порт 20 для передачи данных вместо случайного, это нужно для нормальной работы фаервола
connect_from_port_20=YES
# имя pam сервиса для vsftpd
pam_service_name=vsftpd
#
#Чтобы разрешить только определенным пользователям входить на FTP-сервер, добавьте следующие три строки и создайте файл user_list
#
# Контроль доступа к серверу через отдельный список пользователей
userlist_enable=YES
# Файл со списками разрешенных к подключению пользователей
userlist_file=/etc/vsftpd/user_list
# Пользователь будет отклонен, если его нет в user_list
userlist_deny=NO
Необходимо явно указать, какие пользователи могут входить в систему, добавив имена пользователей в файл /etc/vsftpd/user_list
(по одному пользователю на строку):
sudo nano /etc/vsftpd/user_list
Настройка файервола
Брандмауэр нужен для защиты системы от компьютерных атак или для изоляции самой системы, если она была поражена вредоносным программным обеспечением.
Во всех операционных системах, основанных на базе ядра Linux, имеется встроенный межсетевой экран, осуществляющий контроль и фильтрацию входящего и исходящего трафика, исходя из заданных пользователем или платформой правил. В дистрибутиве CentOS 7 по умолчанию такую функцию выполняет утилита iptables, взаимодействуя со встроенным брандмауэром netfilter.
Установка утилиты:
sudo yum -y install iptables-services
Проверка состояния файрвола:
sudo service iptables status
Включение файрвола:
sudo systemctl start iptables.service
Отключение файрвола:
sudo service iptables stop
Перезапустить файрвол:
sudo systemctl restart iptables.service
Удалить из автозагрузки:
sudo systemctl disable firewalld
Добавить автозагрузку:
systemctl enable iptables.service
Открываем конфигурационный файл iptables:
sudo nano /etc/sysconfig/iptables
Нужно найти строчку OUTPUT ACCEPT [412:43910]
и затем добавить:
-A INPUT -p tcp -m tcp --sport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 20 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 20,21,60000:65535 -j ACCEPT
Тем самым мы откроем порты: 20
21
и пулл от 60000
до 65535
.
Добавление пользователя
Сначала необходимо узнать id группы и пользователя, под которым работает Apache:
sudo id bitrix
Должен быть получен подобный ответ:
uid=600(bitrix) gid=600(bitrix) groups=600(bitrix),10(wheel)
Добавляем пользователя с найденным id и указываем директорию по умолчанию:
sudo adduser логин_пользователя -g600 -o -u600 -d /home/bitrix/www/
Посмотреть всех пользователей:
sudo cat /etc/passwd
Задаем новому пользователю пароль:
sudo passwd логин_пользователя