Установка, настройка и сброс пароля WebMin во FreeBSD

Автор: Воронов Глеб | 08-05-2013 Нет комментариев

WebMin — крайне полезная вещь для начинающих администраторов. Консоль Unix — неоспоримо мощная штука. Но не всем так просто сразу её освоить. Кнопочки, подсказки и описания, ещё и на русском — то, от чего вряд ли откажется молодой красноглазик.
Когда я узнал об этом продукте, то установил, как и многое — чисто потестить. Особо ничем она мне не помогла, так как сервер уже был настроен и отлажен, но все же иногда устанавливаю…
Установка как обычно проще простого:

cd /usr/ports/sysutils/webmin/
make && make install && make clean

После сборки и установки вылезла кратенькая инструкция. Как я заметил от версии к версии она не меняется:

After installing Webmin for the first time you should perform the following
steps as root:

* Configure Webmin by running /usr/local/lib/webmin/setup.sh

* Add webmin_enable=»YES» to your /etc/rc.conf

* Start Webmin for the first time by running /usr/local/etc/rc.d/webmin start

The parameters requested by setup.sh may then be changed from within Webmin
itself.

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

/usr/local/etc/rc.d/webmin start
Starting webmin.
Pre-loaded WebminCore

Все, работает.
можно заходить на вебморду (не забываем порт, который указали в настройках. По умолчанию 10000)и пользоваться. Первым делом я меняю тему и язык ставлю русским(благо, выбор есть)

Забыть пароль может кто угодно. Вот так случилось и со мной. Необходимо было что то посмотреть в webmin-е на сервере, который когда то давно администрировал. И как водится — пароль не помню. Разработчики подумали о таких как я (за что им отдельный респект) и создали скрипт смены пароля.

/usr/local/lib/webmin/changepass.pl /usr/local/etc/webmin user password

Источник: https://tradenark.com.ua/centos/freebsd-webmin-installing-change-password/

Русификация UTF-8 FreeBSD

Локализация — I18N/L10N использование и настройка

1. Локализация консоли

необходим только в случае работы за локальной консолью.

Данный пункт локализации не требуется и не влияет на работу удаленных text-mode эмуляторов терминалов, таких как putty или openssh.

Итак, начиная с релиза FreeBSD 10.1 в системе для Russian UTF-8, в консольном драйвере vt (4) имеются:

— клавиатурные мапперы/переключатели:

# ls -la /usr/share/vt/keymaps/ | grep ru
-r--r--r--  1 root  wheel  16228 Nov 12 06:04 ru.kbd
-r--r--r--  1 root  wheel  16234 Nov 12 06:04 ru.shift.kbd
-r--r--r--  1 root  wheel  16232 Nov 12 06:04 ru.win.kbd

BashCopy

— фонты:

# ls -la /usr/share/vt/fonts/
-r--r--r--  1 root  wheel  8452 Nov 12 06:04 gallant.fnt
-r--r--r--  1 root  wheel  8742 Nov 12 06:04 vgarom-8x14.fnt
-r--r--r--  1 root  wheel  9864 Nov 12 06:04 vgarom-8x16.fnt
-r--r--r--  1 root  wheel  5384 Nov 12 06:04 vgarom-8x8.fnt
-r--r--r--  1 root  wheel  5400 Nov 12 06:04 vgarom-thin-8x16.fnt
-r--r--r--  1 root  wheel  2704 Nov 12 06:04 vgarom-thin-8x8.fnt

BashCopy

Шрифт gallant.fnt – красивый но не поддерживает кириллические символы.

Консольный драйвер vt (4) по умолчанию использует для работы режим VGA разрешением 640×480×16 (vt_vga).

Для использования UTF-8, необходимо произвести следующие действия:

— добавить в /boot/loader.conf строку:

kern.vty=vt

означает использование консольного драйвера vt вместо syscons

Согласно информации на https://wiki.freebsd.org/Newcons VT не поддерживает экранные заставки и выключение монитора в частности.
Поэтому все вопросы, касающиеся этой темы, можно считать решенными. Ответ на вопрос, как сделать включение заставки в VT, ответ – НИКАК

