Настройка ftp linux red hat

Обновлено: 04.07.2024

Сервер FTP wu-ftpd является разработкой Вашингтонского университета. Этот сервер очень распространен и входит в состав практически каждого дистрибутива Linux. Для его установки нужно установить пакет wu-ftpd. Как и любой другой сервер, wu-fptd может быть постоянно загруженным в память или вызываться суперсервером inetd по мере необходимости. Первый режим называется standalone и применяется, как правило, если FTP-серверу нужно часто обрабатывать запросы клиентов. Второй режим используется в целях экономии памяти и если нагрузка на FTP-сервер не очень велика.

Если вы решите настроить работу сервера FTP во втором режиме, в файле inetd.conf должна быть соответствующая запись (см. листинг 11.1)

Листинг 11.1. Фрагмент файла inetd.conf

Из листинга 11.1 видно, что FTP-сервер вызывается не напрямую, а через демон tcpd, чем обеспечивается дополнительная безопасность. В том случае, если вы используете новую версию inetd — xinetd, формат записи у вас будет другой (см. листинг 11.2).

Листинг 11.2. Фрагмент файла xinetd.conf

Опция -l сервера FTP регистрирует все сеансы FTP в файле syslog.

Кроме этой опции, сервер ftp имеет ряд других опций, указанных в табл. 11.1.

Опции командной строки сервера wu-ftpd Таблица 11.1

Опция Описание
-d Записывает отладочную информацию в журнал syslog
–l Регистрирует все FTP-сеансы в журнале syslog
-L Регистрирует в журнале syslog все команды, отправленные серверу FTP
-t секунды Устанавливает предел времени ожидания для пассивных клиентов (по умолчанию 15 минут). Если за этот промежуток времени от клиента не поступит ни одной команды, то FTP-сеанс с сервером будет разорван
-Т секунды Максимально допустимое время сеанса FTP (по умолчанию 2 часа)
Разрешает использование файла конфигурации ftpaccess
Запрещает использование файла конфигурации ftpaccess. Эта опция установлена по умолчанию
-i Регистрирует в журнале xferlog файлы, полученные сервером FTP
Регистрирует в журнале xferlog файлы, переданные сервером во время сеанса

Сервер wu-ftp использует пять файлов конфигурации: ftpaccess, ftphosts, ftpusers, ftpgroups, ftpconversions. В этой главе мы подробно рассмотрим каждый из них.

Основным файлом конфигурации является ftpaccess. Как и другие файлы конфигурации, он располагается в каталоге /etc. Пример файла /etc/ftpaccess приведен в листинге 11.3.

Листинг 11.3. Пример файла ftpaccess

Файл ftpaccess определяет возможности доступа к FTP-серверу, которые будут иметь различные группы пользователей. В этом файле задаются параметры доступа, разрешенные операции, виды регистрируемых событий.

С помощью директивы email можно указать адрес администратора сервера.

Директива loginfails задает максимальное количество попыток регистрации. Если это количество превышено, пользователь автоматически будет отключен. Значение по умолчанию для этой директивы равно 5.

Директива message определяет файл и событие, когда он должен быть отображен. Например, можно создать несколько файлов, один из которых будет отображаться при регистрации пользователя, а другой — при входе его в определенный каталог.

Директивы chmod и delete определяют, могут ли пользователи использовать одноименные команды FTP. А директивы overwrite или delete разрешают или запрещают определенным пользователям перезаписывать или удалять файлы на сервере. В приведенном примере (см. листинг 11.3) пользователи классов guest и anonymous не могут выполнять ни одну из упомянутых операций. Общие директивы сервера wu-ftpd перечислены в табл. 11.2.

Директивы сервера wu-ftpd Таблица 11.2

Кроме общих директив, сервер wu-ftp имеет директивы, которые управляют правами доступа. Директивы прав доступа определяют, какие операции могут выполнять пользователи того или иного типа. Эти директивы указаны в табл. 11.3.

