Превращаем свой фтп сервер в локальных диск с помощь FTP drive
Читать далее «Свое облако для хранения файлов»Рубрика: Администрирование
Добавляем виртуальных пользователей vsftpd на FreeBSD
Генерируем пароль:
openssl passwd -1 yoursecretpassword
Результат($1$5htlgrc7$FHf5uCbSol0oKKYN3upE0/), добавляем в файл /etc/vsftpd_login.db. Синтаксис файла:
Имя_юзера1:Пароль_юзера1
Имя_юзера2:Пароль_юзера2
Создать папку по имени пользователя в /home/Имя_юзера
права на нее выставить 755, владельцем сделать ftpuser‘а под которым работают виртуальные пользователи. Получить список всех пользователей:
cat /etc/passwd
.
Добавить жесткий диск в FreeBSD за 5 минут
Подробная инструкция с пояснениями
Выбор имени жесткого диска
Для начала нужно определить имя устройства, которое мы только что добавили. В этом нам поможет следующая команда:
geom disk list

Или же вот такая команда:
camcontrol devlist

В реальной системе эти команды покажут более полезную информацию, а именно: названия устройств и их серийные номера.
До установки нового устройства мы знали, что наша система установлена на ada0, значит по логике вещей наш новый диск ada1. Это вы можете определить по названию нового устройства, его серийному номеру или же объему.
Теперь проверим, имеется ли разметка на нашем новом диске
gpart show ada1

Диск не имеет никакой разметки.
Удаление существующей разметки
Если диск уже использовался и есть необходимость удалить с него разметку, просто выполните:
gpart destroy -F ada1
Создание разметки GPT
Для начала мы должны создать разметку диска. Крайне рекомендую забыть о MBR и перейти на новую, более удобную и функциональную — GPT.
Создаем разметку GPT на диске, затем проверяем, что вышло:
gpart create -s gpt /dev/ada1 gpart show ada1

Теперь у нас диск имеет разметку GPT. Из вывода можно увидеть, что абсолютно весь диск, начиная с LBA 34 и заканчивая LBA 8388541 пуст. LBA 0−33 — зарезервированы системой под таблицу разделов.
Допустим, нам необходимо создать два раздела на этом диске:
- swap — раздел подкачки
- data — раздел типа ufs для хранения каких либо, необходимых нам, данных.
Создание разделов (слайсов)
Если установка производится на современные жесткие диски, у которых размер сектора = 4 кб, то при создании разделов (партиций) необходимо использовать выравнивание. Можно поступить двумя способами: 1) если указываем параметры раздела в блоках, то номер блока вводить кратным 8, например: -b 40; 2) если указываем размер раздела в байтах, либо не указываем вообще начало и размер, использовать параметр -a 4k, который подгонит начало и конец раздела под секторы, размером 4 кб. Так как мы в данном примере производим тестовую установку на виртуальный жесткий диск, то этого можно не делать. В любом случае перед созданием разделов нужно точно знать размер сектора вашего накопителя, иначе это выльется жуткими тормозами в работе.
Теперь создадим разделы. Для этого существует команда gpart add с различными параметрами. Первый параметр -t — указывает на тип создаваемой файловой системы. В нашем случае будет использовано два типа: freebsd-swap и freebsd-ufs. Далее идут два необязательных параметра: -b — указывает на номер LBA, начиная с которого необходимо создать раздел. Если не указать данный параметр, то раздел будет создан автоматически с первого свободного LBA. -s — указывает на размер раздела в LBA. Размер одного блока LBA = 512 байт. Желательно указывать в количестве блоков LBA, но можно и в кило/мега/гига/… байтах (суффикс k/M/G). Если не указать данный параметр, то раздел будет создан до максимально возможного LBA в пределах пустой области. Также в качестве параметра можно указать метку раздела, например: -l swap1 — в этом случае будет создана метка /dev/gpt/swap1, по которой можно более удобно обращаться к разделу. Последним обязательным параметром идет путь к диску. В нашем случае: /dev/ada1.
Давайте создадим два раздела, а затем посмотрим, что у нас получилось. Первый раздел будем создавать без указания начального LBA, но с указанием размера 1 Гб (2097152 блоков). Второй раздел создадим без указания начального LBA и без указания размера — таким образом он будет создан на всем свободном пространстве.
gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1 gpart show ada1

Размер можно указывать в байтах, а не блоках. Это значительно удобней. Единственный минус — система не всегда может корректно рассчитать количество блоков. Возможны случаи, когда на диске останется пустовать некоторое количество блоков при указании размера раздела в байтах.
Создание файловой системы (форматирование)
Разделы типа swap форматировать нет необходимости. А вот разделы типа ufs перед использованием должны быть отформатированы. Правильнее сказать: на них должна быть создана файловая система.
Для того, чтобы создать файловую систему на втором разделе, достаточно выполнить следующую команду:
newfs -U /dev/ada1p2

