Linux ftp server: Как создать FTP-сервер в Linux
Как создать FTP-сервер в Linux
Передача файлов в сети осуществляется благодаря правильно настроенному FTP-серверу. Такой протокол работает с применением TCP по архитектуре клиент-сервер и задействует различные сетевые соединения для обеспечения передачи команд между подключенными узлами. Пользователи, которые подключились к определенному хостингу, сталкиваются с надобностью настройки личного FTP-сервера по требованиям компании, предоставляющей услуги обеспечения работы сайта или другого обеспечения. Далее мы продемонстрируем, как создается такой сервер в Linux на примере одной из утилит.
Создаем FTP-сервер в Linux
Сегодня мы будем использовать инструмент под названием VSftpd. Преимущества такого FTP-сервера в том, что он по умолчанию работает на многих ОС, обслуживает официальные репозитории различных дистрибутивов Linux и относительно просто настраивается для корректного функционирования. К слову, на ядре Линукс официально применяется именно этот FTP, и многие хостинги рекомендуют ставить VSftpd. Поэтому давайте обратим внимание на пошаговый процесс инсталляции и настройки необходимых компонентов.
Шаг 1: Установка VSftpd
По умолчанию всех нужных библиотек VSftpd в дистрибутивах не имеется, поэтому их нужно вручную загрузить через консоль. Осуществляется это следующим образом:
- Откройте «Терминал» любым удобным методом, например, через меню.
- Обладателям версий Debian или Ubuntu требуется прописать команду
sudo apt-get install vsftpd
. CentOS, Fedora —yum install vsftpd
, а для Gentoo —emerge vsftpd
. После введения нажмите на Enter, чтобы запустить процесс инсталляции. - Подтвердите наличие прав у своей учетной записи, указав соответствующий пароль.
- Ожидайте завершения добавления новых файлов в систему.
Обращаем внимание обладателей CentOS, которые задействуют выделенный виртуальный сервер от любого хостинга. Вам потребуется произвести обновление модуля ядра ОС, поскольку без этой процедуры во время инсталляции отобразится критическая ошибка. Последовательно вводите такие команды:
yum update
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum install yum-plugin-fastestmirror
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-devel-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-devel-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-doc-3.15.6-1.el7.elrepo.noarch.rpm
yum install kernel-ml-doc-3.15.6-1.el7.elrepo.noarch.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-headers-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-headers-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-tools-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors. neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-tools-libs-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-tools-libs-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-tools-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-tools-libs-devel-3.15.6-1.el7.elrepo.x86_64.rpm
yum install kernel-ml-tools-libs-devel-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/perf-3.15.6-1.el7.elrepo.x86_64.rpm
yum install perf-3.15.6-1.el7.elrepo.x86_64.rpm
wget http://mirrors.neterra.net/elrepo/kernel/el7/x86_64/RPMS/python-perf-3.15.6-1.el7.elrepo.x86_64.rpm
yum install python-perf-3.15.6-1.el7.elrepo.x86_64.rpm
yum --enablerepo=elrepo-kernel install kernel-ml
После окончания всей этой процедуры запустите любым удобным образом конфигурационный файл /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-сервера. Все настройки выполняются сугубо индивидуально по рекомендациям хостинга или собственным предпочтениям. Мы лишь можем показать, как открывается этот файл и каким параметрам обязательно следует уделить внимание.
- В операционных системах Debian или Ubuntu конфигурационный файл запускается так:
sudo nano /etc/vsftpd.conf
. В CentOS и Fedora он находится по пути/etc/vsftpd/vsftpd.conf
, а в Gentoo —/etc/vsftpd/vsftpd.conf. example
. - В консоли или текстовом редакторе отобразится сам файл. Здесь обратите внимание на указанные ниже пункты. В вашем конфигурационном файле они должны иметь такие же значения.
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES - Остальное редактирование осуществляйте сами, а после не забудьте сохранить изменения.
Шаг 3: Добавление пользователя с расширенными правами
Если вы собираетесь работать с FTP-сервером не через свою основную учетную запись или хотите предоставить доступ другим юзерам, созданные профили обязательно должны иметь права суперпользователя, чтобы при обращении к утилите VSftpd не возникало ошибок с отказом в доступе.
- Запустите «Терминал» и введите команду
sudo adduser user1
, где user1 — имя новой учетной записи. - Задайте для него пароль, после чего подтвердите его. Кроме этого, настоятельно рекомендуем запомнить домашний каталог учетной записи, в дальнейшем может понадобиться обращение к нему через консоль.
- Заполните основную информацию — полное имя, номер комнаты, номера телефонов и прочую информацию, если требуется.
- После этого присвойте пользователю расширенные права путем ввода команды
sudo adduser user1 sudo
. - Создайте для юзера отдельную директорию под хранение его файлов через
sudo mkdir /home/user1/files
. - Далее переместитесь в свою домашнюю папку через
cd /home
и там сделайте нового пользователя владельцем своей директории, введяchown root:root /home/user1
. - Перезапустите сервер после осуществления всех изменений
sudo service vsftpd restart
. Только в дистрибутиве Gentoo утилита перезагружается через/etc/init.d/vsftpd restart
.
Теперь вы можете производить все необходимые действия на FTP-сервере от лица нового юзера, который обладает расширенными правами доступа.
Шаг 4: Настройка Firewall (Только для Ubuntu)
Пользователи других дистрибутивов могут смело пропускать этот шаг, поскольку настройка портов нигде больше не требуется, только в Ubuntu. По умолчанию Firewall настроен таким образом, что не пропустит входящий трафик из нужных нам адресов, поэтому потребуется разрешить его прохождение вручную.
- В консоли поочередно активируйте команды
sudo ufw disable
иsudo ufw enable
, чтобы перезапустить Firewall. - Добавьте правила входящих соединений, используя
sudo ufw allow 20/tcp
иsudo ufw allow 21/tcp
. - Проверьте, были ли применены введенные правила, просмотрев статус фаервола
sudo ufw status
.
Отдельно хочется отметить несколько полезных команд:
/etc/init.d/vsftpd start
илиservice vsftpd start
— анализ конфигурационного файла;netstat -tanp | grep LISTEN
— проверка корректности установки FTP-сервера;man vsftpd
— вызов официальной документации VSftpd для поиска необходимой информации касаемо работы утилиты;service vsftpd restart
или/etc/init. d/vsftpd restart
— перезагрузка сервера.
Что касается получения доступа к FTP-серверу и дальнейшей работе с ним, обращайтесь за получением этих данных к представителям своего хостинга. У них же вы сможете уточнить информацию по поводу тонкостей настройки и возникновению различного рода ошибок.
На этом статья подходит к концу. Сегодня мы разобрали процедуру установки сервера VSftpd без привязки к какому-либо хостингу, поэтому учтите это при выполнении наших инструкций и сравнивайте их с теми, что предоставляет компания, содержащая ваш виртуальный сервер. Кроме всего, советуем ознакомиться с другим нашим материалом, в котором разбирается тема установки компонентов LAMP.
Читайте также: Установка набора программ LAMP в Ubuntu
Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ
Файловый сервер на Linux
Чаще всего файловый сервер в Linux используется в рамках локальной или другой общей сети для взаимодействия с компьютерами на базе Windows. Он может быть установлен в дистрибутивах по умолчанию, но это происходит не всегда, к тому же конфигурация такого сервера будет стандартной. Сегодня предлагаем узнать все об инсталляции и основной настройке файлового сервера на примере самой популярной утилиты под названием Samba. Мы разделим это руководство на шаги, чтобы начинающим пользователям было проще ориентироваться во всех необходимых для выполнения действиях.
Устанавливаем и настраиваем файловый сервер в Linux
Хоть сегодняшний материал и будет сосредоточен на управлении дистрибутивами Linux, не обойдем стороной и Виндовс, поскольку для начала вам придется выполнить простейшие манипуляции в этой ОС, чтобы в будущем настройка прошла успешно и не возникло никаких проблем с подключением к группе. За пример мы взяли связку Windows 10 и Ubuntu. Если вы используете другие ОС, просто придерживайтесь особенностей их реализации, которые не должны значительно отличаться от того, что вы увидите далее.
Шаг 1: Предварительная настройка Windows
При подготовке файлового сервера Samba понажобится указать некоторые данные, связанные с операционной системой Windows. Дополнительно в самом Виндовс требуется разрешить подключение для компьютера с Linux, поскольку изначально соединения будут блокироваться. Все эти процедуры выполняются буквально за несколько кликов и выглядят следующим образом:
- Откройте «Пуск» и запустите оттуда «Командную строку», найдя приложение через поиск.
- Здесь вам потребуется ввести простую команду
net config workstation
и нажать на клавишу Enter. - В отобразившемся списке отыщите строку «Домен рабочей станции» и запомните ее значение.
- Снова в консоли введите
notepad C:\Windows\System32\drivers\etc\hosts
для открытия известного файла hosts через стандартный «Блокнот». - Здесь в конце вставьте строку
192.168.0.1 srvr1.domain.com srvr1
, заменив IP на адрес компьютера с Samba, и сохраните все изменения.
На этом работа с Windows заканчивается. После вы сможете вернуться в эту ОС для настройки общего доступа и управления открывшимися папками, но пока это недоступно, поскольку конфигурация файлового сервера в Линукс еще не произведена. Этим мы и предлагаем заняться в следующих шагах.
Шаг 2: Установка Samba в Linux
Начнем с непосредственной установки Samba в Линукс. Использовать для этого мы будем официальные репозитории, поэтому перед началом убедитесь, что подключение к интернету находится в активном состоянии. После этого следуйте расписанной ниже инструкции.
- Откройте меню приложений и запустите «Терминал».
- Здесь потребуется ввести команду
sudo apt-get install -y samba samba-common python-glade2 system-config-samba
. Она отвечает за инсталляцию дополнительных компонентов вместе с файловым сервером. - Подтвердите подлинность учетной записи суперпользователя, написав пароль. Символы, вводимые в эту строку, на экране не отображаются, поэтому не стоит переживать из-за того, что букв или цифр не видно.
- Затем начнется процедура получения и распаковки архивов. Она может занять несколько минут, во время этой операции лучше не выполнять других действий и не закрывать консоль. Если появилась новая строка ввода, значит, инсталляция успешно завершена.
Больше ничего устанавливать не придется, а сервер будет запущен автоматически, поэтому можно смело переходить к его настройке, чему и посвящены наши следующие шаги.
Шаг 3: Создание глобальных настроек
Сразу же после инсталляции Samba в ней не будет никаких параметров, отвечающих за поведение, поэтому придется добавлять их собственноручно, вводя строки в конфигурационный файл. Неопытным юзерам может показаться, что выполнить эту задачу будет очень сложно. Мы же предлагаем взять наш шаблон, заменив лишь пользовательские значения.
- Иногда какие-то важные параметры в конфигурационном файле все же присутствуют по умолчанию, из-за чего возникает надобность создать его резервную копию, чтобы восстановить ее при возникновении случайных сбоев. Осуществляется это путем ввода всего одной команды
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
. - Все остальные действия будут производиться через текстовый редактор. Оптимальным вариантом в этом случае является nano. Если данное приложение отсутствует в вашем дистрибутиве, добавьте его через
sudo apt install nano
. - После переходите к конфигурационному файлу, используя
sudo nano /etc/samba/smb.conf
. - В открывшемся окне вставьте приведенные ниже строки.
[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
netbios name = Ubuntu Share
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
passdb backend = tdbsam
unix password sync = yes
passwd program = /usr/bin/passwd %u
pam password change = yes
map to guest = bad user
usershare allow guests = yes - Используйте комбинацию Ctrl + O, чтобы сохранить изменения.
- Название файла менять не нужно, достаточно будет просто нажать на клавишу Enter.
- По завершении выйдите из текстового редактора, зажав Ctrl + X.
Теперь давайте более детально остановимся на каждой из введенных строк, чтобы вы в будущем смогли настроить их под себя:
- workgroup — отвечает за имя рабочей группы. Ее мы уже узнавали в Windows, и здесь требуется задать точно такое же название, поскольку оно должно быть одинаковым абсолютно на всех соединенных устройствах.
- netbios name — используется для отображения имени текущего компьютера на устройстве под управлением Windows. Задайте оптимальное для себя значение.
- log file — указывается путь к файлу, куда будут сохраняться отчеты. Создать подобную запись нужно обязательно, чтобы всегда быть в курсе возможных ошибок и других сведений.
- passdb backend — определяет способ хранения паролей учетных записей. Без надобности лучше не изменять и оставить в состоянии по умолчанию.
- unix password sync — при активации выполняет синхронизацию паролей.
- map to guest — отвечает за предоставление гостевого уровня доступа определенным профилям. Если значение установлено в состояние
bad user
, то такая настройка применяется для несуществующих пользователей,bad password
— при неправильном вводе паролей, аnever
— никогда.
На самом деле в Samba присутствует еще множество глобальных параметров, а также реализован графический интерфейс. Если вы заинтересовались всеми этими настройками, советуем обратиться к официальной документации, чтобы узнать о них более детально, поскольку все сведения не уместятся в рамках данной статьи, а также не все они
Настройка FTP в CentOS 8
FTP (File Transfer Protocol) — это клиент-серверный сетевой протокол, позволяющий пользователям передавать файлы в удаленную сеть и скачивать их из нее. Для систем на базе Linux разработано несколько FTP-серверов с открытым исходным кодом. Наиболее популярные из них — PureFTPd, ProFTPD и vsftpd.
В этой статье мы разберемся как установить FTP CentOS 8 на примере vsftpd. Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, настройку vsftpd, чтобы ограничить пользователей их домашним каталогом и шифровать все передачи с использованием SSL/TLS.
Содержание статьи:
Установка FTP сервера CentOS
Для более безопасной и быстрой передачи данных используйте SCP или SFTP. Внимание! Все команды необходимо выполнять от имени пользователя sudo.
sudo su
Пакет vsftpd доступен по умолчанию в репозиториях CentOS. Для его установки, выполните следующую команду:
yum install vsftpd
Установка FTP CentOS завершена, далее надо запустить службу vsftpd и поместить ее в автозагрузку:
systemctl start vsftpd
systemctl enable vsftpd
Теперь проверим успешность запуска службы vsftpd набрав команду:
systemctl status vsftpd
Вывод команды представлен на рисунке ниже:
Настройка vsftpd на CentOS
Настройка vsftp CentOS 8 производится редактированием конфигурационного файла /etc/vsftpd/vsftpd. conf. Основные параметры хорошо задокументированы в файле конфигурации. Все доступные варианты конфигураций можно найти на официальном сайте vsftpd.
В статье мы рассмотрим некоторые важные аспекты, необходимые для настройки и безопасной установки vsftpd. Для начала откройте конфигурационный файл vsftpd:
sudo nano /etc/vsftpd/vsftpd.conf
1. Доступ по FTP
Мы разрешим только локальным пользователям доступ к FTP-серверу. Для этого найдем следующие параметры убедимся, что их значения соответствуют строкам ниже:
anonymous_enable=NO
local_enable=YES
Раскомментируйте параметр write_enable для того, чтобы разрешить вносить изменения в файловую систему, такие как загрузка и удаление файлов:
write_enable=YES
2. Включение chroot
Запретим пользователям, работающим по FTP, доступ к файлам вне их домашнего каталога, раскомментировав параметр chroot:
chroot_local_user=YES
По умолчанию, когда chroot включен, vsftpd откажется загружать файлы, даже если каталог, в которым ограничен пользователь, доступен для записи. Это сделано для предотвращения нарушений безопасности.
Используйте один из следующих способов для включения загрузки chroot.
Способ 1. Рекомендуемый способ разрешить загрузку — оставить chroot включенным и настроить каталоги FTP. По этому способу мы создадим каталог ftp на домашнем каталоге пользователя, который будет служить chroot и записываемым каталогом для загрузки файлов.
user_sub_token=$USER
local_root=/home/$USER/ftp
Способ 2. Другой вариант — добавить следующий параметр в файл конфигурации vsftpd. Используйте этот параметр, если вы хотите предоставить пользователям права на запись в их домашнюю директорию.
allow_writeable_chroot=YES
3. Пассивные FTP соединения
Сервер vsftpd может использовать любой порт для пассивных FTP-соединений. Мы определим диапазон портов используемый для соединений, а затем откроем их в нашем брандмауэре. Добавьте следующие строки в файл конфигурации:
pasv_min_port=30000
pasv_max_port=31000
4. Ограничение входа пользователей
Чтобы разрешить доступ к FTP-серверу только определенным пользователям, добавьте после строки userlist_enable = YES следующие строки:
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
Если этот параметр активен, то вам нужно явно перечислить, какие пользователи могут входить в систему, указав имена пользователей в файле находящемся по пути /etc/vsftpd/user_list (по одному пользователю на каждую новую строку).
5. Настройка SSL / TLS
Для обеспечения безопасности передачи файлов применяют шифрование FTP-передачи с использованием SSL / TLS. Осуществляя настройку шифрования вам необходимо иметь SSL-сертификат и настроить FTP-сервер для его использования.
Вы можете использовать как существующий сертификат SSL, подписанный доверенным корневым центром сертификации, или же создать самоподписный сертификат на вашем сервере. Команда, приведенная ниже, создаст 2048-битный закрытый ключ и самоподписный сертификат, который будет действовать в течение 10 лет.
Закрытый ключ и сертификат будут сохранены в одном файле:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
После создания SSL сертификата откройте файл конфигурации vsftpd:
sudo nano /etc/vsftpd/vsftpd.conf
Добавьте строки rsa_cert_file и rsa_private_key_file и укажите в их значениях pam на путь к созданному файлу сертификата. Затем добавьте строку ssl_enable установив для нее значение YES:
rsa_cert_file=/etc/vsftpd/vsftpd.pemrsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES
После произведенной настройки, если не указано иное, FTP-сервер всегда будет использовать TLS для установления защищенных соединений с клиентом. Перезапустите службу vsftpd.
После внесения всех изменений, за исключением комментариев, вы должны получить файл конфигурации vsftpd примерно следующего содержания:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd. pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES
Выйдете из редактора подтвердив сохранение файла конфигурации и перезапустите службу vsftpd, чтобы применить изменения выполнив следующую команду:
sudo systemctl restart vsftpd
6. Открытие портов брандмауэра
Если вы используете брандмауэр, вам нужно разрешить FTP-трафик открыв порт 21 (порт команд FTP), порт 20 (порт данных FTP) и 30000-31000 (диапазон пассивных портов), набрав следующие команды:
sudo firewall-cmd --permanent --add-port=20-21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
Для применения изменений потребуется перезапуск брандмауэра:
firewall-cmd --reload
Настройка ftp CentOS практически завершена.
7. Создание пользователя FTP
Пришло время протестировать наш FTP-сервер создав нового пользователя.
- Если у вас уже есть пользователь, которому вы хотите предоставить доступ по FTP, пропустите первую команду.
- Если вы установили allow_writeable_chroot = YES в своем файле конфигурации, пропустите третью команду.
Чтобы создать ftp пользователя centos 8 с именем newftpuser выполните:
sudo adduser newftpuser
Добавим пользователя в список разрешенных пользователей FTP:
echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list
Создадим каталоги FTP и установим для них правильные разрешения:
sudo mkdir -p /home/newftpuser/ftp/upload
sudo chmod 550 /home/newftpuser/ftp
sudo chmod 750 /home/newftpuser/ftp/upload
sudo chown -R newftpuser: /home/newftpuser/ftp
Как писалось в предыдущем разделе, пользователь сможет загружать свои файлы в каталог ftp/upload. На этом этапе мы полностью настроили FTP-сервер, и вы, используя любой FTP-клиент настроенный на использование шифрования TLS, сможете подключиться к вашему серверу.
8. Отключение доступа к SSH
По умолчанию при создании у нового пользователя, если это не указывалось явно, появляется SSH-доступ к серверу. Чтобы отключить доступ по SSH, создадим новую оболочку, которая просто будет показывать сообщение, уведомляющее пользователя о том, что его учетная запись ограничена только FTP доступом.
Наберите следующие команды, для создания /bin/ftponly оболочки и назначения ее исполняемой по умолчанию:
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
Затем добавьте новую оболочку в список допустимых оболочек в файле /etc/shells :
echo "/bin/ftponly" | sudo tee -a /etc/shells
Теперь измените оболочку пользователя по умолчанию на /bin/ftponly:
sudo usermod newftpuser -s /bin/ftponly
Используйте ту же команду, чтобы изменить оболочку для всех пользователей, которым вы хотите предоставить только FTP доступ.
Заключение
Из нашей статьи вы смогли узнать, как легко и быстро выполняется установка и настройка ftp centos 8. Это популярный, быстрый и безопасный FTP-сервер для вашей системы под управлением CentOS 8. Спасибо за прочтение.
Установка и настройка FTP-сервер в Linux » PCmodern.ru
Что такое FTP и vsFTPd
File Transfer Protocol — это технология передачи данных по сети. FTP уже не так популярен, как на заре интернета, но все еще используется. Причем в локальных сетях довольно часто, так как это простой способ организовать большое количество файлов и предоставить пользователям доступ к ним.
vsFTPd — это дополнительный инструмент, который расширяет возможности FTP-протокола. По сути, он является полноценным сервером, который используется в Linux по умолчанию, славится высокой надежностью и большим количество функций.
vsFTPd работает с виртуальными пользователями и IP-адресами. В нем есть возможность настраивать отдельные правила для пользователей. Продукт активно поддерживается сообществом. В vsFTPd есть возможность подключить SSL-шифрование данных и так далее.
Устанавливаем vsFTPd
vsFTPd есть во всех популярных репозиториях, поэтому его легко загрузить в любой дистрибутив. Вот как это делается в Ubuntu и ей подобных системах (Linux Mint, Debian, Elementary OS).
- Открываем терминал. Это можно сделать, одновременно нажав клавиши Ctrl + Alt + T.
- Вводим туда команду sudo apt-get install vsftpd и нажимаем клавишу «Ввод» (Enter).
Устанавливаем vsFTPd с помощью стандартного менеджера пакетов.
- Затем вводим пароль администратора, чтобы продолжить установку.
Возможно, придется подтвердить установку клиента, нажав на клавишу «Д» (или Y в английской версии системы).
Учтите, что во время набора пароля, вводимые символы никак не отображаются в терминале. Придется набирать вслепую
На этом все.
Для тестирования соединения можно установить стандартный FTP-сервер. Чтобы это сделать, открываем терминал и вводим в него команду sudo apt-get install ftp.
Это необязательно.
Установка vsFTPd в другие операционные системы
В разных дистрибутивах используются разные менеджеры пакетов, поэтому придется скорректировать команду под свой вариант Linux. Например:
Для Fedora — sudo dnf install vsftpd, openSUSE — sudo zypper install vsftpd, CentOS — sudo yum install vsftpd, Arch Linux — pacman -S vsftpd, Gentoo — emege vsftpd.
Чтобы установить vsFTPd в дистрибутив, не указанный в списке, нужно выяснить, какой менеджер пакетов там используется и подставить его в команду sudo название менеджера пакетов install vsftpd. Либо найти исходный код утилиты и собрать его вручную локально.
Настраиваем FTP-сервер
Перед тем как начать настройку, можно ознакомиться с файлом-инструкцией. В vsFTPd встроено большое удобное руководство по базовой настройке и запуску сервера. Оно открывается командой man vsftpd.conf Это на тот случай, если вы дружите с английским и хотите провести более тонкую настройку под свои нужды. В ином случае продолжайте читать дальше…
Все параметры FTP-сервера хранятся в одном конфигурационном файле. Он называется vsftpd.conf и в зависимости от системы может храниться либо в папке /etc/vsftpd/, либо просто в /etc/.
Например, чтобы получить доступ к настройкам в CentOS, введем в терминале sudoedit /etc/vsftpd/vsftpd.conf. А в Debian и Ubuntu — sudoedit /etc/vsftpd.conf.
sudoedit — это запуск стандартного текстового редактора от имени администратора. При желании вы можете указать любой другой инструмент. Например, vi.
Это инструкция к vsFTPd.
Запуск FTP-сервера
Вообще, vsFTPd запускается автоматически, и его работоспособность легко проверить. Просто открываем браузер и переходим по ссылке ftp://192.0.0.1. Это локальный адрес, на котором работает ваш сервер.
Вот как выглядит наш FTP-сервер в браузере.
Чтобы запустить vsFTPd, нужно ввести в терминал команду systemctl start vsftpd.
Настройка анонимного доступа
Режим анонимного доступа позволяет подключаться к FTP-серверу без авторизации. Правда, подключиться к нему можно только от лица единственного пользователя (по умолчанию речь идет о пользователе ftp).
При этом автоматически устанавливается и папка, доступ к которой будет открыт через FTP-сервер. По умолчанию vsFTPd открывает доступ к директории /srv/ftp. Выбор падает именно на эту папку, потому что это домашняя директория пользователя ftp. Если ее изменить, то и данные на сервере тоже изменятся.
Чтобы включить анонимный доступ в vsFTPd, надо открыть конфигурационный файл, найти там директиву anonymous_enable=NO и заменить NO на YES.
Теперь вы можете сами подключиться к своему FTP-серверу и проверить, что он работает без авторизации.
Настройки FTP.
Настройка авторизованного доступа
Режим авторизованного доступа дает больше возможностей. Пока он включен, к FTP-серверу может подключиться любой пользователь, который может войти в систему. Проще говоря, если удаленным компьютером на базе Linux пользуется группа людей, то все они смогут подключаться к FTP-серверу от своего имени, а не от имени ftp.
Включается этот режим довольно просто.
- Открываем конфигурационный файл.
- Ищем внутри директиву local_enable=NO_ и меняем NO на YES.
- Потом то же самое делаем с директивой write_enable=NO (это чтобы люди могли не только скачивать файлы, но и загружать).
Теперь при попытке войти на FTP-сервер пользователи натолкнутся на окошко, запрашивающее логин и пароль. Собственно, логин — имя пользователя, а пароль — тот пароль, что используется для входа в систему.
Еще настройки.
Важно отметить, что любые изменения в файле vsftpd.conf вступают в силу только после перезагрузки сервера. Поэтому не забывайте после внесения корректировок перезагружать vsFTPd командой systemctl restart vsftpd. Для этого нужны будут права администратора, запустившего FTP-сервер или права суперпользователя.
Дополнительные настройки и возможности
Теперь, когда у нас уже есть рабочий FTP-сервер, можно ознакомиться с дополнительными параметрами. Во-первых, узнаем команды для управления сервером. Во-вторых, настроим шифрование. В-третьих, уберем блокировку Firewall, если таковая имеется.
Управление FTP-сервером
Вообще для работы с vsFTPd достаточно пары команды:
- Чтобы проверить статус FTP-сервера (включен ли он и как работает), используем команду systemctl status vsftpd (или service vsftpd status)
Вот что выдается по запросу systemctl status vsftpd
- Для запуска команду systemctl start vsftpd (или service vsftpd start).
- Для перезапуска — systemctl restart vsftpd (или service vsftpd restart).
- Чтобы выключить сервер, используем systemctl stop vsftpd (или __ service vsftpd stop). Чтобы добавить vsFTPd в автозагрузку (то есть заставить FTP-сервер запускаться вместе с системой), вводим в терминал команду systemctl enable vsftpd__ (или service vsftpd enable).
Вот как это выглядит на практике.
Все действия с vsFTPd нужно подтверждать паролем суперпользователя или администратора.
Вот такой запрос будет появляться при попытке взаимодействовать с vsFTPd.
Настройки шифрования
Включить шифрование данных в vsFTPd не сложно. Просто:
- Открываем конфигурационный файл командой sudoedit /etc/vsftpd/vsftpd.conf.
- Ищем внутри директиву ssl_enable=NO_.
- Заменяем NO на YES.
Вот и все.
Сложность заключается в том, что нужно сгенерировать SSL-ключи и сертификаты для конкретного сервера и разместить их в директориях, которые указаны в параметрах vsFTPd (либо указать путь к другим сертификатам и ключу). Речь идет о строках:
rsa_cert_file=/etc/ssl/certs/ssl-cert.pem rsa_private_key_file=/etc/ssl/private/ssl-cert.key
Настройка Firewall
В некоторых дистрибутивах (в частности, серверных) работает Firewall. Это механизм защиты от несанкционированных входящих и исходящих подключений. Он обычно блокирует некоторые порты, по которым программы подключаются к удаленному ресурсу, чтобы избежать утечки данных.
В Ubuntu, к примеру, используется Firewall ufw, который по умолчанию блокирует подключение к портам 21 и 20. А без них FTP-сервер запустить не получится. Так что придется их сначала разрешить. Для этого:
- Открываем терминал.
- Вводим в него команду sudo ufw disable, чтобы выключить Firewall.
- Затем снова включаем его командой sudo ufw enable.
Перезагрузимся перед настройкой.
- Потом добавляем в список исключений подключение по порту 20. Для этого введем в командную строку sudo ufw allow 20/tcp.
Добавили первый…
- И то же самое проделываем с портом 21. Команда sudo ufw allow 21/tcp.
…и второй.
Потом снова перезагружаем Firewall и FTP-сервер.
Источник: httрs://tеhnichка.рrо/install-ftp-server-linux/
FTP-сервер Linux Настройка
SSH FTP (SFTP) instead/вместо FTP / Хабр
Недавно передо мной предстала задача организовать доступ к файлам сервера. Точнее доступ был, но по каким-то причинам FTP сервер перестал работать. Разбираться в причинах было лень, и тем более, давно хотелось заменить протокол FTP чем нибудь по надёжнее.
Вам, Уважаемое хабрасообщество, да будет известно, что FTP передаёт данные в не шифрованном виде. И нам, параноикам мира сего, немного сцыкотно страшно за сервер наш и данные на нём хранящиеся.
По этому решил полностью отказаться от FTP в пользу SFTP. Я использую Ubuntu Server, и по умолчанию установленный в нём OpenSSH, также мне известно, что он поддерживает SFTP из коробки, поэтому задача казалась мне крайне простой и я быстро приступил к воплощению её в жизнь. С той же скоростью, с которой выполнялась задача, я столкнулся с досадным фактом того, что OpenSSH по умолчанию даёт пользователю доступ ко всей файловой системе, то есть к / — корню.
Данный факт меня, и я думаю Вас, устраивать не будет. То есть с одной стороны, вроде бы ничего страшного, ведь есть права доступа которые не дадут ему, пользователю, просто так писать где ни попади. Но в целях безопасности и этого пряника у него быть не должно.
Тут я подробно расскажу как тюнинговать OpenSSH сервер в Ubuntu Linux для того что бы chroot-нуть пользователя в необходимом нам каталоге.
Почему я говорю тюниговать?
— Да просто по тому, что, как я уже сказал, для работы SFTP достаточно всего лишь выполнить:
sudo aptitude install openssh-server
Что приведёт к установке и запуску сервера, а также откроет, по умолчанию, 22 порт. Осуществив соединение на который, при помощи, например Filezilla, можно получить доступ к файловой системе удалённого компьютера/сервера по ШИФРОВАННОМУ протоколу.
Но как я уже намекнул, настройки «по умолчанию» нас не устраивают.
Поэтому открываем файл настройки OpenSSH сервера sudo mcedit1 /etc/ssh/sshd_config
и кое-что там изменяем/добавляем.
Находим опцию Subsystem
и придаём ей следующий вид:
Subsystem sftp internal-sftp
Плюс добавляем следующие опции:
Match User test
ChrootDirectory %h
ForceCommand internal-sftp
Теперь перезапускаем OpenSSH sudo service ssh restart
и вроде бы готово.
Game Over?
— NO!
Как Вы наверное уже догадались, право входа в систему по протоколу SFTP будут иметь пользователи которые имеют системные2 учётные записи. Поэтому необходимо создать учётную запись, под которой будут осуществляться манипуляции с файлами. Поскольку выше было написано Match User test
создавать необходимо учётную запись пользователя test.
adduser test
Создается пользователь, задаётся пароль, домашний каталог по умолчанию — /home/test
…
Теперь можно попробовать соединиться с сервером, и передать файлы. Предварительно заходим в логи, что бы наблюдать за процессом…tail -f /var/log/auth.log
timestamp host sshd[2558]: Accepted password for test from IP_адрес port 59667 ssh3
timestamp host sshd[2558]: pam_unix(sshd:session): session opened for user test by (uid=0)
timestamp host sshd[2596]: fatal: bad ownership or modes for chroot directory "/home/test"
timestamp host sshd[2558]: pam_unix(sshd:session): session closed for user test
Как видите, в логах написано:
— сессия открыта для пользователя test используя UID=0, то есть идентификатор пользователя root
— неправильные права собственности для того, что бы chroot-нуться в /home/test
Всё дело в том, что для каталога /home/test
необходимо назначить владельцем пользователя root, что мы и делаем:sudo chown root /home/test
Подключается и наблюдаем в логах:timestamp host sshd[2630]: Accepted password for test from IP_адрес port 50152 ssh3
timestamp host sshd[2630]: pam_unix(sshd:session): session opened for user test by (uid=0)
timestamp host sshd[2669]: subsystem request for sftp
Mission complete
Подробности
В настройках OpenSSH мы описывали опцию Match User test, что само собой означает доступ отдельного, конкретного пользователя!
— А если таковых много?
Описание каждого пользователя — как минимум не кошерно… Короче, я хочу рассказать про то, что можно задействовать группы пользователей используя Match Group.
И тогда конфиг может выглядеть приблизительно так:
Match Group sites
ChrootDirectory /srv/www%h
ForceCommand internal-sftp
А учётные записи пользователей в /etc/passwd
так:<output omitted>
site1:x:5000:10003::/example.com/:/bin/false
site2:x:5001:1000::/example.org/:/bin/false
site3:x:5002:1000::/example.net/:/bin/false
<output omitted>
Как видно из примера, у пользователей относительный домашний каталог, то есть в корне / нет каталогов /example.com/
и т.д.
Эти каталоги есть в /srv/www/
и OpenSSH должен отработать следующим образом:
— Домашний каталог пользователя, из /etc/passwd
добавить к /srv/www
и в итоге получить /srv/www/example.com
и т.д.
Не забываем, что владельцем каталога в который будут chroot-иться пользователи должен быть root. Группой владельцев, необходимо поставить sites и разрешить полный доступ.
Также рекомендуется в качестве shell-а пользователя ставить /bin/false, что бы предотвратить доступ пользователя к командной строке.
Пояснения:
1 - mcedit - Мой любимый текстовый редактор.
2 - системные учётные записи - читать как: Созданные в системе пользователи.
3 - 1000 - всего лишь пример идентификатора группы sites.
1 - mcedit - Мой любимый текстовый редактор.
2 - системные учётные записи - читать как: Созданные в системе пользователи.
3 - 1000 - всего лишь пример идентификатора группы sites.
Mission Complete & Game Over
Настраиваем FTP-сервер с виртуальными пользователями на базе vsftpd
Протокол FTP, несмотря на преклонный возраст и серьезные недостатки продолжает широко применяться, во многом благодаря простоте и поддержке со стороны самого широкого спектра устройств и ПО. FTP-сервер является неотъемлемой частью любого веб-сервера, применяется в системах автоматизированного обмена данными. Наиболее часто встающей перед администраторами таких систем задачей является создание сервера с виртуальными пользователями. Сегодня мы расскажем, как это сделать.
Про настройку FTP-сервера на базе vsftpd мы уже рассказывали на страницах нашего сайта, недавно существенно дополнив и обновив статью Простой FTP-сервер на базе Ubuntu (vsftpd). В ней мы рассказали каким образом можно ограничить список пользователей, имеющих возможность подключаться к серверу, и их права. Однако локальные пользователи остаются при этом локальными пользователями и несмотря на ограниченные права могут оказаться объектом атаки, направленной на повышение прав, например, через уязвимости в каком-либо ПО.
Кроме того, ручное редактирование списков и настроек пользователей может оказаться весьма трудоемким делом если их не один-два, а существенно больше. Также иногда возникает ситуация, что светить данные реальных пользователей просто нежелательно, например, FTP используется движком сайта (CMS), связка пользователь-пароль явно прописана в конфиге и теоретически доступна любому работающему с сайтом сотруднику.
В таких ситуациях следует использовать виртуального пользователя, который будет иметь доступ исключительно к данному FTP-ресурсу и учетные данные которого можно смело сообщить всем принимающих участие в работе реальным сотрудникам.
В нашей статье мы настроим FTP-сервер для реализации следующей схемы:
Пусть в нашем распоряжении имеется некий веб-сервер под управлением которого находятся три сайта: blue.lab, green.lab и red.lab, физически расположенные в одноименных директориях. Наша задача создать FTP-сервер с виртуальными пользователями, каждый из которых имеет доступ только к своему сайту.
Важное замечание, в данной схеме все сайты должны работать от имени веб-сервера (www-data), если вы используете запуск каждого сайта от имени своего (реального) пользователя, то вам лучше настроить FTP-сервер для работы с реальными пользователями или дополнительно обеспечить нужные права доступа для виртуальных пользователей, что может представлять из себя нетривиальную задачу.
Прежде всего установим соглашение: имя виртуального пользователя должно совпадать и именем корневой FTP-папки, в нашем случае папки сайта, а все такие папки должны располагаться в одном месте, т.е. подпадать под шаблон /var/www/$USER. Это позволит в дальнейшем с легкостью манипулировать сайтами и виртуальными пользователями, а также избежать путаницы в именах и настройках.
Определившись с моделью размещения данных можно переходить к настройкам ПО. Кроме vsftpd нам понадобятся пакеты libpam-pwdfile и apache2-utils. Последний входит в состав одноименного веб-сервера и если у вас уже работает Apache, то устанавливать его не надо.
Сама установка предельно проста:
apt-get install vsftpd libpam-pwdfile apache2-utils
После чего перейдем к настройкам FTP-сервера, которые расположены в файле /etc/vsftpd.conf, мы перечислим опции в порядке их нахождения в файле.
Данная опция запускает FTP-сервер как службу
listen=YES
ниже имеется аналогичная взаимоисключающая опция:
listen_ipv6=NO
Первая из них обеспечивает поддержку IPv4, вторая сразу IPv6 и IPv4, поэтому должна быть включена только одна из них.
Запрещаем анонимных пользователей:
anonymous_enable=NO
И разрешаем локальных (и виртуальных) пользователей:
local_enable=YES
Также разрешаем запись:
write_enable=YES
и задаем маску для вновь создаваемых файлов и папок:
local_umask=022
Это обеспечит установку прав 755 на папки и 644 на файлы, т.е. полный доступ только владельцу и чтение для группы и остальных.
Чтобы FTP использовал локальное время сервера, а не GMT установим:
use_localtime=YES
И включим лог загружаемых и скачиваемых файлов:
xferlog_enable=YES
Разрешаем передачу данных через порт 20, требуется для лучшей совместимости с некоторыми клиентами:
connect_from_port_20=YES
Задаем путь к логу и его формат:
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
Укажем таймауты:
idle_session_timeout=600
data_connection_timeout=120
Первый задает время отключения бездействующего пользователя, а второй время ожидания возобновления неоконченной передачи.
Для корректной работы с текстовыми данными, в частности с символами переноса строки в разных ОС (CR+LF в Windows, LF в Linux) включим поддержку ASCII, это полезно, если вы скачиваете скрипты или файлы с Linux сервера, правите их в среде Windows и заливаете обратно. В этом случае FTP автоматически будет менять символы переноса строки для соответствия стандартам системы.
ascii_upload_enable=YES
ascii_download_enable=YES
Обязательно изолируем пользователя в корне его домашней директории и рядом впишем опцию, разрешающую запись в корень:
chroot_local_user=YES
allow_writeable_chroot=YES
Остальные опции оставляем без изменения.
Ниже добавим необходимые нам настройки. Разрешим пассивный режим и явно укажем диапазон портов:
pasv_enable=YES
pasv_min_port=62000
pasv_max_port=62999
Включим виртуальных пользователей:
guest_enable=YES
Укажем от имени какого реального пользователя они будут работать, так как в нашем случае нам надо работать с содержимым веб-сервера, то указываем соответствующего пользователя www-data.
guest_username=www-data
Применяем к виртуальным пользователям настройки локальных, иначе к ним будут применены ограничения анонимных.
virtual_use_local_privs=YES
Укажем шаблон для автоматической генерации домашнего каталога виртуального пользователя:
user_sub_token=$USER
Теперь можно задать сами домашние директории
local_root=/var/www/$USER
Также иногда неплохо будет скрыть реальных владельцев содержимого, для этого добавьте:
hide_ids=YES
Если вы используете Ubuntu, то добавьте следующую недокументированную опцию:
seccomp_sandbox=NO
Это позволит избежать ошибки 500 OOPS: prctl PR_SET_SECCOMP failed, которая возникает из некорректной совместной работы vsftpd и системы безопасности seccomp, в Debian данная ошибка не проявляется.
На этом настройка FTP-сервера закончена, сохраняем файл и переходим к настройке правил аутентификации. Откроем /etc/pam.d/vsftpd, закомментируем в нем все строки и добавим две свои:
auth required pam_pwdfile.so pwdfile /etc/vsftpwd
account required pam_permit.so
После этого аутентификация локальных пользователей на FTP-сервере будет невозможна, работать будут только виртуальные. Опция pwdfile /etc/vsftpwd указывает путь к файлу паролей, его нам необходимо будет создать на следующем шаге.
Для создания пользователей будем использовать утилиту htpasswd из состава apache2-utils, для создания файла паролей и первого пользователя введите:
htpasswd -c -d /etc/vsftpwd blue.lab
Ключ -c предписывает создать файл паролей, если он существует, то все данные в нем будут очищены, а файл перезаписан, -d задает необходимый для vsftpd алгоритм шифрования хэша пароля.
Следующие пользователи создаются командой (в нашем примере это пользователь green.lab):
htpasswd -d /etc/vsftpwd green.lab
Для удаления пользователя используйте (удаляем red.lab):
htpasswd -D /etc/vsftpwd red.lab
После чего можно перезапустить службу FTP-сервера и проверить его работу:
service vsftpd restart
Как видим, настроить FTP-сервер с виртуальными пользователями по нашей инструкции (в отличие от многих иных «инструкций» в сети) абсолютно несложно и недолго. Если вы будете внимательно следовать всем нашим рекомендациям, то сложностей у вас возникнуть не должно.
Linux FTP-сервер Kurulumu ve Ayarları
Протокол передачи файлов (FTP) использует Linux, чтобы получить доступ к передаче данных. Özellikle Linux Sunucularda kullanmayı daha cazip hale getiriyor.
FTP nedir sorusu ile ilgili çok fazla kaynak bulabileceğiniz için ben hemen kurulum işlemlerine geçiyorum. Kurulum aşamalarını Ubuntu 19.10 üzerinden ilerleteceğim fakat diğer Linux dağıtımları üzerinde de kurulum işlemleri çok benzer, komutlarda birkaç ufak değişiklik söz konusu olabilir, bu durumu unutmamanızda fay.
1. vsftpd Курулуму
SSH ile sunucuya bağlandıktan sonra — Putty uygulamasını kullanabilirsiniz — aşağıdaki komutları çalıştırarak ilerliyoruz. Шпаклевка ile kopyaladığınız bir metni konsola yapıştırmak için mouseunuzun sağ tuşuna basmanız yeterli.
sudo apt update && sudo apt install vsftpd
sudo apt update && sudo apt install vsftpd |
Yukarıda && ile ayrılmış iki bölümlü komut bulunmakta.İlk kısım sunucumuzda ки paketleri bağımlılıkları ile birlikte güncellemeyi ikinci alandaki komut ise FTP bağlantısı için gerekli olan vsftpd kurulumunu yapmamızı sağlıyor.
Bu komutu çalıştırdıktan sonra FTP kurulumu gerçekleşti ve sunucumuzda aktif hale geldi. Eğer FTP balantı durumunuzu kontrol etmek isterseniz;
sudo service vsftpd статус
sudo service vsftpd статус |
Бу işlemin ardından aşağıdakine benzer bir çıktı ile karşılaşacaksınız.
Eğer FTP durumunuz aktif gözükmüyor ise aşağıdaki kodu çalıştırarak kendiniz aktif edebilirsiniz.
sudo service vsftpd start
служба sudo vsftpd start |
2. Güvenlik Duvarı (Межсетевой экран) Yapılandırma
FTP kurulumunu gerçekleştirdikten sonra eğer daha önce yapmadıysak güvenlik duvarını yapılandırmamız gerekiyor.
Firewall etkinleştirmeden önce ilk etapta SSH işlemine izin vermemiz gerekiyor, eğer bu adımı atlayarak ufw etkinleştirmesini gerçekleştirirsek sunucumuza uzaktan bağellemizızı eng. Bu yüzden bu adım son derece önemli!
openSSH izninin ardından şimdi belirli port numaralarına izin vermemiz gerekiyor. Ее satırı ayrı bir komut olarak çalıştırın.
sudo ufw разрешить 20 / tcp
sudo ufw разрешить 21 / tcp
sudo ufw разрешить 40000: 50000 / tcp
sudo ufw разрешить 990 / tcp
sudo ufw allow 20 / tcp sudo ufw allow 21 / tcp sudo ufw allow 40000: 50000 / tcp sudo ufw allow 990 / tcp |
Bu işlemlerin ardından Firewall yapılandırma işlemini tamamlamış olduk, artık Firewall’ımızı aktif duruma getirebiliriz.
Bu komuttan sonra eğer güvenlik durumunu kontrol etmek isterseniz;
komutunu çalıştırabilirsiniz. Бу komuttan sonra aşağıdakine benzer bir çıktı ile karşılaşacaksınız.
3. FTP Kullanıcısı Oluşturma
FTP hesabına bağlanmak amacı ile корень hesabını kullanamıyoruz. Bu sebeple FTP bağlantısı için farklı bir hesap oluşturmamız gerekiyor.
ftpusername kısmını kendinize göre değiştirebilirsiniz.
Бу komut ile beraber sizden hesabınız için şifre oluşturmanız istenecek ardından kişisel bilgileriniz sorulabilir, eğer bu bilgileri paylaşmak istemiyorsanız boş bırakıirsıçıçıçezlızızızıı.
Artık yeni bir kullanıcı oluşturduk.Bu kullanıcı FTP bağlantısı yapabileceği gibi şuan SSH içinde butki sahibi.Eğer yeni oluşturduunuz hesabın SSH butkisakini isterizırm; aşağıdaki komut ile SSHD config dosyasını düzenleyebilirsiniz.
Судо нано / и т.д. / SSH / sshd_config
Судо нано / etc / ssh / sshd_config |
Dosyayı açtıktan sonra aşağıdaki komutu dosyanın en sonuna yapıştırabilirsiniz. Dosyadaki değişiklikleri kaydetmek için CTRL + X ardından Y tuşuna basabilirsiniz.
Бу işlemin ardından yeni hesabımız sadece FTP ile sunucumuza bağlanacak şekilde sınırlandırdık yani SSH bağlantısı için artık bu hesabı kullanamayız.
4. Досья Изинлерини Хазирлама
FTP kullanıcısını oluşturduk, artık kullanıcının Hangi klasörlere erişebileceğini ve dosya yükleyebileceğini ayarlamamız gerekiyor. Aksi taktirde şuan FTP ile bağlanmaya çalışırsanız herhangi bir dosya göremeyeceksiniz.
Burada önümüzde iki yol ayrımı var
- Kullanıcı sadece belirli bir dizine dosya yüklesin ve görüntüleye bilsin,
- Kullanıcı her alanı görüntüleyip dosya yükleye bilisin
Bu tercihe göre işlemlerinize devam edelim, ben elimden geldiğince ikisini de anlatacağım.
а) Белирли Досяга Дизинине Етки Верме
Bu noktada internette incelediğim kaynaklar kullanıcıya farklı dosya dizinleri için izin vermişler ve bu işlemi genelde Apache ve Nginx serverlarda default olarak kullan / var / www dizini fakat siz ihtiyaçölarizinıza alihtiyaçölarizinı.
Kullanıcının erişimi için izin vereceğimiz klasörün üstünü kök dizin olarak belirliyoruz öncelikle.
sudo usermod -d / var / www ftpusername
sudo usermod -d / var / www ftpusername |
Kök dizini belirledikten sonra bu dizinin altında Hangi dosya / klasöre erişebileceğini belirlememiz gerekiyor.
sudo chown ftpusername: ftpusername / var / www / public_html
sudo chown ftpusername: ftpusername / var / www / public_html |
Bu işlemle birlikte artık FTP kullanıcımız sadece / var / www / public_html klasörüne erişebilecek. B maddesini uygulamanıza gerek olmadığı için direkt olarak 5. adıma geçebilirsiniz.
б) Tüm Dizinlere Erişim Yekisi Verme
imdi FTP dosyalarının никто: nogroup olarak ayarlamamız gerekiyor.
sudo chown никто: nogroup / var / www
sudo chown никто: nogroup / var / www |
Bu şekilde / var altında yer alan tüm dosyalara erişim vermiş oluyoruz. Burada yine izin vermek istediğiniz klasörü kendinize göre düzenleyebilirsiniz.
chmod ile de dosyanın izinlerini düzenliyoruz.Бурада диккат эдилмеси герекен хусус шу; eğer bu dosya yoluna sadece sizin oluşturduğunuz hesabın erişmesini istiyorsanız chmod komutunu kullanarak stillkileri düzenleyebilirsiniz. Fakat herkesin erişimine imkan vermek istiyorsanız bu komuta gerek yok.
Ayrıca genelde benim örneimdeki gibi / var / www dosya yoluna bu şekilde müdahale etmemek adına / home / ftpusername / ftp dosya yolunu oluşturarak kullanıcının sadece bu dizine dosi sadece yüklanılenı. Eğer güvenlik noktasında önlem almak istiyorsanız sizde bu tür bir yöntemi izleyebilirsiniz.
Tüm bu işlemlerin ardından artık sırada oluşturduğumuz kullanıcıya klasörü atamaya geldi. sudo chown komutu ile de bu işlemi gerçekleştiriyoruz.
sudo chown ftpusername: ftpusername / var / www
sudo chown ftpusername: ftpusername / var / www |
Artık sırada vsftpd config dosyasını düzenlemek kaldı. Ее şey tamamsa bir sonraki adıma geçiyoruz.
4. vsftpd Config Dosyasını Düzenleme
FTP hesabını kullanmadan önce sunucumuz üzerinde bazı değişiklikler yapmamız gerekiyor.
İlk olarak vsftpd config dosyasını yedekleyerek işlemlere başlayalım.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak |
D üzenlemek istediğimiz vsftpd config dosyasını aşağıdaki komut ile açalım.
Судо нано /etc/vsftpd.conf
судо нано /etc/vsftpd.conf |
Karışınıza gelen dosyada çok fazla içerik olsa da birçoğu yorum satırı aslında. Imdi bu dosya içeresinde arama yapmak için CTRL + W kısayolunu kullanabilirsiniz. Bu kısa yol ile aşağıdaki satırları güncelleyeceğiz.
# write_enable = YES yorum satırı halinde ки Satırı Bularak başında yer alan # işaretini kaldırın.Bu satırı aktif ederek kullanıcıların FTP ile dosya yükleme işlemlerine izin veriyoruz.
# chroot_local_user = YES satırını da aynı şekilde bulup başındaki # işaretini yine kaldırıyoruz.Bu komutta kullanıcıların sadece butkisinin olduğu klasörleri görmesini. Fakat burada FTP hesabı olan kullanıcının ее şeyi görmesini isterseniz bu kısıma müdahale etmenize gerek yok.
# local_umask = 022 içinde aynı işlemi gerçekleştiriyoruz.Бу komutta dosyamıza FTP için gerekli izinleri vermemiz sağlıyor.
Dosyamızdaki komutları güncelledik, şimdide dosyamızda olmayan bazı parameterleri eklememiz gerekiyor.
imdi FTP ile bağlantı yaptığımızda eğer gizli dosya / klasörleri görmek istiyorsak aşağıdaki komutu dosyanın en altına ekliyoruz.
Linux «VSFTP» FTP-сервер Konfigürasyonu
Мерхаба,
Linux Sunucular üzerinde çeşitli FTP sunucular mevcut.Ancak kullanım kolaylığı ve basit kurulumu ile hemen sisteminize adapte edebilirsiniz. Redhat, Suse, Debian ve Centos gibi
bir çok linux sürümü vsftp kullandırıyor. Benim de tercihim olan vsftp’yi tanıyalım. Ama öncesinde biraz FTP nedir? ону инчелеелим.
vsftp’yi nereden bulurum?
vfstp sisteminizde kurulu değilse son sürümü indirmek için ftp://vsftpd.beasts.org/users/cevans/ adresini kullanabilirsiniz.
FTP Hangi portları kullanır?
Genel olarak FTP protokolünün 21 nolu portu kullandığı bilinir.Ancak FTP protokolu 21 nolu portu sadece kontrol işlemleri için kullanır. Yani siz bir komut gönderdiğinizde
bu komut 21 nolu porttan işlenir. Birde 20 nolu port vardır. Порт данных işlemleri için ayrılmıştır. FTP protokolü, sunucu ve istemci arasındaki data transferini
20 nolu porttan gerçekleştirir.
FTP tipleri nelerdir?
Aktif ve pasif FTP olmak üzere iki ana FTP tipi vardır.
Aktif modda istemci yüksek port diye tabir edilen 1023 (N> 1023) üzeri bir port numarasından
FTP sunucunun 21 nolu portuna bağlantı kurar.Daha sonra istemci N + 1 nolu portu dinlemeye başlar. Bu porttan FTP komutlarını sunucuya gönderir. Sunucu bu bilgiyi aldıında
istemci için ayırdığı porttan, istemcinin lokal portuna (порт 20), geri bağlantı kurar. Bu işlem aktif FTP balantısı olarak adlandırılır.
Pasif modda ise istemci, sunucuya bağlantının pasif modda olacağını bildirmek için PASV komutunu kullanır. FTP balantısı kurulduğunda istemci localde 2 adet port açar.
Bunlar N> 1023 ve N + 1 olarak tanımlanabilir.İlk açılan port ile istemci, sunucu ile 21 nolu porttan bağlantı kurar. Fakat sunucu data portundan geri bağlantı kurmak
istediğinde nereye bağlanacaktır? İstemci bu durumu gönderdiği PASV komutuyla aşacaktır. PASV komutu yüksek portlardan bir port açar (P + 1023) ve PORT P olarak bunu
istemciye iletir. İstemci bağlantıyı tamamlarken açtığı N + 1 portu ile sunucudan gelen P portunu eşleştirerek data transferini başlatır.
Aktif ve pasif FTP işlemlerini aşağıdaki tabloda daha rahat görebiliriz.
Актиф FTP:
komut: istemci> 1023 -> sunucu 21
данные: istemci> 1023 <- sunucu 20
Пасиф FTP:
komut: istemci> 1023 -> sunucu 21
данные: istemci> 1023 -> sunucu> 1023
vsftpd servisi her reboot sonrası otomatik nasıl açılır?
chkconfig vsftpd на
Yukaridaki komutu root haklarıyla çalıştırdığınızda artık ее перезагрузка sonrasında vsftpd servisi çalışır durumda olacaktır.
vsftp konfigurasyon dosyası nerededir?
vsftp’nin konfigürasyon dosyası /etc/vsftpd/vsftpd.conf dur.
Standart vsftp konfigürasyon dosyasını kullanıyorum ancak root kullanıcısı ftp yapamıyor?
Standart gelen konfigurasyonda root kullanicısı ftp yapamaz. Bunun önüne geçmek için 2 adet dosyayı düzenlememiz gerekmektedir. / etc / vsftpd / ftp_users ve / etc / vsftpd / user_list
dosyalarında root kullanıcısının başına # koyup dosyaları kaydedip çıkın.Daha sonra service vsftpd restart komutuyla servisi yeniden başlatın ve root kullanıcısıyla bağlanın.
Kullanıcıların kendi home dizinleri dışına çıkmalarını nasıl önlerim?
Konfigürasyon dosyasını açıp chroot_local_user = ДА satırını ekleyin. vsftpd servisini yeniden başlatınca aktif olacaktır.
Sunucuna anonim kullanıcıların bağlanmasını nasıl engellerim?
vsftp de anonymous_enable ilk kurulumda açık olarak gelmektedir.Bunu kapatmak için ilgili satırı bulup anonymous_enable = NO yapmanız yeterli.
FTP sunucuma bağlananlara karşılama mesajı nasıl yazarım?
Konfigürasyon dosyasına girip ftpd_banner = Seyhan.Biz değişkenini istediğiniz gibi değiştirebilirsiniz.
Lokaldeki kullanıcıların FTP sunucuma bağlanmasını istiyorum?
Konfigürasyon dosyasına girip local_enable = ДА, yapmanız yeterli. Servisi yeniden başlatmayı unutmayın.
Örnek konfigürasyon dosyası görebilirmiyim?
# Örnek vsftp konfigürasyon dosyası / etc / vsftpd / vsftpd.conf
#
# Anonim bağlantıları engelleyelim.
anonymous_enable = НЕТ
#
# Lokal kullanıcılar bağlanabilsin.
local_enable = ДА
#
# FTP sunucuya yazılabilir.
write_enable = ДА
#
# Стандартная местная маска geçerli olsun.
local_umask = 022
#
# Anonim kullanıcıların dosya yüklemesini isterseniz burdaki # kaldırabilirsiniz.
#
# anon_upload_enable = ДА
#
# Anonim kullanıcıların dizin oluşturabilmesini istiyorsanız buradaki # kaldırın.
#
# anon_mkdir_write_enable = ДА
#
# Loglamayı aktif edin.
xferlog_enable = ДА
#
# Порт 20 для данных tarnsferi yapalım (ftp-data).connect_from_port_20 = ДА
#
# Журнал dosyamız burada olsun.
#
xferlog_file = / var / log / vsftpd.log
#
# Log dosyamız standart formatta olsun
xferlog_std_format = ДА
#
# 600 sn sonra oturum sona ersin.
idle_session_timeout = 600
#
# 120 sn sonra dataa bağlantısı sona ersin.
data_connection_timeout = 120
#
# Karşılama yazımızı ayarlayalım
ftpd_banner = Seyhan.Biz
#
#Dinlemeyi açalım
слушать = ДА
#
#TCP Wrapper olsun
tcp_wrappers = ДА
# Bağlanmamasını istediğimiz kullanıcıların listesine bakılsın
userlist_deny = ДА
#
Hepinize kolay gelsin
Сейхан Текелиоглу
Просмотры сообщений:
1.607
Настройте сервер FTPS (FTP через SSL) в Linux ~ Ваш собственный Linux ..!
FTP — это стандартизированный сетевой протокол и, вероятно, самый быстрый и простой вариант, доступный, когда большой кусок данных должен быть передан с одного хоста на другой по сети на основе TCP. FTP определяет архитектуру клиент-сервер, которая использует два отдельных «хорошо известных» порта для данных (порт № 20, используемый для передачи данных) и управления (порт № 21, используемый для аутентификации) соединений, чтобы установить соединение. между сервером и клиентом.
Когда дело доходит до операционной системы Linux, наиболее популярным пакетом, используемым для настройки FTP-сервера, является VSFTPD, то есть «Very Secure FTP Daemon» . Он предлагает очень простые функции, такие как «Анонимное включение / отключение» , «Локальное включение / отключение» и «Chroot jail для пользователей» . Но если смотреть с точки зрения безопасности, vsftpd предлагает гораздо меньше возможностей. Каждый раз, когда инициируется передача файла, все данные, включая учетные данные и пароли пользователей, передаются в незашифрованном формате в виде простого текста, что считается очень рискованным и нежелательным в любой общедоступной сети.
В качестве меры безопасности у нас есть два варианта, которые предлагают возможности безопасной передачи файлов: SFTP и FTPS. SFTP использует SSH-соединение для передачи файлов по защищенному каналу, тогда как FTPS использует криптографические протоколы, такие как SSL (Secure Socket Layer) и TLS (Transport Layer Security) . В этой статье подробно рассматривается часть SFTP для настройки безопасного FTP-сервера с использованием сертификатов SSL.
Установка необходимых пакетов
Чтобы установить указанные выше пакеты в системах на основе Debian, вы можете запустить:
sudo apt-get install vsftpd
sudo apt-get install openssl
В системах на базе Red Hat Linux вы можете выполнить:
yum install vsftpd
yum установить openssl
Создание сертификата SSL и ключевого файла RSA
На этом этапе мы создадим файл сертификата SSL (rsa_cert_file) и файл ключа RSA (rsa_private_key_file), которые будут использоваться vsftpd для шифрования данных.Очень важно указать пути к обоим этим файлам, так как они должны быть указаны в файле конфигурации vsftpd (Red Hat — /etc/vsftpd/vsftpd.conf и Debian — /etc/vsftpd.conf ) в ‘rsa_cert_file’ и ‘rsa_private_key_file’ переменных. По умолчанию (в RHEL) «rsa_cert_file» будет указывать на « /usr/share/ssl/certs/vsftpd.pem ».
Для удобства мы поместим сертификат и ключ в один и тот же файл и сохраним этот файл как « / etc / vsftpd / vsftpd.pem ’.
openssl req -x509 -nodes -days 365 -newkey rsa: 1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
После выполнения указанной выше команды вас попросят предоставить некоторую основную информацию. Результат будет очень похож на:
Создание 1024-битного закрытого ключа RSA
.................................................. .......................... ++++++
........ ++++++
запись нового закрытого ключа в '/etc/vsftpd/vsftpd.pem'
-----
Вас сейчас попросят ввести информацию, которая будет включена
в ваш запрос на сертификат.То, что вы собираетесь ввести, называется отличительным именем или DN.
Поля довольно много, но можно оставить пустыми
Для некоторых полей будет значение по умолчанию,
Если вы введете ".", Поле останется пустым.
-----
Название страны (двухбуквенный код) [XX]: IN
Название штата или провинции (полное название) []: Махараштра
Название населенного пункта (например, город) [Город по умолчанию]: Пуна.
Название организации (например, компания) [Default Company Ltd]: MyTestOrganizationLtd
Название организационной единицы (например, раздел) []: Информационные технологии
Общее имя (например, ваше имя или имя хоста вашего сервера) []: Мой тестовый FTP-сервер
Электронный адрес []: [email protected]
Конфигурация vsftpd, часть
После создания SSL-сертификата нам нужно указать vsftpd использовать этот SSL-сертификат для выполнения процесса шифрования. Как и многие службы, у vsftpd есть собственный файл конфигурации — vsftpd.conf , который расположен как ‘/etc/vsftpd/vsftpd.conf’ для систем на базе Red Hat и ‘/etc/vsftpd.conf’ в системах на основе Debian.
Теперь давайте отредактируем файл конфигурации в соответствии с нашим требованием.Возможно, вам потребуется найти строки или добавить их, если они еще не существуют.
Шаг 1. Включите SSL
ssl_enable = YES # Включите SSL
allow_anon_ssl = НЕТ
force_local_data_ssl = YES # Использовать шифрование данных
force_local_logins_ssl = YES # Использовать шифрование для аутентификации
Шаг 2: Укажите сертификат и расположение файла ключа
rsa_cert_file = / etc / vsftpd / vsftpd.pem
rsa_private_key_file = / и т.д. / vsftpd / vsftpd.pem
Шаг 3. Включите TLS
TLS считается более безопасным, чем SSL, и мы определенно хотели бы использовать TLS всякий раз, когда это необходимо.
ssl_tlsv1 = ДА
ssl_sslv2 = ДА
ssl_sslv3 = ДА
Шаг 4: Другие базовые конфигурации
Чтобы разрешить всем локальным пользователям, добавленным в систему, использовать службу FTP, отредактируйте следующую строку:
local_enable = YES
Чтобы предотвратить анонимный вход, отредактируйте следующую строку:
anonymous_enable = NO
Чтобы принимать команды записи FTP, отредактируйте следующую строку:
write_enable = YES
С этой настройкой только локальный пользователь может получить доступ к FTP-серверу и может выполнять команды записи.Но, если вы хотите сохранить индивидуальность между пользователями и их содержимым, вы можете настроить chroot jail для пользователей, чтобы пользователи были привязаны к своим домашним каталогам и не имели доступа к файлам вне их. .
chroot_local_user = ДА
Чтобы включить ведение журнала выполненных переводов, отредактируйте следующие строки:
xferlog_enable = YES
xferlog_std_format = ДА
xferlog_file = / var / журнал / xferlog
Добавить службу vsftpd в автозагрузку
После завершения всех настроек вам необходимо перезапустить службу, чтобы внесенные изменения вступили в силу.
перезапуск службы vsftpd
По умолчанию после новой установки любого пакета служба, связанная с этим пакетом, отключена на каждом уровне выполнения. Это означает, что вам придется вручную перезапустить службу после того, как операционная система переключится с одного уровня выполнения на другой. Проще говоря, после каждой перезагрузки / запуска системы вам придется запускать службу вручную.
Вы можете проверить это, введя команду «chkconfig» следующим образом:
chkconfig --list vsftpd
Вывод:
$ chkconfig --list vsftpd
vsftpd 0: выключен 1: выключен 2: выключен 3: выключен 4: выключен 5: выключен 6: выключен
Чтобы преодолеть это и настроить автоматический запуск службы, вы можете использовать:
chkconfig vsftpd on
Проверить:
$ chkconfig --list vsftpd
vsftpd 0: выключено 1: выключено 2: включено 3: включено 4: включено 5: включено 6: выключено
Добавление пользователей FTP
Теперь ваш FTP-сервер готов к использованию, и вы можете добавлять пользователей, которые могут получить к нему доступ.Добавление пользователей FTP очень похоже на добавление пользователей в операционной системе с помощью команды «useradd». При этом каждый пользователь получит отдельный домашний каталог, а с активированной «chroot jail» пользователи будут вынуждены работать в своих домашних каталогах.
Чтобы добавить пользователя mandar, просто запустите:
useradd mandar
Чтобы установить пароль для «mandar», используйте команду «passwd» следующим образом:
passwd mandar
Вам нужно будет указать новый пароль и подтвердить его один раз.
Изменение пароля для пользователя mandar.
Новый пароль:
Введите повторно новый пароль:
passwd: все токены аутентификации успешно обновлены.
Теперь пользователь «mandar» сможет использовать службы FTPS, используя любой FTP-клиент, поддерживающий SSL / TLS, например FileZilla. Чтобы получить доступ к серверу FTPS через браузеры, вам может потребоваться установить некоторые надстройки, такие как fireFTP.
Заключение
С этими конфигурациями любой пользователь, будучи локальным пользователем, также будет иметь доступ к серверу FTPS, где он может получить доступ к файлам / каталогам других пользователей, изменить конфигурации, добавить / удалить файлы и так далее, что крайне нежелательно.