Директивы прав доступа Таблица 11.3

Разрешающая запись allow разрешает пользователю регистрироваться с хостов, указанных в списке hosts, но запрещает регистрацию со всех остальных. Запись deny, наоборот, запрещает доступ с определенных хостов, но разрешает со всех остальных. В листинге 11.4 приведен пример файла ftphosts.

Листинг 11.4. Пример файла ftphosts

В приведенном примере пользователь admin может регистрироваться на сервере только с компьютера с IP-адресом 192.168.1.1. Если этот пользователь попробует зарегистрироваться с другого компьютера, то ему будет отказано в доступе. Пользователю user запрещено регистрироваться с компьютеров 192.168.1.2 и 192.168.1.3, но он может зарегистрироваться с любого другого компьютера сети.

File Transfer Protocol, т. е. FTP – протокол передачи файлов и, как понятно из полного названия, предназначен для передачи файлов между удалёнными компьютерами через сеть. Несмотря на то, что сам протокол FTP является на сегодняшний день не самым совершенным из-за того, что передаваемые данные не шифруются, однако это не делает его устаревшим. Кроме того всё-таки к FTP возможно применять криптографическую защиту на основе протокола SSL, что и делает FTP достойным инструментом для передачи файлов.

  1. Работа с виртуальными пользователями.
  2. Работа с виртуальными IP-адресами.
  3. Конфигурирование пользователей.
  4. Поддержка
  5. SSL-шифровние для защиты передаваемых данных.
  6. Контроль полосы пропускания.

Установка vsFTPd

Установить Vsftd в Debian-ориентированных дистрибутивах Linux позволяет команда:

Также полезно будет установить и простой FTP-клиент для тестирования соединения и передачи файлов:

Для дистрибутивов на основе RPM-пакетов, CentOS, RedHat:

Примечание: yum – это пакетный менеджер, тот же самый apt, но адаптированный для управления пакетами формата *.rpm.

После установки для vsFTPd будет доступна техническая документация, которая обычно находится в каталоге /usr/share/doc/vsftpd/examples – здесь приведены варианты различных конфигураций, в зависимости от характера и масштабов использования vsFTPd. Ознакомиться с документацией можно также с помощью команды:


Обычно после установки демон vsFTPd автоматически запускается, убедиться в этом можно с помощью следующих команд:

Запуск, перезапуск и остановка сервера:

Для включения демона vsftpd в автозагрузку используется команда:

Аналогично и с командой service.

Если vsFTPd используется в серверных дистрибутивах, в которых часто работает фаервол, например ufw, то ещё может понадобиться разрешить использование портов 20 и 21:

Настройка vsFTPd

Конфигурационным файлом для настройки vsFTPd является файл vsftpd.conf, который обычно находится в каталоге etc/. Ознакомиться с его одержимым можно командой cat:


На всякий случай полезно перед редактированием оригинального файла настроек сделать его резервную копию:

$ sudo cp /etc/vsftpd.conf vsftpd.conf.backup

FTP-сервер vsFTPd предусматривает два основных варианта работы: с анонимными и авторизованными пользователями. Первый вариант считается «более безопасным», но только потому, что для обеспечения надёжной защиты практически ничего настраивать и не нужно. Но при грамотной организации авторизованного доступа, предполагающего работу с FTP локальных пользователей системы, можно обеспечить безопасность ничуть не хуже, чем при использовании анонимного доступа.

Настройка в режиме анонимного доступа

Работа vsFTPd в данном режиме заключается в том, что действия с файлами на удалённом сервере производятся одним определённым по умолчанию пользователем, например, пользователем с именем «ftp» или «anonymous», при этом в качестве пароля используется e-mail.

Чтобы включить анонимный доступ по FTP нужно в фале vsftpd.conf определить значение «YES» для соответствующей директивы:

Теперь для управления файлами будет использоваться определённый каталог (обычно это /srv/ftp) и определённый пользователь — обычно ftp.