В данном случае использовался параметр -U — он говорит о том, что в данной файловой системе должен использоваться механизм Soft Updates. Вы можете не использовать этот параметр, чтобы не включать данный механизм.
Монтирование
Следующим шагом будет монтирование разделов. Для начала, чтобы не забыть, добавим наши новые разделы в /etc/fstab. Мой файл после редактирования выглядит вот так:

Я добавил две строки: первая монтирует swap, вторая монтирует новый раздел в каталог /mnt. На деле у вас должен быть какой-то более значимый каталог. Каталог /mnt служит для временно монтированных устройств.
Для того, чтобы перемонтировать все разделы согласно файла /etc/fstab, просто выполним команду:
mount -a

Как видно из вывода, раздел /dev/ada1p2 смонтирован. Теперь посмотрим, что произошло с разделом SWAP. Выполним команду:
swapinfo

Как видно, новый раздел SWAP не смонтирован. Чтобы смонтировался SWAP, необходимо его включить специальной командой:
swapon /dev/ada1p1

Точно так же при помощи команды swapoff нужно отключать раздел SWAP перед тем, как произвести над ним какие-то действия.
На этом все действия по добавлению нового жесткого диска в систему завершены.
Краткая инструкция
Дано: жесткий диск /dev/ada1
Цель: удалить существующую разметку, создать новую разметку GPT, создать два раздела: подкачка и данные и подключить их к рабочей системе.
После каждого действия выполняйте gpart show, чтобы наблюдать за результатом. Последовательность действий:
- Удалить существующую разметку: gpart destroy -F ada1
- Создать новую разметку: gpart create -s gpt /dev/ada1
- Создать два раздела: подкачка и данные: gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1
- Создать файловую систему UFSv2 на втором разделе: newfs -U /dev/ada1p2
- Добавить в файл /etc/fstab строки для автомонтирования при загрузке: /dev/ada1p1 none swap sw 0 0 /dev/ada1p2 /mnt ufs rw 2 2
- Смонтировать новый раздел (команда монтирует все разделы из файла /etc/fstab): mount -a
- Включить в работу новый раздел swap командой: swapon /dev/ada1p1
На этом настройка завершена.
Ошибки при пропаже подключенного в FSTAB диска
При удалении диска прописанного в fstab система не загрузится нормально, перейдет в однопользовательский режим с доступом к корневому винту только на чтение. Для перевода диска с системой в обычный режим, запустить:
mount -a
Монтируем NTFS
Начиная с FreeBSD 10, Fuse — это часть ядра. Делаем так, чтобы он загружался с системными модулями, в /boot/loader.conf пишем:
fuse_load="YES"
Это сработает после перезагрузки. В текущем сеансе подгрузим этот модуль вручную
#kldload fuse
Проверить загружен ли модуль или нет можно командой
#kldstat
Если в списке будет присутствовать fuse.ko, значит всё хорошо.
#kldstat Id Refs Address Size Name 1 3 0xffffffff80200000 1fa7c38 kernel 2 1 0xffffffff821a9000 1a7c8 fuse.ko
Далее мы должны определиться, как видит система флешку или внешний жёсткий диск:
#dmesg | grep da
Вывод будет примерно таким:
da0 at umass-sim0 bus 0 scbus1 target 0 lun 0 da0: <JetFlash Transcend 16GB 1100> s/n 00H79BHRYGX22JBN detached (da0:umass-sim0:0:0:0): Periph destroyed da0 at umass-sim0 bus 0 scbus1 target 0 lun 0 da0: <JetFlash Transcend 16GB 1100> Removable Direct Access SPC-4 SCSI device da0: Serial Number 00H79BHRYGX22JBN da0: 40.000MB/s transfers da0: 14870MB (30453760 512 byte sectors) da0: quirks=0x12<NO_6_BYTE,NO_RC16> da1 at umass-sim1 bus 1 scbus2 target 0 lun 0 da1: <USB DISK 1.00> s/n 8968888304C9BB52 detached (da1:umass-sim1:1:0:0): Periph destroyed da1 at umass-sim1 bus 1 scbus2 target 0 lun 0 da1: <USB DISK 1.00> Removable Direct Access SCSI-2 device da1: Serial Number 8968888306C9BB52 da1: 40.000MB/s transfers da1: 1999MB (4093952 512 byte sectors) da1: quirks=0x2<NO_6_BYTE>
Видим, что в системе у нас две флешки с идентификаторами da0 и da1. В нашем примере мы будем использовать только флешку da0. Монтируем её следующей командой:
ntfs-3g /dev/da0 /mnt
/dev/da0 — это наша флешка, мы это выяснили в пункте 3.
/mnt — это точка монтирования. Она может быть любой.
Если появилась ошибка, монтируем раздел флешки. После ввода
ntfs-3g /dev/da0
жмём TAB и видим разделы флешки
da0 da0s1
И монтируем этот раздел
ntfs-3g /dev/da0s1 /mnt
Переходим в каталог, куда мы примонтировали флешку и видим там её содержимое:
#cd /mnt #ll total 13 drwxrwxrwx 1 root wheel 0 4 нояб. 17:23 System Volume Information/ -rwxrwxrwx 1 root wheel 9 4 нояб. 18:05 xxx.xxx* -rwxrwxrwx 1 root wheel 22 4 нояб. 18:04 Архив ZIP - WinRAR.zip* -rwxrwxrwx 1 root wheel 9904 4 нояб. 18:04 Лист Microsoft Office Excel.xlsx*
Теперь на флешку можно записывать файлы и читать их с неё. Для того, чтобы отмонтировать флешку, сначала покинем каталог, куда она примонтирована. Например,
#cd /
А после этого, воспользуемся командой
#umount /mnt
Использование /etc/fstab - таблицы ФС для монтирования:
При ntfs-3g обязательно использовать опцию late
воспользуемся опцией mountprog=<program> и заменим ntfs-3g на ntfs в /etc/fstab:
# Device Mountpoint FStype Options Dump Pass# /dev/da0p1 /ExtHDD ntfs rw,mountprog=/usr/local/bin/ntfs-3g,late 0 0 |
Dump - утилитой dump(8) снимать специальные архивные копии для ФС. 0 - не снимать.
Pass - порядок проверки fsck. 0 - файловую системы не нужно проверять
Если у вас произошла ошибка при монтировании, та что ниже:
noauto - не монтировать автоматически при загрузке ОС.
теперь должно быть без ошибок:
% mount /dev/da0p1 |
или если использовали опцию late(опция указывает на то что раздел не будет смонтирован при mount -a, а только при mount -al ):
% mount -avl
|
Размонтировать(форсировано)
% umount -f /ExtHDD |
Смонтируем вручную с umask=002 и UID=1001(gx1) и GID=0(wheel):
% mount_ntfs-3g -o rw,locale=ru_RU.UTF-8,umask=002,uid=1001,gid=0 \
/dev/ad4s2 /windows
% cd /windows/
% mkdir -p /windows/TEST/TEST-NTFS
% :> /windows/TEST/TEST-NTFS/test-ntfs
% ls -ld /windows/TEST/TEST-NTFS
drwxrwxr-x 1 gx1 wheel 0 13 ноя 17:42 /windows/TEST/TEST-NTFS/
% ls -l /windows/TEST/TEST-NTFS/test-ntfs
-rwxrwxr-x 1 gx1 wheel 0 13 ноя 17:42 /windows/TEST/TEST-NTFS/test-ntfs*
|
Хм...,на директорию правильно, а на файл должно быть -rw-rw-r--.
Ну да ладно.
Локальная документация:
file:///usr/local/share/doc/ntfs-3g/README.FreeBSD
Дополнительные ссылки:
http://www.tuxera.com/community/
http://wiki.slavka.kiev.ua/index.php/Tools/mountntfs
NTFS-3G site: http://ntfs-3g.org/
FUSE site: http://fuse.sourceforge.net/
fuse4bsd site: http://fuse4bsd.creo.hu/
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=14951.
Источники:
https://blog.denisbondar.com/post/freebsd-add-new-hdd
https://try2fixkb.ru/linux/freebsd-11-mount-ntfs-3g
FreeBSD, установка и настройка fail2ban
обн. 05.06.2023 Fail2Ban — простой локальный сервис, который просматривает логи на предмет попытки подоброать пароли к ssh, ftp, http-сервисам. Если такие попытки найдены, fail2ban блокирует ip-адрес источника. Сервис очень гибко настраивается, способен оповещать по email, писать лог, сбрасывать блокировку через заданное время и прочее. Читать далее «FreeBSD, установка и настройка fail2ban»
Смена ИМЕЙ кода на модеме E352
Начну с конца. После нескольких часов проб набрел на указатель:
на е352 с 11 прошивкой IMEI at командами не поменять!!!
И все же, Домовой с форпэдэа помог. Запросил старый и новый имей, и в ответ прислал прогу для перепрошивки :
Это не помогло в моем случае:
Метод с DATALOCK работает только на модемах с процессором HISILICON и версия ПО в таких модемах начинается с цифры 21 или 22 как эта Firmware 21.156.00.00.143 А также версия железа Hardware CH2E303SM
Метод с модификацией прошивки HEX редактором через заморозку процесса работает
только на моделях Huawei Е1550 и Е173 с определенным размером микросхемы памяти и типом процессора QUALCOMM и версией железа CD1E153M
Грубо говоря это модифицированные прошивки для Е1550 11.609.18.00.00.B418 и для Е173 11.126.85.00.209.B427
Под другие модели и модемы прошивки никто не модифицировал.
Соотвественно на Е173 с ПО 11.126.16.17.209 или 21.017.01.00.21 21.015.01.00.21 такой метод не работает
Смена IMEI на модели Е150 Е153 E156 E160 E170 E177 E171 E173 E1750 E180 E367 E352 E392 и т.д. работает метод генерации скрипта разрешающего перезапись области в которой хранится IMEI
Сообщение отредактировал Domovoj — 28.11.18, 15:07
Программа* (Soft)— это программа управления модемом для установки на компьютер с ОС Windows, без записи в память модема.
Прошивка** (Dashboard) — это та же программа управления модемом, но подготовленная для записи в память модема:
Схема сети — чем рисовать
1) Microsoft Visio
2) Draw.io
Используем свободные телефоны для пользы дела
MediaDeb: Debian для китафонов чипах MediaTek
В этой заметке я расскажу о том, как превратить старый убитый китафон на чипе MediaTek, пылящийся на полке, уже даже без обновлений от производителя в… сервер под управлением Debian Stretch! Оную операцию я проделал для UMI-X2 и iOcean X8, и прошивки для оных и можно скачать по ссылке у меня в блоге. Учитывая, что типичный китайский телефон уже давно имеет по четыре, а то и десять процессорных ядер и 2GB оперативной памяти, а то и больше, результат получается намного более производительным, чем тот же Raspbberry PI, при схожем окружении.
Дайте догадаюсь, на полке пылится старый телефон? В котором скорее всего 4 или даже 8 ядер, в котором есть 2 GB RAM а то и больше, и уж точно хватает флеша? И не смотря на это производитель забил на апдейты. Или, быть может разбит экран, пластик поцарапан, антенна отвалилась и т.п. Аппарат за замену мы давно купили, старый уже не продашь, ибо никому даром не нужен, а выкидывать жалко.
Именно такие старые аппараты у меня и пылились на чердаке, вот и решил я из них сделать небольшие такие сервачки с debian на борту.
Так что я готов представить общественности первую версию моего небольшого проектика ‘MediaDeb’, который позволяет запустить на mediatek’овских трубках debian. И нет, это не chroot, где отдельные программы из debian запускаются параллельно с android. Это полноценная установка debian с кастомным ядром, в котором включено все, что нужно чтобы развернуть systemd, iotop и прочие нужности, отключен некоторые android-специфичные вещи, которые ломают debian-окружение. Сам же android выпилен из системы во имя экономии оперативной памяти и флеша.
Иными словами, если можно просто взять телефон, прошить его через SP Flash Tool debian прошивкой, воткнуть usb провод и вуоля: устройство определиться как композитное усб устройство с сетевым адаптером, виртуальным ком-портом и флешкой. Последовательный порт можно использовать, чтобы получить доступ к консоли, если вдруг неправильно настроена сеть. По умолчанию прошивка попытается получить IP адрес через dhcp на rndis интерфейсе. Теперь этого зомби можно положить на полку и представить, что мы арендовали небольшой выделенный сервер.
На что годится такой зомби?
В моем случае основное применение для этих зомби-телефонов – кросс-сборка программного обеспечения для arm используя платформу непрерывной интеграции jenkins. Так же в таком варианте этот аппарат можно использовать как небольшой дешевый сервер, например для персонального блога (долгое время этот самый блог крутился на сервере со схожими характеристиками).
А батарея не разбухнет постоянно держать аппарат на зарядке?
Если батарею телефона постоянно держать на зарядке, т.е. заряженной до 4.2 вольт, то через некоторое время она раздуется и будет ни на что не пригодна. Вдумчивая раскурка исходных кодов с применением зеленого чая показала, что это значение захардкожено в драйвере PMIC. А значит его можно отредактировать и выставить, например, в значение 3.7-3.8 вольт, что позволит батарее месяцами находиться на зарядке, и при этом в случае сбоя питания этого хватит чтобы успеть корректно завершить работу. Пока этот batteryhack сделан только для UMI-X2, Iocean-X8 на очереди.
В каком все состоянии?
Пока проект находится в зачаточной стадии (т.е. собирается на моей машине, результат вполне сносно работает). Я добавил базовую поддержку трубок UMI-X2 (MT6589, 4 ядра) и iOcean X8 (MT6592, 8 ядер). Базовая поддержка телефонов на этих чипсетах должна быть сравнительно простой. Если хотите помочь и портировать это безобразие на свою трубку – милости просим на github
В следующих заметках я постараюсь рассказать про то, как портировать MediaDeb на другие устройства на базе чипов mtk.
Источник:
https://ncrmnt.org/2017/08/04/mediadeb-debian-%D0%B4%D0%BB%D1%8F-%D0%BA%D0%B8%D1%82%D0%B0%D1%84%D0%BE%D0%BD%D0%BE%D0%B2-%D1%87%D0%B8%D0%BF%D0%B0%D1%85-mediatek/?lang=ru
Фото: Дарья Григоревская
Восстановление загрузчика ОС
Представьте себе, по какой-либо причине у вас есть другие операционные системы, установленные рядом с Debian. Или по какой-то другой причине вам придется его переустановить, потому что он на самом деле сломан. Опять же, представьте себе, у этой дрянной ОС получилась дрянная установка и она переписала загрузочную запись MBR, полностью завладев компьютером. Что дальше? Переустановка Debian? Нет.
Теория установки загрузчика
Т.е, каждый жесткий диск может содержать ЕДИНСТВЕННУЮ загрузочную запись, причем расположена она отдельно от самих разделов жесткого диска.
В нашем примере, главная загрузочная запись для первого диска sda находиться на /dev/sda, а не на /dev/sda1. На /dev/sda1 находится первый раздел нашего диска.
Стандартная процедура
Загрузиться c установочной флешки Debian. Выбирать установку Rescue, дойти до выбора логических дисков и запустить оболочку, затем ознакомится с присутствующими дисками командой «fdisk -l» и выбрать жесткий диск, на котором установлены были ОС(не логические(sda1), а сам хард(sda)у меня Windows7 и Debian9 стояли на /dev/sda…), далее «grub-install /dev/sda» и всё. Перезагрузка.
Установка и настройка FTP-сервера на FreeBSD 11.0 Release. Практика использования ProFTPD
Задача: установить FTP-сервер для оперативного выкладывания для клиентов больших файлов, которые сложно переслать по почте. Будем использовать ProFTPD.
Введение
ProFTPD появился как безопасный и удобно настраиваемый FTP-сервер, используя Apache-подобный синтаксис файла конфигурации.
В то время когда начали создавать ProFTPD, наиболее часто используемым сервером был wu-ftpd. wu-ftpd обеспечивает отличную производительность, но испытывает недостаток в многочисленных функциях новых серверов Win32 FTP, а также имеет плохую историю безопасности. Многие люди, в том числе разработчиков, которые работают на ProFTPD, потратил много времени на исправление ошибок и дыр безопасности wu-ftpd. Но к сожалению, стало ясно, что необходим начать с нуля для реализации легкой конфигурируемости и обеспечения безопасности.
Есть и другие серверы FTP, который значительно более безопасные и менее ресурсоемкие, чем wu-ftpd. Но к сожалению, не предлагают набор расширенных функций, необходимых для более сложных FTP сайтов.
ProFTPD это безопасный FTP сервер разработанный с нуля, удобный и легко конфигурируемый. Очень много хорошо известных и высоконагруженных серверов используют ProFTPD.
Установка ProFTPD
Найдем нужный порт и установим его через portmaster.
# whereis proftpd
proftpd: /usr/ports/ftp/proftpd
# portmaster /usr/ports/ftp/proftpd
Либо через порты:
#cd /usr/ports/ftp/proftpd && make install clean
===> SECURITY REPORT:
This port has installed the following files which may act as network
servers and may therefore pose a remote security risk to the system.
/usr/local/libexec/proftpd/mod_snmp.so
/usr/local/sbin/proftpd
/usr/local/libexec/proftpd/mod_radius.so
/usr/local/bin/ftpdctl
This port has installed the following startup scripts which may cause
these network services to be started at boot time.
/usr/local/etc/rc.d/proftpd
If there are vulnerabilities in these programs there may be a security
risk to the system. FreeBSD makes no guarantee about the security of
ports included in the Ports Collection. Please type ‘make deinstall’
to deinstall the port if this is a concern.
For more information, and contact details about the security
status of this software, see the following webpage:
http://www.proftpd.org/
===>>> Installation of ftp/proftpd (proftpd-1.3.5b) complete
Установка завершена, перейдем к настройке.
Настройка ProFTPD
Посмотрим файл конфигурации, который создал установщик /usr/local/etc/proftpd.conf
#
# For more information about Proftpd configuration
# see http://www.proftpd.org/
#
# This is a basic ProFTPD configuration file (rename it to
# ‘proftpd.conf’ for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# «nobody» and «ftp» for normal operation and anon.
ServerName «ProFTPD Default Installation»
ServerType standalone
DefaultServer on
ScoreboardFile /var/run/proftpd/proftpd.scoreboard
# Port 21 is the standard FTP port.
Port 21
# Use IPv6 support by default.
UseIPv6 on
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances 30
CommandBufferSize 512
# Set the user and group under which the server will run.
User nobody
Group nogroup
# To cause every FTP user to be «jailed» (chrooted) into their home
# directory, uncomment this line.
#DefaultRoot ~
# Normally, we want files to be overwriteable.
AllowOverwrite on
# Bar use of SITE CHMOD by default
DenyAll
# A basic anonymous configuration, no upload directories. If you do not
# want anonymous users, simply delete this entire section.
#########################################################################
# #
# Uncomment lines with only one # to allow basic anonymous access #
# #
#########################################################################
#
# User ftp
# Group ftp
### We want clients to be able to login with «anonymous» as well as «ftp»
# UserAlias anonymous ftp
### Limit the maximum number of anonymous logins
# MaxClients 10
### We want ‘welcome.msg’ displayed at login, and ‘.message’ displayed
### in each newly chdired directory.
# DisplayLogin welcome.msg
# DisplayFirstChdir .message
Limit WRITE everywhere in the anonymous chroot
# # DenyAll
# #
По сути все должно уже работать с этим конфигом.
Запуск ProFTPD
В файл /etc/rc.conf добавляем строку
proftpd_enable=»YES»
Запускаем без перезагрузки сервера сервис ProFTPD:
# service proftpd start
Вышла ошибка:
# service proftpd start
Starting proftpd.
2016-12-19 11:26:14,483 srv01 proftpd[14406]: fatal: UseIPv6: Use of the UseIPv6 directive requires IPv6 support (—enable-ipv6) on line 19 of ‘/usr/local/etc/proftpd.conf’
/usr/local/etc/rc.d/proftpd: WARNING: failed to start proftpd
Закомментировал строку:
# Use IPv6 support by default.
# UseIPv6 on
Запустил заново, вышла ошибка:
# service proftpd start
Starting proftpd.
2016-12-19 11:31:07,047 srv01 proftpd[14439]: warning: unable to determine IP address of ‘srv01’
2016-12-19 11:31:07,047 srv01 proftpd[14439]: error: no valid servers configured
2016-12-19 11:31:07,047 srv01 proftpd[14439]: fatal: error processing configuration file ‘/usr/local/etc/proftpd.conf’
/usr/local/etc/rc.d/proftpd: WARNING: failed to start proftpd
Имя сервера у меня srv01, добавляю в hosts
192.168.146.252 srv01
Теперь все успешно запустилось:
# service proftpd start
Starting proftpd.
Перезапустить можно командой:
# service proftpd restart
Теперь можно на любом клиенте проверить доступ к серверу по следующему адресу (в адресной строке любого браузера набираете):
ftp://192.168.146.252/
Появляется запрос на вводи имени и пароля, вводите необходимые данные и попадаете в домашнюю папку пользователя.
Естественно вводите существующего пользователя системы FreeBSD 11.0
По сути вот мы и произвели простейшую настройку ФТП-сервера для использования в локальной сети.
Думаю надо остановиться на вопросах прописывания правил для файерволла ipfw, для того, чтобы открыть доступ снаружи к установленному фтп-серверу.
Русские символы в название файла
Проблема: на FreeBSD 11.0 установлена локаль UTF-8, при доступе к файлу, которые именован русскими буквами произошла ошибка.
Решение: добавил в конфигурационный файл следующие строки
UseEncoding utf8 cp1251
Полезные команды ProFTPD
Проверка правильности синтаксиса конфигурационного файла
# proftpd -t
Checking syntax of configuration file
Syntax check complete.
Проверка поддерживаемых модулей
# proftpd -l
Compiled-in modules:
mod_core.c
mod_xfer.c
mod_rlimit.c
mod_auth_unix.c
mod_auth_file.c
mod_auth.c
mod_ls.c
mod_log.c
mod_site.c
mod_delay.c
mod_facts.c
mod_dso.c
mod_ident.c
mod_auth_pam.c
mod_ctrls.c
mod_lang.c
Описание настроек ProFTPD
Все что написано выше, это простейшая конфигурация ProFTPD сервера. В реальной жизни может использоваться только в локальной сети.
К сожалению в жизни все не просто так. Начнем с того, что сам протокол FTP не является безопасным, поэтому используют различные ухищрения, чтобы его использование не дискредитировало вас и ваш сервер.
Начнем, будем создавать виртуальных ftp-пользователей. То есть они не имеют системной учетной записи в самой системе FreeBSD. Есть несколько вариантов хранения учетных записей виртуальных пользователей.
Предлагаю начать с использования альтернативного файла имен и паролей пользователей, также можно использовать базу данных MySQL.
Выполним начальные настройки, которые нам советуют сделать в дефолтном конфигурационном файле.
# To cause every FTP user to be «jailed» (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~
ServerIdent on «FTP Server ready.»
Подготовительный этап
Создаем место для хранения файлов, я использую zfs поэтому производим следующие манипуляции:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
bootpool 121M 1,80G 121M /bootpool
zroot 3,59G 888G 96K /zroot
zroot/ROOT 1,58G 888G 96K none
zroot/ROOT/default 1,58G 888G 1,58G /
zroot/tmp 144K 888G 144K /tmp
zroot/usr 2,01G 888G 96K /usr
zroot/usr/home 136K 888G 136K /usr/home
zroot/usr/ports 1,41G 888G 1,41G /usr/ports
zroot/usr/src 608M 888G 608M /usr/src
zroot/var 736K 888G 96K /var
zroot/var/audit 96K 888G 96K /var/audit
zroot/var/crash 96K 888G 96K /var/crash
zroot/var/log 232K 888G 232K /var/log
zroot/var/mail 120K 888G 120K /var/mail
zroot/var/tmp 96K 888G 96K /var/tmp
Смотрим как сейчас, затем создаем файловую систему:
# zfs create zroot/data
Смотрим что получилось
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
bootpool 121M 1,80G 121M /bootpool
zroot 3,59G 888G 96K /zroot
zroot/ROOT 1,58G 888G 96K none
zroot/ROOT/default 1,58G 888G 1,58G /
zroot/data 96K 888G 96K /zroot/data
zroot/tmp 144K 888G 144K /tmp
zroot/usr 2,01G 888G 96K /usr
zroot/usr/home 136K 888G 136K /usr/home
zroot/usr/ports 1,41G 888G 1,41G /usr/ports
zroot/usr/src 608M 888G 608M /usr/src
zroot/var 736K 888G 96K /var
zroot/var/audit 96K 888G 96K /var/audit
zroot/var/crash 96K 888G 96K /var/crash
zroot/var/log 232K 888G 232K /var/log
zroot/var/mail 120K 888G 120K /var/mail
zroot/var/tmp 96K 888G 96K /var/tmp
Выделенным место для хранения файлов сервера фтп.
Можно назначить квоту, зарезервировать необходимое место и включить автоматическое сжатие хранимых данных. Команды ниже не обязательны, это опции. Если не понимаете, что они значат не выполняйте их, значит оно вам не нужно.
#Резервируем место под свою файловую систему
zfs set reservation=800m zroot/data
#Устанавливаем квоту для вашей файловой системы, которую вы не сможете превысить
zfs set quota=800m zroot/data
#Включаем компрессию.
zfs set compression=on zroot/data
Настройка доступа ftp-пользователей к директориям
Изменяем владельца директории /zroot/data (необходимо указать нужную группу и пользователя ниже)
Создаем сначала реального пользователя через adduser
# adduser
Username: proftp
Full name:
Uid (Leave empty for default):
Login group [proftp]:
Login group is proftp. Invite proftp into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]: nologin
Home directory [/home/proftp]: /zroot/data
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : proftp
Password : *****
Full Name :
Uid : 1002
Class :
Groups : proftp
Home : /zroot/data
Home Mode :
Shell : /usr/sbin/nologin
Locked : no
Затем права папке присваиваем
# chown proftp:proftp /zroot/data
Выставляем права доступа к директории, иначе увидим permission denied
# chmod 775 /zroot/data
Теперь виртуальные пользователи могут создавать, редактировать и удалять файлы и папки.
Смотрим в файле /etc/passwd uid и gid созданного юзера, у меня вышло 1002
Сохраняем учетные записи виртуальных пользователей в текстовом файле
Необходимо, чтобы ftp-пользователь имел возможность редактировать и удалять файлы.
Создаем нового виртуального ftp-пользователя с логином ftpuser, идентификатором 1002, группой 1002 и домашним каталогом /data.
ftpasswd —passwd —file=/usr/local/etc/proftpd/ftpd.passwd
—name=ftpuser —uid=1002 —gid=1002 —home=/zroot/data
—shell=/usr/sbin/nologin
После выполнения команды система попросит ввести дважды пароль пользователя.
В итоге, у нас появится файл /usr/local/etc/proftpd/ftp.passwd с записью о пользователе.
Изменить пароль пользователя можно следующей командой:
ftpasswd —passwd —name=ftpuser —change-password
Изменяем /usr/local/etc/proftpd.conf, для подключения виртуального пользователя:
RequireValidShell off
AuthUserFile /usr/local/etc/proftpd/ftpd.passwd
Перезапускаем ftp-сервер:
service proftpd restart
Мониторинг работы ProFTPD
ftpcount — показывает число соединений в настоящий момент (с разбивкой по виртуальным хостам).
ftpwho — показывает информацию о каждом текущем соединении (—verbose показывает также текущую рабочую директорию).
ftptop — аналог программы top для процессов ProFTPD.
Настройкалогов
Добавляем в/usr/local/etc/proftpd.conf
ExtendedLog /var/log/ftp.log
TransferLog /var/log/proftpd
SystemLog /var/log/proftpd/proftpd.log
Создаем необходимые файлы.
touch /var/log/ftp.log
mkdir /var/log/proftpd
touch /var/log/proftpd/xferlog
touch /var/log/proftpd/proftpd.log
Выпускаем наружу FTP-сервер через шлюз с помощью NAT (ProFTPD)
Читаем документацию и пробуем.
Сначала добавляем строку в ваш конфигурационный файл proftpd.conf. Прописываем днс-имя или ip-адрес, в зависимости от того, как вы будете обращаться к серверу снаружи.
Добавляем директиву MasqueradeAddress
MasqueradeAddress ftp.mydomain.com # если используете DNS-имя
MasqueradeAddress 123.45.67.89 # если используете IP-адрес
Естественно используете публичный адрес, а не локальный.
Существует одна большая проблема, дело в том что при пассивном режиме фтп используются порты от 1024 и выше, что означает , что вы должны направить все порты 1024-65535 от NAT к FTP-серверу. Скажем так, это не очень безопасно.
Для решения этой проблемы, используйте директиву PassivePortsв вашем конфигурационном файле proftpd.conf, чтобы контролировать , какие порты proftpd будут использоваться для передачи данных в пассивном режиме:
PassivePorts 50000 50200 # Эти порты должны быть безопасными
Обратите внимание, что если сконфигурированный диапазон портов слишком мал, то соединенные клиенты могут испытывать задержки или даже не подключаться, когда они запрашивают подключение через пассивный режим передачи данных.
Перезапускаете proftpd сервер.
# service proftpd restart
Stopping proftpd.
Waiting for PIDS: 18273.
Starting proftpd.
2016-12-22 11:20:09,680 srv01 proftpd[23575] srv01: 192.168.146.252:21 masquerading as 123.45.67.89
Увидите примерно такую же запись, которая приведена выше. С первой частью задания вы справились.
Настройка директории для хранения файлов proftpd.conf
AllowOverwrite on
AllowStoreRestart on
AllowAll
AllowAll
Немного теории: принцип работы протокола FTP
Существует два режима работы протокола FTP:
активный режим работы протокола FTP;
Это когда клиент соединяется на 21 порт сервера, затем сервер при необходимости создает DATA соединение с 20 порта на указанный порт клиента (от 1024 и выше).
пассивный режим работы;
Клиент соединяется на 21 порт сервера, затем клиент при необходимости создает DATA соединение на указанный порт сервера. Диапазон портов сервера для данного режима как раз прописывается в конфигурационном файле ProFTPD, параметр PassivePorts.
Клиенту удобнее использовать пассивный режим, а серверу удобнее использовать активный режим, так как проще настройка ipfw.
Правила IPFW для проброса FTP на внутренний сервер локальной сети
Для активного режима:
#NAT
$ipfw nat 1 config log if $internet_interface reset same_ports deny_in \
redirect_port tcp 192.168.146.252:21 21
$ipfw add 00500 nat 1 ip from any to any via $internet_interface
$ipfw add 00605 allow tcp from any to 192.168.146.252 21 setup
$ipfw add 00606 allow tcp from me 20 to any setup
(надо еще проверить, не забыть про параметр в /etc/sysctl.conf net.inet.ip.fw.one_pass=0 )
Для пассивного режима:
#NAT
$ipfw nat 1 config log if $internet_interface reset same_ports deny_in \
redirect_port tcp 192.168.146.252:21 21 \
redirect_port tcp 192.168.146.252:50000-50200 50000-50200
$ipfw add 00500 nat 1 ip from any to any via $internet_interface
(проверено работает,net.inet.ip.fw.one_pass=0)
Использованы материалы: http://www.andrewblog.ru/ustanovka-i-nastrojka-ftp-servera-na-freebsd-11-0-release-praktika-ispolzovaniya-proftpd/
Прописать список баз 1С для всех пользователей
Для того, чтобы прописать список баз 1С для всех пользователей необходимо выполнить следующие операции:
- прописать у себя нужные базы
- скопировать свой файл C:\Documents and Settings\All Users\Application Data\1C\1CEStart\ibases.v8i, например, в C:\path_to_base\
- в файл 1CEStart.cfg вставить:
CommonInfoBases=C:\path_to_base\ibases.v8i
и положить его в C:\Documents and Settings\All Users\Application Data\1C\1CEStart Читать далее «Прописать список баз 1С для всех пользователей»