Если потребуется собрать собственное ядро, только с новым драйвером консоли, необходимо в ядро добавить:

#-- закомментарить *vga*, *sc* и оставить только *vt*
#device        vga             # VGA video card driver                 
#device        sc                                                      
device         vt                                                              
device         vt_vga

BashCopy

ps. ядро GENERIC 10.1 уже собрано с поддержкой vt (4) (man vt).

— добавить в /etc/rc.conf

#-- Russians keymap, uncomment that you preffer
# CAPS switch to russian
keymap="ru"
# SHIFT switch to russian, top keyboard raw as number
#keymap="ru.shift"
# CTRL+SHIFT switch to russian
#keymap="ru.win"
#-- font load
font8x16="vgarom-8x16"

BashCopy

Шрифт vgarom используется системой по умолчанию, можно не задавать, указан как пример задания фонта, когда появится выбор. верхнее означает что на данный момент можно использовать, как это было и ранее, три варианта клавиатурного маппинга, любой который Вам удобнее, раскомментарьте один, который Вам предпочтительней (выше это keymap=«ru»):

keymap="ru" – переключение на русский клавишей CAPS Lock
keymap="ru.shift" – переключение на русский клавишей CAPS Lock, но верхний ряд на клавиатуре по умолчанию будет цифровой
keymap="ru.win" – переключение на русский клавишами CTRL+SHIFT

выбор фонтов пока отсутствует, по умолчанию в наличии пока лишь следующие:
gallant.fnt – красивый, но не поддерживает русский
vgarom-8×8.fnt – матрица 8×8 с поддержкой русских символов
vgarom-8×14.fnt – матрица 8×14 с поддержкой русских символов
vgarom-8×16.fnt – матрица 8×16 с поддержкой русских символов
vgarom-thin-8×8.fnt
vgarom-thin-8×16.fnt

Консольные фонты Terminus, можно скачать:
фонт 8×16: ter-u16.fnt
чуть другой фонт 8×16: ter-u8x16.fnt
фонт 16×32: ter-u32.fnt

загрузить вручную, например:

# vidcontrol -f ter-u32.fnt

BashCopy

или положить в /usr/share/vt/fonts/ и настроить /etc/rc.conf, например:

font8x16="ter-u8x16.fnt"

BashCopy

Шрифты 16×32 нужны(удобны) для широкоформатных мониторов, для загрузки фонта ter-u32.fnt (16×32), нужно изменить скрипт /etc/rc.d/syscons или использовать /etc/rc.local и /etc/rc.conf.local для загрузки 16×32 фонтов.

Тип эмулируемого терминала для UTF-8 консоли: xterm

Начиная с 9.0, для syscons (4) драйвера и очень важно – для vt (4) драйвера, в /etc/ttys необходимо использовать тип эмулируемого терминала xterm:

ttyv0   "/usr/libexec/getty Pc"         xterm   on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv2   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv3   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv4   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv5   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv6   "/usr/libexec/getty Pc"         xterm   on  secure
ttyv7   "/usr/libexec/getty Pc"         xterm   on  secure

(чтобы перечитался /etc/ttys)

/etc/rc.d/syscons restart

BashCopy

Ранее, syscons (4), для KOI8-R тип эмулируемого терминала cons25r, для KOI8-Ucons25u. Для CP437 (VGA default) – cons25, US-ASCIIcons25w.

При использовании KMS драйверов: i915kms или radeonkms в /boot/loader.conf добавить:

kern.vt.fb.default_mode="1024x768"

BashCopy

Для использования vt (4) драйвера в text-mode, /boot/loader.conf:

hw.vga.textmode=1

BashCopy

Если ядро собрано с поддержкой обоих драйверов: *sc*(4) и *vt*(4), старый драйвер можно вернуть, задав в /boot/loader.conf:

kern.vty=sc

BashCopy

2. Локализация login shells и использование login class.

Описан в FreeBSD HandBook и выполняется как обычно, локализация login shell’ов и может быть использована совместно с настройкой login class через описание его в /etc/login.conf

Локализация представляет из себя следующую конструкцию:

LanguageCode_CountryCode.Encoding

BashCopy

где: LanguageCode_Country Code Description можно выбрать одно из значений:
en_US English, United States ru_RU Russian, Russia

команда покажет все присутствующие в системе locale:

# locale -a | more

BashCopy

Работа с charater set (charset) для языков, например:

– ISO8859-1, ISO8859-15, KOI8-R, CP1251, CP437 и тд и тп описана в multibyte (3), а список charsets для языков можно найти в IANA Registry

FreeBSD использует Xorg-compatible locale encodings.

1) использование login класса

— можно отредактировать /etc/login.conf и изменить настройки класса «russian» или создать отдельный класс russianu

a) изменяем класс russian в /etc/login.conf

russian|Russian Users Accounts:
        :charset=KOI8-R:
        :lang=ru_RU.KOI8-R:
        :tc=default:

BashCopy

на

russian|Russian Users Accounts:
        :charset=UTF-8:
        :lang=ru_RU.UTF-8:
        :tc=default:

BashCopy

или

b) создаем в дополнение к классу «russian», новый класс «russianu»

russianu|Russian Users Accounts UTF-8:
        :charset=UTF-8:
        :lang=ru_RU.UTF-8:
        :tc=default:

BashCopy

По завершении перестраиваем хеш-базу:

# cap_mkdb /etc/login.conf

BashCopy

Все, осталось перевести пользователей которым нужен UTF-8 на новый класс используя на выбор: passwd (1), pw (8), chpass (1), vipw (8)

Пример:

# pw user mod alex -L russianu

BashCopy

2) настройка locale в shell/bash/csh/tcsh

для настройки локализации в шелах, необходимо соответствующим образом настроить тот или иной shell, см. соответствующий man

Настройка локализации в login shell’ах сводится как минимум к заданию переменных:

LANG
MM_CHARSET

BashCopy

в пользовательских файлах: ~/.login_conf и/или пользовательских стартап

shell файлах: ~/.profile, ~/.bashrc, или ~/.cshrc.

BashCopy

sh/bash:

export LANG=ru_RU.UTF-8
export MM_CHARSET=UTF-8

BashCopy

csh/tsch:

setenv LANG ru_RU.UTF-8
setenv MM_CHARSET UTF-8

BashCopy

Или в системных стартап shell файлах: /etc/profile и /etc/csh.login

Для bash необходимо создать в домашней директории файл .inputrc

set convert-meta Off
set input-meta On
set output-meta On

BashCopy

Перекодировка имен файлов и директорий.
— необходимо установить и использовать утилиту convmv, из пакетов или портов

# pkg install converters/convmv
# make -C /usr/ports/converters/convmv install clean
# man convmv

BashCopy

пример использования:

# convmv -f koi8-r -t utf-8 *
# convmv -f koi8-r -t utf-8 --notest *
# convmv -r -f koi8-r -t utf-8 --notest *

BashCopy

При использовании утилиты convmv, возможны проблемы с перекодированием отдельных символов.

Перекодировка содержимого файлов.

Можно воспользоваться утилитами iconv и recode:

iconv (интегрирована в FreeBSD 10.x)

/usr/ports/converters/libiconv в более ранних версиях

примеры использования:

iconv:

# man iconv
# iconv -c -f koi8-r -t utf-8 inputfile
# iconv -c -f koi8-r -t utf-8 inputfile > outputfile
# iconv -c -f koi8-r -t utf-8 < inputfile > outputfile

BashCopy

recode:

# make -C /usr/ports/converters/recode install clean
# man recode
# recode koi8-r..utf-8 inputfile
# recode koi8-r..utf-8 < inputfile > outputfile

BashCopy

При использовании утилиты iconv, возможны проблемы с перекодированием отдельных символов, утилита recode, работает более адекватно.

Удаленный терминальный доступ.

Для удаленного терминального доступа из системы с UTF-8 локализацией к системам с locale отличной от UTF-8, можно воспользоваться утилитой luit:

пример использования luit (man luit):

# luit -encoding "KOI8-R" slogin username@host.domain

BashCopy

в качестве encoding использовать charset соответствующие удаленному locale, в данном примере KOI8-R