Можно определить и другое расположение файлов для анонимного доступа по FTP, т. е. изменить домашнюю директорию пользователя ftp:

Если нужно, чтобы анонимные пользователи могли ещё и загружать файлы на удалённый сервер, то это позволит сделать директива:

Теперь можно скопировать необходимые для анонимного доступа файлы в домашнюю папку пользователя ftp и перезапустить демон vsftpd:

$ systemctl restart vsftpd

Обычно этого набора настроек достаточно для организации анонимного FTP-доступа. Для проверки соединения можно выполнить команду ftp address_host:

что в случае успешного выполнения даст примерно такой вывод:


Настройка в режиме авторизованного доступа

Для авторизованного доступа проще всего включить использование локальных учётных записей на сервере. Для этого нужно указать следующую директиву в файле конфигурации vsftpd.conf:

Для задания разрешения локальным авторизованным пользователям загружать файлы на сервер указывается директива:

Примечание: для авторизации локальных пользователей используется пароль пользователя для локального входа в систему.

Теперь нужно перезапустить vsftpd для активации сделанных изменений:

Ограничение пользователей в своих домашних каталогах

Для определения пользователей, которым разрешён доступ только к своему домашнему каталогу существуют директивы:

Первая включает использование списка пользователей, вторая определяет файл, в котором в каждой строке перечислены пользователи с доступом только к своим домашним каталогам. Если при этом ещё указать директиву:

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

Можно также для устранения этой ошибки отключить проверку на запись в домашний каталог:

Но всё же это стоит делать лишь тогда, когда есть чёткое понимание, зачем это нужно для конкретной ситуации.

Защита данных с помощью SSL

Чтобы иметь возможность шифровать передаваемые данные, следует настроить vsFTPd в режиме FTPS. Это та же самая передача данных по FTP, но организованная поверх SSL – протокола. Шифрующего и проверяющего данные с помощью сертификатов и ключей.

Для включения режима FTPS нужно задействовать следующую директиву:

По умолчанию в конфигурационном файле vsftpd.conf также присутствуют опции, определяющие сертификаты и ключи, например:

Эти сертификат и ключ необходимо заменить. Для использования FTPS необходимо использовать сертификат и ключ. Cгенерированные (или полученные) для конкретного сервера или компьютера.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Этот протокол не будет много объясним. Я считаю, что пока вы изучаете компьютер, вы должны быть знакомы с этим протоколом. Посмотрите прямо на конфигурацию.

конфигурация

Перед настройкой, чтобы облегчить настройку, я поставил брандмауэр и selinux

server client
ip 192.168.0.100 192.168.0.200
hostname system1 system2

Первый вид: вход анонимного пользователя

Сторона сервера:

3. Запустите службу и дайте разрешения для общего каталога

сторона клиента

1. Установите ftp и запустите сервис

yum -y install ftp
systemctl start ftp

2. Проверка соединения


ftp 192.168.0.100


Конечно, окна также могут быть доступны.

Второй вид: назначенный логин пользователя

Здесь я создал двух пользователей user1 и user2. Пользователь1 может переключать каталоги после входа в систему, а пользователь2 ограничен своим домашним каталогом (по умолчанию ftp - домашний каталог пользователя).

  1. Создать пользователя
  1. Изменить конфигурационный файл vsftp

Если вы хотите простую настройку, просто перезапустите anonymous_enable = NO. В vsftp.conf. Если это появляется
vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot () , Это связано с тем, что начиная с 2.3.5 проверки расширенной безопасности vsftpd: если пользователь ограничен своим домашним каталогом, домашний каталог пользователя больше не может иметь разрешения на запись! Если проверка обнаружит, что разрешение на запись еще есть, она сообщит об ошибке. Решение: (1) Добавьте строку в vsftpd.conf: allow_writeable_chroot = YES, чтобы сделать ее доступной для записи. (2) Удалить разрешение на запись для каталога пользователя chmod a-w / home / user1


