настройка ftp linux debian

Настройка FTP сервера в Debian 5 (Lenny)

В этой статье я опишу настройку FTP сервера на базе Debian 5 (Lenny). Будем использовать vsftpd. VSFTPD (Very Secure FTP Daemon) — как следует из названия, очень защищённый демон FTP, с хорошей производительностью, поддерживаются: IPv6, SSL, виртуальные пользователи, есть контроль скорости полосы пропускания. На vsftpd работают ftp.debian.org, ftp.freebsd.org, ftp.suse.com, ftp.openbsd.org, ftp.gnu.org, ftp.kernel.org, ftp.gnome.org, ftp.gimp.org, ftp.rpmfind.net, ftp.linux.org.uk, ftp-stud.fht-esslingen.de, gd.tuwien.ac.at, ftp.sunet.se, ftp.ximian.com, ftp.engardelinux.org, ftp.sunsite.org.uk, ftp.isc.org, ftp.redhat.com.

В статье будут описаны несколько конфигураций:

Простая конфигурация FTP сервера

#aptitude install vsftpd

При этом создаются:

Пользователь ftp не будет работать с FTP сервером, но он нужен для его корректной работы. Так как директория FTP сервера будет располагаться в /var/ftp, то изменим домашнюю директорию для пользователя ftp:

Удалим прежнюю директорию этого пользователя:

# rmdir /home/ftp

Теперь настроим пользователя, у которого будут права записи в корневую директорию FTP сервера:

Cоздаём группу ftpuser

# addgroup ftpuser

Создаём пользователя ftpuser, добаляем его в группу ftpuser и устанавливаем домашним каталогом директорию FTP сервера, а так же меняем пароль

#passwd ftpuser

Создаём директорию FTP сервера и устанавливаем права:

# mkdir /var/ftp

# chmod 555 /var/ftp

# chown root:ftpuser /var/ftp

Создаём публичный каталог.

# mkdir /var/ftp/pub

# chown ftpuser:ftpuser /var/ftp/pub

Конфигурационный файл vsftpd располагается в /etc/vsftpd.conf. Сделаем его резервную копию.

#cp /etc/vsftpd.conf /etc/vsftpd.conf_old

Теперь очистим /etc/vsftpd.conf, откроем текстовым редактором:

# cat /dev/null > /etc/vsftpd.conf

# vim /etc/vsftpd.conf

# Запускать vsftpd в независимом режиме

listen=YES

# Делаем анонимный доступ

anonymous_enable=YES

# Анонимные входят без пароля

no_anon_password=YES

# Анонимные будут попадать в публичную директорию

anon_root=/var/ftp/pub

anon_umask=022

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

local_enable=YES

write_enable=YES

local_umask=022

# Локальные пользователи будут входить только в свои домашние каталоги

chroot_local_user=YES

chroot_list_enable=NO

# Сообщения будут записываться в собственный журнал

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

Теперь перестартуем vsftpd:

/etc/init.d/vsftpd restart

Если всё работает как надо и сервер будет использоваться не только локально, то добавим ещё несколько строк после listen:

# Установки публичного FTP

max_clients=100

max_per_ip=10

hide_ids=YES

idle_session_timeout=600

data_connection_timeout=120

dirmessage_enable=YES

ftpd_banner=Welcome!

Скачать готовый конфигурационный файл можно по следующей ссылке.

Помните, что у нас вы можете не только купить готовый сайт или заказать его разработку, но и подобрать подходящий тариф поддержки сайта, заказать продвижение сайта в поисковых системах, а так же зарегистрировать домен в одной из двухсот доменных зон и выбрать недорогой тариф хостинга! Айтишник РУ

Об авторе:

Меня зовут Андрей Золкин. Из более, чем пятнадцати лет работы в сфере информационных технологий, десять лет работаю с системами, базирующимися на открытом исходном коде. На страницах сайта Aitishnik.Ru веду блоги по CMC Joomla и Debian GNU/Linux.

Ещё статьи о Debian