Удаленный терминальный доступ из Windows в Unix-like OS с locale UTF-8:

— использование утилиты putty, настройка:

Putty -> Window -> Translation -> Remote character set: UTF-8

3. Локализация Xorg

осталась неизменной, так как основная масса DE, WM и X-Apps в настоящее время ориентирована на работу с UTF-8, больше не нужно использовать shell-wrapper’ы или переопределять переменную LANG для их запуска.

фонты в Xorg:

— при использовании locale == ru_RU.UTF-8, необходимо использовать фонты с поддержкой iso10646

misc содержат исправленные фонты iso10646, но по умолчанию не прописаны в fonts.aliases, если есть привычка использования алиасов, придется прописать их самостоятельно.

Например, как советует Markus Kuhn Unicode fonts and tools for X11.

— фонты misc с iso10646 и остальные фонты с iso10646, необходимо указывать первыми в xorg.conf

например так:

FontPath     "/usr/local/lib/X11/fonts/misc/"
        FontPath     "/usr/local/lib/X11/fonts/100dpi/"
        FontPath     "/usr/local/lib/X11/fonts/75dpi/"
        FontPath     "/usr/local/lib/X11/fonts/terminus-font/"
        FontPath     "/usr/local/lib/X11/fonts/bitstream-vera/"
        FontPath     "/usr/local/lib/X11/fonts/dejavu/"
        FontPath     "/usr/local/lib/X11/fonts/freefont/"
        FontPath     "/usr/local/lib/X11/fonts/unifont/"
        FontPath     "/usr/local/lib/X11/fonts/local/"
        FontPath     "/usr/local/lib/X11/fonts/webfonts/"
        FontPath     "/usr/local/lib/X11/fonts/urw/"
        FontPath     "/usr/local/lib/X11/fonts/cyrillic/"
        FontPath     "/usr/local/lib/X11/fonts/artwiz-ru/"
        FontPath     "/usr/local/lib/X11/fonts/freefont-ttf/"
        FontPath     "/usr/local/lib/X11/fonts/urwfonts-ttf/"
        FontPath     "/usr/local/lib/X11/fonts/TTF/"
        FontPath     "/usr/local/lib/X11/fonts/OTF/"
        FontPath     "/usr/local/lib/X11/fonts/Type1/"

BashCopy

Вы можете установить собственные предпочтения.

посмотреть установленные фонты:

# fc-list
# ls -laR /usr/local/etc/fonts/

BashCopy

— посмотреть фонты iso10646

# xlsfonts | grep iso10646
# xlsfonts | grep "-misc-fixed-medium" | grep iso10646 
# xlsfonts | grep "-misc-fixed-medium-r-semicondensed" | grep 10646

BashCopy

графические эмуляторы терминала с encoding, примеры с KOI8-R:

mate-terminal, gnome-terminal:

# sh -c "export LANG=ru_RU.KOI8-R CHARSET=KOI8-R; gnome-terminal --geometry 80x35 --disable-factory"
# sh -c "export LANG=ru_RU.KOI8-R CHARSET=KOI8-R; mate-terminal --geometry 80x35 --disable-factory"
# sh -c "export LANG=ru_RU.KOI8-R CHARSET=KOI8-R; xfce4-terminal"

BashCopy

переменные среды LANG,CHARSET в соответствии с использованием locale, например на удаленной стороне, или для локальной работы с файлами в KOI8-Rxterm с encoding

# xterm -en [koi8-r|cp1251|...]

BashCopy

4. Локализация Applications (приложений).

Зависит исключительно от написания приложения в соответствии со стандартом i18n и работой с базами termcap в случае xBSD или terminfo в случае Linux или SYSV-based для эмулируемого терминала TERM.

К сожалению, консольных фонтов пока, очень мало, не говоря уже о хороших и красивых фонтах.
Некоторые фонты и клавиатурный маппинг от Александра Рыбалко, можно найти:
https://people.freebsd.org/~ray/newcons/fonts/
https://people.freebsd.org/~ray/newcons/newcons_kbd/
https://people.freebsd.org/~emaste/newcons/

Пример конвертации bdf фонта в fnt используя vtfontcvt и его загрузку используя vidcontrol, см: https://wiki.freebsd.org/Newcons

Минимум позволяющий работать в консоли с UTF-8:
— отображение – /usr/bin/less (использовать в качестве PAGER)
— редактирование – /usr/bin/vi , редактор Vi в 10.1 собран с поддержкой wide-char
— псевдографика в mc выглядит красиво, встроенный редактор поддерживает utf-8
— любимый многими, простой редактор /usr/bin/ee не поддерживает utf-8, отображает криво, но позволяет набирать текст «вслепую».
— настройку chrasets и работу samba3x, samba4x – не проверял

Все вышенаписанное проверено на реальном железе с FreeBSD 10.1 и в гостевой FreeBSD 10.1 под VirtualBox, включая Xorg и несколько DE и WM.

Практика:
— используем syscons (4) для работы в консоли с KOI8-R, CP1251, CP866
— используем vt (4) для работы в консоли только с UTF-8

Вывод: наконец можно постепенно избавиться от разнообразия: CP866,CP1251,KOI8-R и тд и тп и использовать одну универсальную кодировку UTF-8.

источник: http://unix1.jinr.ru/~lavr/vt/vtcons.html, https://blognode.ru/freebsd-utf-8-v-konsoli-i-terminale

Добавляем виртуальных пользователей vsftpd на FreeBSD

Генерируем пароль:

openssl passwd -1 yoursecretpassword

Результат($1$5htlgrc7$FHf5uCbSol0oKKYN3upE0/), добавляем в файл /etc/vsftpd_login.db. Синтаксис файла:
Имя_юзера1:Пароль_юзера1
Имя_юзера2:Пароль_юзера2

Создать папку по имени пользователя в /home/Имя_юзера
права на нее выставить 755, владельцем сделать ftpuser‘а под которым работают виртуальные пользователи. Получить список всех пользователей:
cat /etc/passwd
.

Читать далее «Добавляем виртуальных пользователей vsftpd на FreeBSD»

Добавить жесткий диск в FreeBSD за 5 минут

Подробная инструкция с пояснениями

Выбор имени жесткого диска

Для начала нужно определить имя устройства, которое мы только что добавили. В этом нам поможет следующая команда:

geom disk list
01 - geom disk list

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

camcontrol devlist
02 - camcontrol devlist

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

До установки нового устройства мы знали, что наша система установлена на ada0, значит по логике вещей наш новый диск ada1. Это вы можете определить по названию нового устройства, его серийному номеру или же объему.

Теперь проверим, имеется ли разметка на нашем новом диске

gpart show ada1
03 - gpart show ada1

Диск не имеет никакой разметки.

Удаление существующей разметки

Если диск уже использовался и есть необходимость удалить с него разметку, просто выполните:

gpart destroy -F ada1

Создание разметки GPT

Для начала мы должны создать разметку диска. Крайне рекомендую забыть о MBR и перейти на новую, более удобную и функциональную — GPT.

Создаем разметку GPT на диске, затем проверяем, что вышло:

gpart create -s gpt /dev/ada1
gpart show ada1
04 - gpart create gpt

Теперь у нас диск имеет разметку 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
05 - gpart add

Размер можно указывать в байтах, а не блоках. Это значительно удобней. Единственный минус — система не всегда может корректно рассчитать количество блоков. Возможны случаи, когда на диске останется пустовать некоторое количество блоков при указании размера раздела в байтах.

Создание файловой системы (форматирование)

Разделы типа swap форматировать нет необходимости. А вот разделы типа ufs перед использованием должны быть отформатированы. Правильнее сказать: на них должна быть создана файловая система.

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

newfs -U /dev/ada1p2
06 - newfs

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

Монтирование

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

07 - etc fstab

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

Для того, чтобы перемонтировать все разделы согласно файла /etc/fstab, просто выполним команду:

mount -a
08 - mount a

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

swapinfo
09 - swapinfo 1

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

swapon /dev/ada1p1
10 - swapon

Точно так же при помощи команды swapoff нужно отключать раздел SWAP перед тем, как произвести над ним какие-то действия.

На этом все действия по добавлению нового жесткого диска в систему завершены.

Краткая инструкция

Дано: жесткий диск /dev/ada1

Цель: удалить существующую разметку, создать новую разметку GPT, создать два раздела: подкачка и данные и подключить их к рабочей системе.

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

  1. Удалить существующую разметку: gpart destroy -F ada1
  2. Создать новую разметку: gpart create -s gpt /dev/ada1
  3. Создать два раздела: подкачка и данные: gpart add -t freebsd-swap -s 2097152 /dev/ada1 gpart add -t freebsd-ufs /dev/ada1
  4. Создать файловую систему UFSv2 на втором разделе: newfs -U /dev/ada1p2
  5. Добавить в файл /etc/fstab строки для автомонтирования при загрузке: /dev/ada1p1 none swap sw 0 0 /dev/ada1p2 /mnt ufs rw 2 2
  6. Смонтировать новый раздел (команда монтирует все разделы из файла /etc/fstab): mount -a
  7. Включить в работу новый раздел 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


Установка и настройка 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/

Установка ProFTPD на FreeBSD 11

portmaster -vda (обновление всех портов, которым это необходимо)

Установка и настройка 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
<Limit SITE_CHMOD>
 DenyAll
</Limit>

# A basic anonymous configuration, no upload directories. If you do not
# want anonymous users, simply delete this entire <Anonymous> section.


#########################################################################
# #
# Uncomment lines with only one # to allow basic anonymous access #
# #
#########################################################################

#<Anonymous ~ftp>
# 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
 # <Limit WRITE>
 # DenyAll
 # </Limit>
#</Anonymous>

По сути все должно уже работать с этим конфигом.

Запуск 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, при доступе к файлу, которые именован русскими буквами произошла ошибка.

Решение: добавил в конфигурационный файл следующие строки

<IfModule mod_lang.c>
    UseEncoding utf8 cp1251
</IfModule>

Полезные команды 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

<Directory ~>
 AllowOverwrite on
 AllowStoreRestart on
 <Limit Write>
 AllowAll
 </Limit>
 <Limit READ>
 AllowAll
 </Limit>
</Directory>

Немного теории: принцип работы протокола 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/

 

OpenVPN 2.4.5 Easy-RSA FreeBSD 11.1

Памятка

  1. Используй в первую очередь руководства разработчиков, даже если они отпугивают своей скромностью оформления. Это сбережет тебе много времени.
  2. Используй за основу файлы конфигурации по-умолчанию из установленных пакетов, благо они идут с пакетами в комплекте. Даже, если придется потратить время на осознание их назначений — «Лучше пару часов потерять, потом за пять минут долететь».

Установка OpenVPN на FreeBSD

Читать далее «OpenVPN 2.4.5 Easy-RSA FreeBSD 11.1»

pkg — обновление пакетов

Как известно, во FreeBSD можно использовать пакеты как бинарные, так и собранные из исходных кодов при помощи портов. Устройство портов за последнее время ничем не изменилось. А вот на смену утилитам для управления бинарными пакетами pkg_add, pkg_info и прочим pkg_* в последних версиях FreeBSD пришел новый пакетный менеджер pkg (также известный как pkgng). Данная небольшая заметка рассказывает о том, как им пользоваться.

Примечание: Узнать о том, как во FreeBSD раньше происходило управление бинарными пакетами, и о том, как пользоваться портами, вы можете из заметки Установка и обновление софта во FreeBSD. Не исключаю также, что вас могут заинтересовать статьи Использование FreeBSD на десктопе, версия 2.0 и Памятка по обновлению ядра и мира FreeBSD.

Итак, при первом запуске pkg без параметров вы скорее всего увидите такое сообщение:

The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]:

Отвечаем утвердительно, и ждем, пока pkg установится.

Затем читаем справку:

pkg help

Посмотреть справку по конкретной команде можно так:

pkg help update

Пример, пакеты от которых зависит Webmin

# pkg info -d webmin
webmin-1.870:
 p5-Net-SSLeay-1.82
 p5-Authen-PAM-0.16_2
 python27-2.7.14_1
 perl5-5.24.3
 p5-IO-Tty-1.12_2
#

Обновляем информацию о доступных пакетах:

pkg update

Смотрим список установленных пакетов:

pkg info

Обновляем установленные пакеты:

pkg upgrade

Ищем пакет по названию:

pkg search xorg

Установка пакета/пактетов и всех его/их зависимостей:

pkg install xorg
pkg install git-lite vim-lite sudo

Удаляем пакет:

pkg delete xorg

Удаляем пакеты, которые больше не нужны:

pkg autoremove

Смотрим, к какому пакету относится файл:

pkg which /usr/local/bin/git

Посмотреть полный список файлов в пакете можно так:

pkg info -l mesa-demos

Загружаем базу известных уязвимостей:

pkg audit -F

Проверяем установленные пакеты на предмет наличия известных уязвимостей, с ссылками на подробные отчеты:

pkg audit

Проверяем все установленные пакеты на предмет валидности контрольных сумм входящих в пакеты файлов:

pkg check -s -a

Проверяем все установленные пакеты на предмет отсутствия требуемых зависимостей:

pkg check -d -a

Удаляем из кэша старые пакеты:

pkg clean

Смотрим статистику:

pkg stats

Запрещаем/разрешаем обновление конкретного пакета:

pkg lock syncthing
pkg unlock syncthing

Посмотреть список «залоченых» пакетов:

pkg lock -l

Откатиться к более старой версии пакета:

sudo pkg remove chromium
sudo pkg install /var/cache/pkg/chromium-51.0.2704.106_2.txz

В целом я хочу сказать, что управление пакетами во FreeBSD стало намного лучше, чем оно было раньше. Прям действительно есть нормальный пакетный менеджер, не только не уступающий линуксовым Yum и Apt, но в чем-то даже и превосходящих их. Например, интерфейс у pkg прост, понятен и единообразен, чего уж точно нельзя сказать об Apt. Пакеты весьма свежие. Например, когда я разбирался с pkg, с его помощью можно было установить последний на тот момент Go версии 1.5, а в Ubuntu из коробки был доступен только древнейший Go 1.2. Аналога pkg audit в мире дистрибутивов Linux мне вот так с лету и вовсе неизвестно.

Все подробности, как обычно, в man pkg. А как вам новый пакетный менеджер FreeBSD?

Источник

 

OpenSSL дополнительные настройки

После установки OpenSSL, перед скачиванием пакетов выдается сообщение(предупреждение):

/!\ WARNING /!\

You have security/openssl installed but do not have
DEFAULT_VERSIONS+=ssl=openssl set in your make.conf

Для исправления добавляем нужную запись в make.conf командой:

echo 'DEFAULT_VERSIONS+=ssl=openssl' >> /etc/make.conf

Читать далее «OpenSSL дополнительные настройки»

NTPd настройка синхронизации времени

На Hyper-v моя Freebsd резво убегает вперед, на несколько часов в день, поэтому решено настроить синхронизацию времени с внешними серверами, выбрал Саратовские).

В данной статье научимся с вами настраивать ntp клиент и сервер на примере freebsd (FreeBSD vpn 11.1-RELEASE-p4 FreeBSD 11.1-RELEASE-p4 #0: Tue Nov 14 06:12:40 UTC 2017 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64)

1) Выставляем нужный часовой пояс (например, Москва)

portsnap fetch update
cd /usr/ports/misc/zoneinfo && make install clean
cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

2) Для включения ntpdate во время загрузки добавим в файл /etc/rc.conf строки

ntpdate_enable=»YES»
ntpdate_flags=»-b 0.europe.pool.ntp.org 1.europe.pool.ntp.org 2.europe.pool.ntp.org»

3) В /etc/ntp.conf приводим к виду

restrict 127.0.0.1
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap
restrict 172.16.0.0 mask 255.255.0.0 nomodify notrap
restrict default ignore
erver ntp5.stratum2.ru burst
server ntp1.stratum2.ru burst
server 2.europe.pool.ntp.org iburst
server 3.europe.pool.ntp.org iburst
driftfile /var/db/ntp.drift
logfile /var/log/ntp.log

Читать далее «NTPd настройка синхронизации времени»