user2: не может переключиться на верхний каталог

Второй тип: виртуальный логин

Создайте виртуального пользователя virtual_user, используйте зашифрованные пользовательские файлы для входа в ftp

  1. Создайте виртуального пользователя и зашифруйте
    cd /
    vim userlist
  1. Создать виртуального пользователя
  1. Настроить файл виртуальной конфигурации
    vim /etc/pam.d/vsftpd.vu

cp vuser.db / etc / vsftpd / ----------------- Скопируйте файл пользовательских данных в соответствующий каталог

Как создать FTP-сервер в Linux

Передача файлов в сети осуществляется благодаря правильно настроенному FTP-серверу. Такой протокол работает с применением TCP по архитектуре клиент-сервер и задействует различные сетевые соединения для обеспечения передачи команд между подключенными узлами. Пользователи, которые подключились к определенному хостингу, сталкиваются с надобностью настройки личного FTP-сервера по требованиям компании, предоставляющей услуги обеспечения работы сайта или другого обеспечения. Далее мы продемонстрируем, как создается такой сервер в Linux на примере одной из утилит.

Создаем FTP-сервер в Linux

Сегодня мы будем использовать инструмент под названием VSftpd. Преимущества такого FTP-сервера в том, что он по умолчанию работает на многих ОС, обслуживает официальные репозитории различных дистрибутивов Linux и относительно просто настраивается для корректного функционирования. К слову, на ядре Линукс официально применяется именно этот FTP, и многие хостинги рекомендуют ставить VSftpd. Поэтому давайте обратим внимание на пошаговый процесс инсталляции и настройки необходимых компонентов.

Шаг 1: Установка VSftpd

По умолчанию всех нужных библиотек VSftpd в дистрибутивах не имеется, поэтому их нужно вручную загрузить через консоль. Осуществляется это следующим образом:

Переход к взаимодействию с консолью в операционной системе Linux

Команда для установки VSftpd в операционной системе Linux

Ввод пароля для установки VSftpd в операционной системе Linux

Процедура добавления файлов VSftpd в операционной системе Linux

Обращаем внимание обладателей CentOS, которые задействуют выделенный виртуальный сервер от любого хостинга. Вам потребуется произвести обновление модуля ядра ОС, поскольку без этой процедуры во время инсталляции отобразится критическая ошибка. Последовательно вводите такие команды:

После окончания всей этой процедуры запустите любым удобным образом конфигурационный файл /boot/grub/grub.conf . Измените его содержимое таким образом, чтобы в итоге следующие параметры имели соответствующие значения:

default=0
timeout=5
title vmlinuz-4.0.4-1.el7.elrepo.x86_64
root (hd0,0)
kernel /boot/vmlinuz-4.0.4-1.el7.elrepo.x86_64 console=hvc0 xencons=tty0 root=/dev/xvda1 ro
initrd /boot/initramfs-4.0.4-1.el7.elrepo.x86_64.img

Далее вам останется только перезагрузить выделенный сервер и переходить к непосредственной инсталляции FTP-сервера на компьютер.

Шаг 2: Первоначальная настройка FTP-сервера

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

Запустить конфигурационный файл VSftpd в операционной системе Linux

Сохранить конфигурационный файл VSftpd в операционной системе Linux

Шаг 3: Добавление пользователя с расширенными правами

Если вы собираетесь работать с FTP-сервером не через свою основную учетную запись или хотите предоставить доступ другим юзерам, созданные профили обязательно должны иметь права суперпользователя, чтобы при обращении к утилите VSftpd не возникало ошибок с отказом в доступе.

Создать нового пользователя через терминал в Linux

Ввести пароль для нового пользователя в операционной системе Linux

Дополнительные данные нового пользователя в Linux

Предоставить новому пользователю расширенные права Linux

Создать для пользователя главную папку в Linux

Задать владение для папки нового пользователя в Linux