Настройка FTP сервера. Более сложная конфигурация.

Рассмотрим более сложную конфигурацию ftp сервера: анонимные пользователи всё так же имеют доступ только на чтение. Локальные пользователи не используются. Вместо них используются виртуальные пользователи, учётные записи которых хранятся.

Генерация ключей SSH

Мы знаем, что при подключении с использованием аутентификации с ключом хоста открытый ключ сервера копируется на компьютер-клиент. А где находятся ключи на сервере? На сервере они лежат в директории /etc/ssh. В Debian при установке.

Интерактивный режим aptitude

В первой части статьи рассказывалось об управлении пакетами с помощью aptitude в режиме командной строки. Теперь рассмотрим интерактивный режим этой программы. Управление программой производится с клавиатуры. Для входа в интерактивный.

Linux HTML-редакторы

Настройка FTP сервера в Debian 5 (Lenny)

В этой статье я опишу настройку FTP сервера на базе Debian 5 (Lenny). Будем использовать vsftpd. VSFTPD (Very Secure FTP Daemon) — как следует из названия, очень защищённый демон FTP, с хорошей производительностью, поддерживаются: IPv6.

Изменяем приветствие в SSH Debian

Все, кто совершал вход в систему Debian через консоль или посредством SSH, видели следующее сообщение: The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described.

Источник

Debian Server для новичка

Как-то обеспокоился наличием собственного FTP-сервака. Тем более под это дело «на помойку» был отдан комп этак десятилетней давности. Так как я человек хоть и виндовый, но начинал с чистого ДОСа (про книжки тов. Фигурнова кто помнит?), то я решил сделать все на линуксе. В линуксе я был ноль полный. Еще и усложнил задачу — только консоль, никаких исков (как же — это ж линукс). Дистрибутивом был выбран Debian. Так получилось, что надобность в 2Тб личном хранилице отпала через год и комп был отдан в хорошие руки, а хард пристроен в нужное место. Но был накоплен неплохой опыт стопроцентного новичка. Какие только глупые ошибки я не совершал поначалу! И хабр читал, между прочим, пока разбирался с проблемами. Поэтому эту свою дебютную (первую) статью на хабре я посвящаю тем, кто хочет заняться линуксом с нуля и эта статья призвана для плавного ввода «в тему», являясь, по сути, фильтрацией и систематизацией всего того, что я нашел на просторах интернета. Ранее я этот материал уже публиковал, но, думаю, на хабре он тоже будет полезен.

Что и как хотим получить в результате:
— консольная установка ОС с флешки;
— навыки консольного управление;
— создание собственного репозитория;
— обеспечение удаленного доступа по протоколу FTP/SFTP;
— обеспечение удаленного управления по протоколу SSH;
— дистанционное включение сервера, находящегося за маршрутизатором;
— создание условий работы веб-сервера (в идеале связка nginx+apache).

Читайте также:  колчак за что расстреляли

В инете куча всяких пошаговых инструкций. Порой там бывают досадные ошибки, а если еще линуксоид и сопливый еще покамест, то можно пару часов потратить только на то, что бы понять, что не нужна лишняя палочка или точечка — в линуксе важно все! Нижеизложенное делается для практических целей поставленных задач — не надо воспринимать все как серьезную инструкцию для создания серьезного сервера. Тем более в процессе «восстановления опыта» могут и ошибки тоже быть и у меня…

Итак, имеется пустой комп с подключенной периферией. Для начала нужно установить саму ОС. Имеется так же образы всех дисков Debian 6.0.0 stable. От лазерных носителей я давно отказался, т.е. для установки нужно изготовить загрузочную флешку. Флешка нашлась на 2Gb. После поисков оказалось, что изготовить можно, но из самой линуксовой среды. Пришлось установить с образа первого диска дебиан на виртуальную машину (подключаем образ к виртуалке в качестве виртуального CD-ROM и установка выполняется «честно» как бы с лазерного диска). Устанавливал «оптом» — т.е. и GUI тоже (в 6 версии был только GNOME). Тем не менее, после того, как все сделалось, грузим деабиан, подключаем флешку к виртуалке и открываем консоль.

