FreeBSD: начальные настройки

Начальная подготовка к работе с системой FreeBSD

# portsnap fetch (обновляем порты)# portsnap extract (распаковываем их)
# cd /usr/ports/ports-mgmt/portmaster && make install clean (устанавливаем portmaster для работы с портами)
# portmaster -PP ru-freebsd-doc (документация по умолчанию в каталог /usr/share/doc, не обязательно)
# portmaster /usr/ports/misc/mc  (устанавливаем Midnight Commander)
# drill ya.ru (проверяем DNS)

Русификация терминала FreeBSD с использованием UTF-8

При добавлении пользователя можно указать класс russian

pw useradd user_name -L russian

Если пользователь существует, то тогда редактируем:

pw usermod user_name -L russian

В том числе делаем это и для root:

pw usermod -n root -L russian

В /boot/loader.conf добавляем параметр

hw.vga.textmode=0

Далее выходим и заходим под этим пользователем, получаем русский язык в удаленной консоли.

Если нужен русский язык непосредственно на экране компьютера, а не через удаленное подключение, то нужно включить консольный драйвер vt, для этого добавить в /boot/loader.conf строку:

kern.vty=vt

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

Коротко о новом драйвере консоли FreeBSD — VT (aka newcons).

Редактор по умолчанию в FreeBSD

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

Переходим в домашний каталог и редактируем файл .cshrc

cd ~
ee .cshrc

Ищем строчку setenv EDITOR vi и меняем vi на другой более удобный редактор. На новой системе можно испо\льзовать ee, а если же установлен Midnight Commander, то пишем mcedit.

Далее перечитываем настройки либо логинимся заново

source .cshrc

Работа с портами FreeBSD

Какие порты нужно обновить

pkg version -v | grep "need"

установить порт

portmaster lang/perl5.18

удалить порт

portmaster -e lang/perl5.18

переустановить порт с новой версией

portmaster -o lang/perl5.32 lang/perl5.30
# обновить порты, которые были собранные на старой версии perl
portmaster -R `pkg shlib -qR libperl.so.5.30`

обновление всех портов, для которых есть обновления

portmaster -a
# или если использовать пакеты:
pkg upgrade

удалять при установке старые версии пакетов

portmaster -d ...

пересобрать все что зависит от порта gettext

portmaster -r gettext

Просмотр доступных новых версий

portmaster -L

Обновить все PHP5 пакеты

portupgrade "php5-*"

Показать основные порты (не зависимости)

portmaster --list-origins

Удаление неиспользуемых зависимостей

# pkg autoremove

удалить все старые скаченные дистрибутивы пакетов из distfiles

portmaster --clean-distfiles-all

Аудит безопасности

pkg audit -F

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

pkg check -Bd

Установить порт не взирая на уязвимости

make DISABLE_VULNERABILITIES=yes install clean

Удалить порты, которые нужны были только для установки и самостоятельной ценности не несут (правда при следующей установке приложений они опять установятся)

pkg autoremove

Обновить все порты, которые требуют обновления

portmaster -d `pkg version | grep "<" | awk '{ print $1 }'`

ОБНОВЛЕНИЕ ДЕРЕВА ПОРТОВ

Первый запуск

#portsnap fetch extract

Обновление дерева портов

# portsnap fetch update

Можно просто запустить с auto — само запустит extract или update в зависимости от того что необходимо:

# portsnap auto

Ежедневное обновление — прописать в файл /etc/crontab

0 3 * * * root portsnap -I cron update && pkg_version -vIL=

Если выводится ошибка Snapshot is corrupt, тогда удаляем и заново скачиваем базу портов

rm -rf /var/db/portsnap
mkdir /var/db/portsnap
portsnap fetch extract

Обновление списка пакетов

pkg update

КОМАНДЫ MAKE ДЛЯ РУЧНОЙ УСТАНОВКИ

извлечь исходники для сборки

make extract

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

make config

показать варианты конфигурирования

make showconfig

удалить пользовательские настройки для сборки

make rmconfig

показать какие файлы будут загружены

make fetch-list

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

make fetch-recursive-list

собрать приложение

make

собрать и установить приложение

make install

удалить приложение

make deinstall

переустановить приложение

make reinstall

удалить рабочие файлы

make clean

Добавление подключения через SSH по файлу ключа во FreeBSD

Создание файлов ключа в FreeBSD

Запускаем создание файлов ключа, лучше использовать ed25519

ssh-keygen -o -a 100 -t ed25519

если сервер не поддерживает ed25519, то используем RSA 4096 бит

ssh-keygen -o -a 100 -t rsa -b 4096

Если создаем ключ, для текущего пользователя, то файлы будут сохранены в домашнем каталоге: ~/.ssh/id_rsa (приватный ключ) и ~/.ssh/id_rsa.pub (публичный ключ).

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

Приватный ключ копируем и забираем себе на компьютер, на сервере его удаляем, а публичный ключ кладем в домашней папке пользователя (к которому хотим залогиниться) в файл ~/.ssh/authorized_keys, ставим этому файлу права 600, а папке ~/.ssh/ права 700

chmod 600 ~/.ssh/authorized_keys
chmod -R 700 ~/.ssh

В файле  /etc/ssh/sshd_config включаем опцию

PubkeyAuthentication yes

После удачного тестирования авторизации по ключу не забываем выключить авторизацию по паролю и авторизацию для рута

PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

Можно сгенерировать файлы ключей на компьютере и также потом просто положить публичный ключ в файл ~/.ssh/authorized_keys пользователя (см. ниже как создать ключ на компьютере).

Если на сервере не сгенерированы серверные ключи ssh или сервер был клонирован со старыми ключами, то генерируем ключи на сервере:

rm -v /etc/ssh/ssh_host_*
ssh-keygen -A
rm -v /etc/ssh/ssh_host_dsa_*

Подключение по SSH с ключом из Windows

Для подключения из-под Windows используем старый добрый Putty, но нужно скачать последнюю версию (>=0.73), чтобы успешно импортировать ключи.

Добавление существующего ключа

Запускаем программу puttygen.exe, в меню выбираем Conversions -> Import key и выбираем наш сохраненный файл ключа. Если ключ был создан с паролем, то будет запрошен пароль на ключ.

В открывшемся окне увидим наш загруженный ключ, можно сменить там если нужно пароль, далее нажимаем Save private key и сохраняем ключ в файле *. ppk.

Генерирование ключа в Putty

Можно приватный и публичный ключ сгенерировать в Putty. Запускаем puttygen.exe, в параметрах выбираем ed25519 (или если сервер не поддерживает, то RSA с длиной ключа 4096). Нажимаем кнопку Generate, нужно подергать мышью для создания рандомности, затем вводим пароль доступа к ключу, можно ввести в key comment что-то осмысленное и сохраняем ключ кнопкой Save private key. Поле сверху содержит публичный ключ, который нужно скопировать на сервер в папку пользователя.

Добавление ключа для подключения в Putty

Идем в Putty, для нужного подключения заходим в меню слева в пункт Connection->SSH->Auth и в поле «Private key for authentification» выбираем наш сохраненный ключ.

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

Сохранение ключей и паролей в KeePass

Приватные ключи для соединения через SSH можно хранить в KeePass. Для этого ставим плагин KeeAgent. Файл ключа сохраняем для нужной записи во вкладке Advanced->File attachments. Далее идем во вкладку KeeAgent, отмечаем галку «Add KeeAgent to use this entry», из списка выбираем загруженный файл ключа и нажимаем ОК.

Далее идем в меню Tools->KeeAgent, снизу нажимаем кнопку «Add» и выбираем из меню «from KeePass». Ищем нашу запись и выбираем ее. Ставим галку «Require confirmation» если хотим чтобы перед авторизацией выводился запрос Да/Нет, иначе авторизация будет проходить автоматом, будет вылезать только уведомление (можно включать эту опцию глобально для всех ключей в настройках программы — Tools->Options->KeeAgent->Always require user confirmation…).

Чтобы при запросе выводился список из ключей для выбора (иначе будут для одного логина перебираться все возможные ключи и сервер может отказать после нескольких неудачных попыток) надо в глобальных настройках включить опцию Tools->Options->KeeAgent->Show key selection dialog…

Теперь в настройках Putty у нужного соединения идем в Connection->SSH->Auth, ставим галки «Attempt authentificationi using Peagant» и «Allow agent forwarding» и сохраняем настройки.

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

IPFW

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

/etc/firewall.conf

Применить правила без перезагрузки

/bin/sh /etc/firewall.conf