Перезапустить FTP-сервер через консоль в Linux

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

Шаг 4: Настройка Firewall (Только для Ubuntu)

Пользователи других дистрибутивов могут смело пропускать этот шаг, поскольку настройка портов нигде больше не требуется, только в Ubuntu. По умолчанию Firewall настроен таким образом, что не пропустит входящий трафик из нужных нам адресов, поэтому потребуется разрешить его прохождение вручную.

    В консоли поочередно активируйте команды sudo ufw disable и sudo ufw enable , чтобы перезапустить Firewall.

Перезапустить Firewall в операционной системе Ubuntu

Добавить новые правила в Firewall в операционной системе Ubuntu

Проверить статус Firewall в операционной системе Ubuntu

Отдельно хочется отметить несколько полезных команд:

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

На этом статья подходит к концу. Сегодня мы разобрали процедуру установки сервера VSftpd без привязки к какому-либо хостингу, поэтому учтите это при выполнении наших инструкций и сравнивайте их с теми, что предоставляет компания, содержащая ваш виртуальный сервер. Кроме всего, советуем ознакомиться с другим нашим материалом, в котором разбирается тема установки компонентов LAMP.

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Описана установка стандартного сервера ftpd по шагам, на примере Red Hat Linux 4 (для других дистрибутивов процедура очень похожа). Статья основана на книге "Руководство администратора Linux" авторов Эви Немет, Гарт Снайдер, Трент Хейн.

1. Настраиваем открытие управляющего порта 21 для протокола FTP и запуск демона ftpd при подключении клиента к этому порту. В общем случае демона ftpd запускает управляющий стандартными сервисами Интернет демон inetd, либо xinetd (это зависит от дистрибутива). После того, как демон ftpd запущен, он берет на себя всю дальнейшую работу с клиентом, и работает вплоть до завершения соединения (при завершении соединения ftpd прекращает работу). Для каждого клиентского подключения запускается отдельный процесс ftpd.

На разных дистрибутивах Linux настройка делается по разному. Узнать, какой Интернет-демон у Вас используется - inetd или xinetd можно, пробуя запускать команду man inetd и man xinetd (по тому демону, который есть в системе, справка откроется). В случае с inetd нужно внести (либо проверить) записи в конфигурационных файлах /etc/inetd.conf и /etc/services. В случае с xinetd (как было у меня на RedHat) нужно создать файл /etc/xinetd.d/ftp (его будет читать демон xinetd) со следующим содержимым:
service ftp
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/kerberos/sbin/ftpd
server_args = -l -l -d
disable = no
>

Немного пояснений. Переменная server_args со значением "-l -l -d" задает подробную запись в syslog процессов подключения к серверу ftp и ошибок. Доступ через аккаунт root будет разрешен с полным доступом во все каталоги (чего не рекомендуется делать, если Вы публикуете сервер ftp в небезопасном окружении). Для более подробной справки по опциям см. man ftpd. Для отключения доступа через root можно применить опцию для ftpd -A или -a, но лучше добавить в файл /etc/ftpusers пользователя root - это гарантированно запретит доступ по ftp от имени пользователя root (у меня по умолчанию этот файл отсутствовал, и я его создал).

Немного пояснений. Пользователь ftp - это псевдопользователь для анонимного доступа. Под этим пользовтелем происходит подключение к ftp-серверу, когда логин при подключении anonymous или ftp, а пароль любой. Обычно вместо пароля предлагается вести имя почтового ящика, но это не всегда обязательное требование - иногда пароль не проверяется, и может даже отсутствовать.

3. Создаем домашний каталог пользователя ftp и стандартную систему папок в этом каталоге.

Немного пояснений. "Домашний" каталог у пользователя ftp указан в 6-м параметре строки описания пользователя ftp (файл /etc/passwd), этот же каталог будет корневым для любого пользователя, анонимно подключившегося к серверу с логином anonymous или ftp. В нашем примере это каталог /var/ftp, далее по тексту он будет фигурировать как каталог