Видим что-то типа этого:

Это значит, что флешка определилась в системе.

Скачиваем файл boot.img.gz (debian.org) для нужной архитектуры (в моем случае i386) и копируем его в какую-нибудь директори. Далее выполняем команду из этой директории:

# zcat boot.img.gz > /dev/sdc

Теперь надо вытащить и воткнуть обратно USB флешку, чтобы новая структура/таблица разделов распозналась. Это обновит таблицу разделов, хранимую udev. Для проверки выполняем следующие команды:

# mkdir /mnt
# mount /dev/sdс /mnt/
# ls /mnt

и видим инсталляционные файлы, такие как syslinux.cfg, setup.exe, и так далее. Значит все нормально — флешку примонтировали.

Далее скачиваем ISO образ netinstall (debian.org) размером 150-180MB для соответствующей архитектуры (в моем случае i386). Netinstall устанвливает базовую систему, сеть не нужна. Копируем этот образ в какую-нибудь директорию и из этой директории выполняем и отмонтируем флешку:

# cp debian-6.0.1a-i386-netinst /mnt
# umount /dev/sdс

Уф. Теперь при себе есть всегда флешка для установки.

Теперь втыкаем флешку в наш импровизированный сервак, через BIOS выбираем загрузку с флешки и штатно устанавливаем Debian. При установке ничего особого я не обнаружил: выбираем установку с графическим интерфейсом и далее диалоговый режим. Разметить файловую систему можно автоматом — на первый раз сойдет. После установки и перезагрузки, а так же входа в систему мы будем радостно лицезреть черный экран с приглашением командной строки — базовая установка выполнена!

Далее необходимо настоить доступ и управление по протоколу SSH. Так же, что бы особо не париться с консолью нужно бы установить mc (Midnight Commander) — аналог nc (Norton Commander) в DOS или tc (TotalCommander) в Windows. Но для установки нужно скопировать из сети пакет и установить его. Сети же нет. В то же время практически весь хоть сколько-то нужный софт есть на дисках Debian 6.0.0 stable (дисков, кажется, 6). Но я отказался от работы с дисками. Можно настроить сеть и воспользоваться официальным сетевым репозиторием — способ проще некуда. Однако это решение не для нас — нужна широкая автономность на первом этапе. Да и с каких пор мы идем по легкому пути — знакомство носит все же больше исследовательский характер. Значит нужно сделать свой локальный репозиторий.

Придется опять еще раз вернуться в виртульную машину. Входим в консоль под root’ом (на сервере мы в будущем настроим sudo, что бы по каждой ерунде не светить root’а). Создаем директории:

# mkdir debian/pool
# mkdir debian/pool/contrib
# mkdir debian/pool/main

В эти директории копируем содержимое одноименных директорий со всех дисков. Получится одна папочка объемом этак с 30Гб. После того, как содержимое всех дисков скопировано, создаём директории для хранения информации об находящихся в репозитарии пакетах:

Далее все команды выполняются исходя из текущего каталога debian — за его пределы никуда не выходим! Собираем списки пакетов:

# apt-ftparchive packages pool/main/ > dists/stable/main/binary-i386/Packages
# apt-ftparchive packages pool/contrib/ > dists/stable/contrib/binary-i386/Packages

Создаём файлы Release:

# apt-ftparchive release pool/contrib/ > dists/stable/contrib/binary-i386/Release
# apt-ftparchive release pool/main/ > dists/stable/main/binary-i386/Release
# cd /debian/pool/dists/stable
# apt-ftparchive release. > Release

Теперь папку /debian можно скопировать на жесткий диск и при желании подключать и организовывать локальные репозитории в других системах. Что и делаем — копируем папку на съемных USB-хард.

2) подключение… заходим на сервер под root’ом

Подключаем USB-хард к серверу. Далее соображаем как определился хард:

Правим файл /etc/apt/sources.list — комментим все репозитории и прописываем наш:

deb file:/debian/ stable contrib main

Тут надо сделать краткое отступление. Как поправить файл, если одна консоль? Для этого есть редактор vi:

# cd /etc/apt
# sudo vi sources.list

Далее делаем что нужно: передвигаем курсор в нужную позицию и жмем «i». Это режим ввода. Делаем что нужно. Сделали и жмем ESC для возврата в командный режим. Далее — все по новой. После того как все завершено жмем последовательность «ESC: w! Enter» — это команда возврата с сохранением изменений. Страшно? После установки mc жизнь упростится…

# apt-get update
# apt-cache gencaches

Готово наше локальное хранилище!

Теперь наконец-то добрались до SSH вплотную почти.

1) не всю же жизнь под root’ом работать…

Но сначала немного облегчим себе жизнь — настроим sudo. Sudo — система позволяющая делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы. Проще говоря user сможет выполнять действия, которые изначально предполагалось выполнять только от root’а.

Читайте также:  как посмотреть модель оперативной памяти в windows

Заходим на сервер под root’ом и открываем файл /etc/sudoers. Используем опять же редактор vi:

# cd /etc
# vi sudoers

И под ней дописываем:

Выходим с сохранением. Готово! Теперь можно заходить под user’ом, но при выполнении критических команд просто перед командой добавлять «sudo». В первый раз система запросит текущий пароль для идентификации. Выходим из системы и заходим под user’ом. Пароль от root’а можно отныне записать на бумажке — пользоваться будем сильно редко, можно и забыть)

2) замучила консоль и vi…

# sudo apt-get install mc

После установки введя команду

Теперь можно радоваться и забыть про команды mkdir, cp, ls, cd, а так же консольное управление в vi. Править файлы теперь можно по F4. Ностальгия по 2000ым — тогда я на 386ом только нортом и пользовался…

# sudo apt-get install ssh

После успешной установки нужно добавить в конец файла /etc/ssh/sshd_config строку для ограничения доступа:

AllowUsers root, user

Далее идем по указанному пути и правим файл. После правки проблем с сохранением не будет — mc запущен под root’ом же. После правки нужно обновить сервис ssh — выходим в консоль и выполняем рестарт сервиса:

# sudo /etc/init.d/ssh restart

— Четыре

Для последнего штриха перед переходом на удаленное управление нужно только настроить сеть. У меня ситуация простая: комп подключен к маршрутизатору проводом. Так как на маршрутизаторе включен DHCP, то интернет получим от него автоматом.

Настройки сетевых интерфейсов хранятся в файле: /etc/network/interfaces

Вот пример рабочего содержимого файла:

Запускаем mc через sudo и правим этот файл в соответствии с теми сетевыми настройками, которые справедливы для вашей сети.

Настройка имени сервера и хостов находятся: /etc/hostname, /etc/hosts
Если наш сервер называется «debian», то проверяем:
В hostname значится только:

А в host первые строчки:

127.0.0.1 localhost debian
10.0.0.10 debian.localhost debian

После всего этого гасим компьютер:

2) удаленное управление…

Отключаем все кабели, тянем наш сервер в самый дальний угол и подключаем его в розетку и к сети. При этом надо заранее позаботится что бы на этапе загрузки BIOS не ждал нажатия кнопки с названием «any» после того как он с удивлением обнаружит, что клавиатура и мышь не обнаруживаются. Нажимаем кнопку питания и возвращаемся к рабочему компьютеру. На этом компе у меня винда. Как же теперь подключиться к серверу?

Есть такая программа putty. Добыть ее можно в интернете. После ее запуска во вкладке «Session» прописываем IP адрес нашего сервера, в качестве порта оставляем значение 22 (это стандартный порт для Shell). Проверяем, что во вкладке «Translation» выставлено UTF-8, что бы неогрести крякозяблев при отображении кириллицы. Возвращаемся в «Session» и открываем канал: «Open». После соединения нас попросят подтвердить создание ключей соединения с нами — подтверждаем. Вводит логин: user. Далее вводим пароль — пароль при вводе не отображается, т.е. это нормально. После соединения видим приглашение сервера и родную консоль, только не на всем мониторе, а в маленьком окошке, которое можно и подрястянуть мышкой. Это значит «Ура, товарищи!».

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

# sudo apt-get install samba

Теперь редактируем файл /etc/samba/smb.conf. Вот пример рабочего содержимого:

В качестве комментария можно заметить следующее:
— необходимо указать рабочую группу, в которой работают виндовые машины;
— параметр security должен быть установлен в share;
— в секции «user» нужно указать реальный путь и разрешить гостевой доступ — собственно именно эту секцию мы в файл и добавляем.

После всего этого дела создаем указанные каталоги:

# mkdir /ftp
# mkdir /ftp/pub

И разбираемся с правами на эти папки:

В таком случае доступ будет осуществлен к папке ftp, но в ней изменить ничего нельзя будет. А вот в папке pub — делаем что угодно. Естественно, можно все упростить выкинув папочку pub и поправив права для ftp…

Ну и напоследок перезагружаем сервис, что бы все настройки заработали:

# sudo /etc/init.d/samba restart

— Шесть

Теперь пора выпустить нашего малыша в сеть )))

Для начала неплохо было бы сделать сетевой файловый доступ и управление из любой точки сети. Но что мы имеем по топологии?
У нас должен быть выход в интернет с статичным реальный IP-адресом. Т.е. доступ из вне должен осуществляться напрямую, а не через коммутацию сетей провайдера. Например, пользователи сети Рамнет все сидят за большим NAT’ом, т.к. выходят в сеть через несколько пулов. Это значит, что IP выданный при регистрации вовсе и не совпадает с тем IP, который «отпечатывается», например, при посещении сайтов. Реальный IP — это однозначно тот IP, который прописан в сетевых настройках драйвера сетевой платы. Узнать реальный IP или нет можно воспользовавшись каким-нибудь сетевым сервисом в интернете, который показывает ваш IP-адрес. Допустим у нас имеется реальный IP.
Далее, если сетевой провод напрямую заведен на сервер, то проблем особых уже и нет — сервер уже в сети. А если стоит какое-то маршрутизирующее устройство (маршрутизатор, или промежуточный разветвитель-коммутатор на базе того же линукса)? В таком случае мы оказываемся уже за своим NAT’ом, который нужно немного настроить: осуществить проброс портов. Для каждой сетевой службы на машине имеется свой порт: SSH — 22, FTP — 21. Т.е., маршрутизатор нужно настроить так, что бы при обращении к порту по нашему реальному IP осуществлялось обращение именно к серверу по этому порту. Если наш сервер имеет адрес 10.0.0.10, а провайдером выдан реальный IP 172.122.34.89, то в маршрутизаторе необходимо выполнить проброс портов (Port Forwarding) 21 и 22 из вне (172.122.34.89) на сервер (10.0.0.10). Просто настраивается пара строчек в админке маршрутизатора или правится таблица маршуртизации промежуточного линукса-коммутатора. Допустим это тоже все сделали.

Читайте также:  лесная амнистия в московской области в чем заключается

В таком случае для досутпа по SSH через putty необходимо просто будет указать реальный IP-адрес, порт 22 (см. выше, где описана небольшая настройка клиента putty). Осуществляем вход и получаем доступ к консоли сервера.

А файловый доступ? Тут чуть сложнее. Можно использовать WinSCP, но как уже упоминалось, это не наш метод. Samba работает только в локалке. Придется настроить FTP доступ…

Для FTP используем сервис proftpd. Ставим пакет:

# sudo apt-get install proftpd

Файл конфигурации находится здесь: /etc/proftpd/proftpd.conf. Вот пример рабочего файла:

Это дело вставляется в proftpd.conf и доступ осуществляется через порт 2220. Но при этом mod_sftp должен быть установлен вместе с proftpd. В штатном репозитории proftpd собран без mod_sftp. Его придется «дособирать» самостоятельно. «Впатчивал» я по какой-то английской инструкции — уже не помню. Процесс это не менее творческий, чем сборка своего репозитория, а результат все равно не порадовал, поэтому это все описывать не буду.

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

Тут есть одна тонкость. К нашему серверу подключено только электропитание и сеть. Но сетевые карты давно научились «будить» компьютер: достаточно только включить такую поддержку в BIOS компьютера и послать не него «магический» пакет (Magic packet). Читаем в wikipedia:

Magic packet — это специальная последовательность байтов, которую для нормального прохождения по локальным сетям можно вставить в пакеты UDP или IPX. Обычно для WOL пакеты протоколов верхнего уровня рассылают широковещательно, так как в случае динамического присвоения адресов неизвестно, какой, скажем, IP-адрес соответствует какому MAC-адресу. Однако, для корректного прохождения через маршрутизатор, запрещающий широковещательные пакеты, можно послать пакет по какому-то определённому адресу.

Состав magic packet

Вначале идет так называемая «цепочка синхронизации»: 6 байт, равных 0xFF. Затем — MAC-адрес сетевой платы, повторённый 16 раз. То есть, если бы адрес платы выглядел как 01:02:03:04:05:06, то магический пакет оказался бы таким:

Есть куча программ, половина из которых работает, а другая нет, которые формируют и отсылают такие пакеты по указанному IP. Но это справедливо только в локальной сети. Но ведь у нас реальный IP — значит можно попробовать просто отослать пакет на него, а маршрутизатор настроить на ретрансляцию этого пакета серверу. Пакеты на «побудку» рассылаются обычно по портам 7 или 9. Прокидываем их через маршрутизатор на IP сервера. Далее проще всего воспользоваться сетевым ресурсом wakeonlan.ru: забиваем свой реальный адрес IP и MAC адрес сетевой платы сервера. Жмем кнопочку «Включить компьютер!». После пары отправок система вполне может и написать о неудаче включения — сервер-то все же за NAT’ом, а отклик на пингование маршрутизатора разумнее выключить в настройках маршрутизатора. Такой способ включения удобен, правда придется выучить наизусть IP и MAC. Но у нас же память хорошая — мы же задаем и помним правильные пароли составом не менее 32 символов?) Зато теперь сервер можно включить с сотового телефона (при наличии в нем браузера и GPRS доступа).

Интересная так же штука вышла с маршрутизатором. Дело в том, что, пока сервер включен, маршрутизатор точно знает к какому порту этот сервер подключен. Но как только сервер выключается, маршрутизатор, через некоторое время, начисто забывает этот факт. У меня не получилось заставить маршрутизатор делать широковещательную рассылку «магического» пакета по всем портам. Пришлось на разбирательство потратить приличное время. В результате на маршрутизатор установил прошивку DD-WRT. Прошивка по сравнению с штатными просто блещет функционалом. Он явно избыточен) Однако и она забывала порт, хотя широковещательно пакеты рассылать уже могла (только комп почему-то не включался). Если был бы вместо маршрутизатора коммутатор-комп на линукс, то можно было бы просто подредактировать таблицу маршрутизации и делов-то… Аналогично и тут — нужно внести изменения в таблицу ARP маршрутизатора. В данной прошивке есть некая консоль и можно при загрузке маршрутизатора добавить скрипт запуска. Что и делаем, скрип таков:
ip neigh change 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0
ip neigh add 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0

Подразумевается, что на физическом аппаратном уровне порты маршрутизатора и платы друг друга «узнают» по своим MAC-адресам (они же с собой постоянно общаются при наличии питания) и маршрутизатор «догадается» что вышеуказанный IPшник будет принадлежать именно этому адресату (пока комп не включен это знание маршрутизатору недосутпно ибо еще нет никакого интерфейса сетевого уровня — однако эта знание мы и заложили при загрузке в ARP) после включения.

Ну вот — на этом и закончивается мое первое знакомство с линуксом. Если кому-то это помогло — всегда пожалуйста.

Источник

Образовательный портал