Создаем дерево подкаталогов, в которых будут размещаться некоторые необходимые в работе файлы ftp.

Немного пояснений. FTP-сервер ftpd устроен так, что для навигации клиента ftp по каталогам необходим запуск программы ls. Эта программа, а также используемые ею библиотеки хранятся в критически важных для безопасности сервера местах. Однако запуск программы ls для анонимного пользователя чреват потенциальным взломом, поскольку процесс ftpd выполняется с привелегиями суперпользователя (для доступа к сетевым сокетам). Поэтому идут на специальные ухищрения - создают для анонимного пользователя ftp "песочницу" - отдельную систему каталогов, которая содержит копию программу ls и нужных для работы файлов (каталоги

Поскольку сеанс работы с анонимным FTP-сервером выполняется в изолированной среде выполнения (chrooted environment), то каталог

ftp становится корневым каталогом, а каталоги

ftp/pub маскируются соответственно под /bin, /etc, /lib и /pub. Таким образом, ваш сервис оказывается отрезанным от системных библиотек и прочих “опасных” программ, которые, тем не менее, ему нужны в работе и их требуется предоставить, не нарушая при этом безопасности системы. Какие именно программы и библиотеки необходимы – зависит от того, какой FTP-сервер вы будете использовать, так как у большинства из них свои специфические особенности. Некоторым, например, требуется наличие

ftp/etc/passwd для получения имен владельцев и групп файлов.

Последние 2 файла имеют одинаковый размер, но это ни о чем не говорит. Поэтому лучше, наверное, взять тот файл, что лежит там же, где и ссылка на него, то есть /lib/tls/librt-2.3.4.so. Итак, делаем жесткую ссылку на файл /lib/tls/librt-2.3.4.so и размещаем её в каталоге

Уффф. Готово. После этой мудреной процедуры у нас заработает наконец-то просмотр каталогов ftp-сервера при анонимном подключении (если перегрузить демон xinetd, но пока этого делать не будем).

5. Скопируем файлы /etc/passwd и /etc/group в каталог

ftp/etc, и подправим эти копии.

6. Займемся теперь правами на файлы и каталоги папки

ftp (напоминаю, что у нас эта папка соответствует папке /var/ftp). Владельцем каталога

ftp будет являться пользователь root - именно он, а не ftp. Это нужно для безопасности FTP-сервера и системы в целом. Само собой, пароль пользователя root должен храниться в секрете, и доступ на ftp под пользователем root должен быть запрещен (как я уже говорил, с помощью файла /etc/ftpusers).

Для возможности записи файлов на сервер FTP создадим еще папку

Авторы рекомендуют на все перечисленные выше каталоги разграничить права доступа согласно таблице:
File/Dir Owner Mode

ftp/etc root 555

ftp/bin root 111

ftp/bin/ls root 111

ftp/lib root 111

ftp/etc/passwd root 444

ftp/etc/group root 444

ftp/pub root 755

ftp/pub/incoming root 733

Немного пояснений. При такой системе назначения прав все файлы и каталоги, находящиеся в каталоге

ftp/pub, будут доступны только для чтения. Есть возможность выкачать с клиента на сервер файл в папку

ftp/pub/incoming (и скачать его оттуда, если знать имя), но список папки

ftp/pub/incoming будет недоступен для просмотра. Папки

ftp/lib будут видны, но ни список, ни содержимое недоступны для просмотра. Папка

ftp/etc с файлами passwd и group нужны для перестраховки - чтобы маскировать настоящие файлы /etc/passwd и /etc/group.

Группу, которой принадлежит

ftp/pub, лучше сменить с root на специальную, в которую включены пользователи, имеющие право изменения содержимого этого каталога – этим не стоит заниматься от имени root.

Совет: для предотвращения атаки на ваш сервер через ftp путём переполнения диска информацией с целью заблокировать работу всей системы создавайте каталог

Читайте также: