Freebsd установка, удаление программ

Введение

Во FreeBSD я обнаружил два способа централизованной установки программ. Первый способ — установка программ из готовых пакетов, хранящихся на специальном сервере-репозитории, а второй способ — сборка программы из исходников-портов.

Пакет — архив txz, содержащий всё необходимое для работы программы. Плюс в скорости установки, но минус в неполном соответствии локальному железу. Я хочу сказать, что программа в пакете, возможно, скомпилирована под древний Intel 80486 процессор, тогда как на целевом сервере трудятся два ксеона. Работать будет, но не в полную силу. Ещё один минус, как мне кажется, заключается в несвоевременности получения заплаток к найденным дыркам в приложениях. Придётся подождать, пока добрые самаритяне произведут сборку пакета с применением заплатки.

Порт — представляет собой отдельную папку с файлами, содержащими исходные коды программы и инструкции для автоматической сборки. Эту совокупность файлов необходимо собрать в программу на локальном компьютере. Огромный минус, особенно для медленных машин, в скорости установки. Компиляция может затянуться на несколько дней. А плюс тот, что программа компилируется на железе, на котором будет работать, а значит, как мне кажется, при сборке будут учтены все особенности локального железа. То есть, если программа, которую я устанавливаю из пакета, возможно скомпилирована для Intel 486 с целью максимальной совместимости с многообразием возможного железа, то при сборке этой программы из портов на сервере с двумя ксеонами, вероятно будут использованы все современные технологии, реализованные на установленном железе. Также, огромный плюс в том, что при появлении заплатки для приложения, не нужно ждать доброго дядю-компилятора и выпуска обновлённого пакета, а можно самому своевременно применить заплатку. И ещё один плюс заключается в возможности сборки программы из порта с определёнными опциями, тогда как в пакете мы получаем программу с опциями по умолчанию?

Я пользую оба способа. Алгоритм предпочтения пока мне самому не вполне ясен. Чаще собираю из портов, но и pkgng исользую.

pkg_add(1) настройка окружения

Поведением программы pkg_add(1) можно управлять с помощью переменных окружения. Переменные окружения определяют, куда распаковываются пакеты, откуда они загружаются, другие каталоги в системе, где могут находиться пакеты и т. д. Эти переменные окружения лучше устанавливать в сценарии входа в систему, чтобы использовать их согласованно.

Ниже описаны наиболее полезные настройки среды окружения для программы pkg_add(1).

PKG_TMPDIR

Переменная окружения задает каталог, в который распаковываются временные файлы. Пакет — это архив tarball с файлами программ и дополнительными инструкциями по установке. Чтобы установить пакет, его нужно разархивировать (untar). Если в стандартных каталогах мало места, то разархивирование не будет завершено, и установка прервется. По умолчанию программа pkg_add(1) обращается к каталогу, задаваемому переменной окружения . Если эта переменная не определена, pkg_add ищет свободное место в таком порядке: /tmp, /var/tmp и /usr/tmp. С помощью переменной можно задать другой каталог, где хватает свободного места:

PACKAGEROOT

По умолчанию пытается скачивать пакеты с ftp://ftp.freebsd.org. Однако, скорее всего, это далеко не лучший выбор для вас. Основное зеркало FreeBSD часто сильно перегружено и может находиться далеко от вашего компьютера. Нередко можно добиться большей производительности, выбрав более близкое и менее нагруженное зеркало. Переменная окружения предписывает программе pkg_add(1) использовать другой сервер FTP. Присвойте переменной протокол и имя конкретного сервера (без полного пути). Например, для загрузки пакетов с ftp5.us.freebsd.org введите:

PACKAGESITE

Это полный путь к хранилищу (репозитарию) пакетов. Применяется, если требуется использовать пакеты определенного «выпуска» или в системе есть локальное хранилище пакетов. (Установка локального хранилища пакетов рассматривается ниже в этой же главе.) Присвоим переменной значение в виде абсолютного URL, например, для устаревшей и неподдерживаемой версии FreeBSD:

PKGDIR

Этот каталог определяет место для размещения копий пакетов, загруженных командой , и позволяет организовать хранение загруженных пакетов.

4.4.3. Управление пакетами

pkg_info(1) является утилитой для вывода списка и описаний
различных установленных пакетов.

    # pkg_info
    cvsup-16.1          A general network file distribution system optimized for CV
    docbook-1.2         Meta-port for the different versions of the DocBook DTD
    ...

pkg_version(1) является утилитой для вывода отчёта о версиях
всех установленных пакетов. Она сравнивает версию имеющегося пакета
с текущей версией, находящейся в дереве портов.

    # pkg_version
    cvsup                       =
    docbook                     =
    ...

Символы во второй колонке указывают сравнительную разницу в
возрасте установленной версии и версии, находящейся в локальном дереве
портов.

Разметка диска FreeBSD

10. После создания таблицы разделов, вы можете видеть, что диск был изменен на таблицу разделов GPT, выберите «Создать«, чтобы определить разделы.

Схема раздела FreeBSD GPT

11. Теперь нам нужно определить три раздела для /boot, Swap, . Я собираюсь определить свой размер раздела следующим образом.

  • /boot – Размер 512 МБ
  • Swap размером 1 ГБ
  •  Размер 15 ГБ

Выберите ‘Создать‘ и определите разделы один за другим, при первой загрузке «Тип«должен быть» freebsd-boot» и размер здесь я использовал 512K и нажмите OK, чтобы создать следующий раздел подкачки.

Создание загрузочного Раздела

Выберите ‘Создать‘ и установите раздел подкачки введите 1 ГБ и нажмите OK.

Создать раздел Подкачки

Затем снова выберите ‘Создать‘ и создайте раздел. Теперь используйте оставшееся место для раздела /. Используйте тип freebsd-ufs и точку монтирования

Создание Корневого Раздела

12. После создания всех разделов мы получим нижеприведенный макет. Выберите ‘Готово‘, чтобы перейти к следующему шагу установки.

Разделы диска FreeBSD

13. После создания дисков следующее окно предоставляет последний шанс отредактировать изменения до того, как выбранные диски будут отформатированы. Если вы хотите внести изменения, выберите , чтобы вернуться в главное меню секционирования, или выберите , чтобы выйти из программы установки без изменения каких-либо изменений на диске. Но здесь нам нужно выбрать «Commit«, чтобы начать установку, и нажать ‘Enter‘.

Разделы диска FreeBSD

14. Как только установщик отформатирует все выбранные диски, он инициализирует разделы для загрузки и проверки всех выбранных компонентов. А затем загруженные компоненты извлекаются на диск. Как показано на рисунке ниже.

Извлечение архива FreeBSD

15. Как только все запрошенные дистрибутивы будут извлечены на диск, в следующем окне появится первый экран конфигурации после установки. Здесь вам нужно установить пароль «root‘ для нашего сервера FreeBSD.

Установка пароля Root в FreeBSD

Регистрация в системе и выход из неё

Зарегистрируйтесь в системе (когда увидите приглашение login:) как пользователь, которого вы создали во время установки, или
войдите в систему как пользователь root. (В вашей установленной
системе уже имеется учётная запись для пользователя root;
который может переходить хоть куда и делать всё, что угодно, в том числе удаление
необходимых для работы файлов, так что будьте внимательны!) Обозначения % и # в последующем тексте означают
приглашения системы (ваше может отличаться от него), причём %
обозначает обычного пользователя, а # пользователя root.

Чтобы выйти из системы (и получить новое приглашение login:) наберите

# exit

столько раз, сколько нужно. Да, нажимайте enter после
набора команд, и помните, что UNIX чувствителен к регистру
букв—набирайте exit, но не EXIT.

Для завершения работы машины наберите

# /sbin/shutdown -h now

Или, для перезагрузки нужно набрать

# /sbin/shutdown -r now

или

# /sbin/reboot

Метод второй, через CVSup

Справка:

CVSup это пакет программного обеспечения для распространения и обновления исходных текстов с основного репозитория CVS на удаленном сервере. Исходные тексты FreeBSD поддерживаются в репозитории CVS на центральной машине разработки в Калифорнии. С помощью CVSup пользователи FreeBSD легко могут поддерживать собственные исходные тексты в актуальном состоянии.

CVSup использует так называемую опрашивающую (pull) модель обновления. Работая по этой модели, каждый клиент запрашивает обновления с сервера, если и когда они нужны. Сервер пассивно ожидает запросы на обновление от своих клиентов. Таким образом, все обновления инициируются клиентами. Сервер никогда не высылает не запрошенные обновления. Пользователь для получения обновлений должен либо запустить CVSup клиента вручную, либо добавить задание в cron для настройки периодических обновлений в автоматическом режиме.

Термин CVSup, написанный с заглавными буквами, означает весь пакет программного обеспечения. Его основные компоненты это клиент cvsup, запускаемый на каждом пользовательском компьютере, и сервер cvsupd, работающий на каждом зеркале FreeBSD.

Тут всё немного сложнее, если Вы хотите получать пакеты от сервера, расположенного ближе всего к вашему местоположению, то делайте так:

cp /usr/share/examples/cvsup/ports-supfile /root/ports-supfile

Если Вы запустите csup на обработку этого файла, Вы получите ошибку вида:

csup /root/ports-supfile

Это нормально. Нужно просто отредактировать файл /root/ports-supfile:

csup -h cvsup.uk.FreeBSD.org /root/ports-supfile

Или просто откройте файл с помощью vi:

vi /root/ports-supfile

И найдите там строчку:

host=CHANGE_THIS.FreeBSD.org

И замените часть CHANGE_THIS на cvsup.uk для Великобритании, например.

host=cvsup.uk.FreeBSD.org

Далее натравите утилиту cvsup на файл:

cvsup -g -L 2 /root/ports-supfile

Или все одной командой:

csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

Подготовка ограниченной среды сборки

Пакеты собираются в ограниченной (chroot) среде, которая
разворачивается скриптом portbuild из архива ${arch}/${branch}/tarballs/bindist.tar. Этот архив создается при
помощи скрипта mkbindist, конфигурация которого описывается
файлом ${arch}/${branch}/mkbindist.conf.

Скрипт должен запускаться с правами пользователя root и
следующими параметрами:

/var/portbuild# scripts/mkbindist ${arch} ${branch}

При указании в файле mkbindist.conf параметра ftp=1 с адреса ftp://${ftpserver}/${ftpurl}/${rel} будет
загружен предварительно собранный релиз. Если указано ftp=0 и
buildworld=1, скрипт mkbindist выполнит
makeworld для того, чтобы собрать релиз на месте [XXX Эта часть в настоящее время не работает].

Если оба параметра равны нулю (ftp=0 и buildworld=0), то mkbindist будет использовать
существующее на момент запуска состояние дерева ${worlddir} для создания bindist.tar.
На практике это означает, что вы должны предварительно установить систему в ${worlddir},
что обычно делается при помощи скрипта makeworld:

/var/portbuild# scripts/makeworld ${arch} ${branch} 

Эта команда соберет систему на базе исходных текстов в дереве ${arch}/${branch}/src и установит ее в ${worlddir}. Исходные тексты будут обновлены, если не указан
параметр -nocvs.

Установка из портов

(В FreeBSD с версии 9.2, не знаю по каким причинам, но чтобы заработали порты их сначала нужно удалить (т.е. удалить папку /usr/local/ports) а потом уже скачать с помощью porsnap fetch

Также, перед использованием портов, необходимо установить новую систему управлением пакетами — pkgng (как это сделать, написано выше).

Что-бы установленные пакеты регистрировались в системе с помощью pkgng, нужно

в /etc/make.conf

добавить

WITH_PKGNG= yes

ИНАЧЕ ВЫ НЕ СМОЖЕТЕ УСТАНАВЛИВАТЬ ИЗ ПОРТОВ!

Если вы устанавливали FreeBSD в режиме MINIMAL, то система портов отсутствует и ее необходимо установить.

1. Установка системы портов (получение портов)

Используем стандартную утилиту portsnap

Скачиваем систему портов

# portsnap fetch

1

# portsnap fetch

Распаковываем коллекцию портов

# portsnap extract

1

# portsnap extract

P.S. Установить систему портов можно и вручную не использую всяких дополнительных утилит. Первым делом переходим в директорию/usr/ports, далее скачиваем порты с помощью команды fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports-stable и распаковываем архив командой tar zxvf ports.tar.gz

В случае если система портов уже была установлена, ее необходимо обновить до актуального состояния. Если вы только что установили порты, то шаг 2 можно пропустить.

2. Обновление системы портов

# portsnap update

1

# portsnap update

3. Установка программ из портов

Что бы установить программу из портов, необходимо перейти в директорию /usr/ports/, далее выбрать интересующий нас раздел (например www) и зайти в директорию с интересующем названием программы (например apache13). После чего, установим данную программу с помощью следующей команды:

# make install clean

1

# make install clean

P.S. По хорошему, желательно проводить установку в следующей последовательности.

Заходим в директорию с названием программы, далее конфигурируем программу перед компиляцией с помощью команды make config, конфигурирование может быть как и автоматическим так и с указанием дополнительных параметров, тогда открывается окно типа

Нажимаем Ok, далее компилируем программу с помощью команды make (cкомпилированные файлы располагаются в директории work). Устанавливаем программу вводя команду make install и удаляем скомпелированные файлы которые располагаются в порту (в work)  с помощью make clean.

В вкратце повторим последовательность:

make config

make

make install

make clean

4. После установки обновляем файловую систему (перечитываем)

# rehash

1

# rehash

5. Удаление программ установленных из портов

Переходим в порт из которого устанавливали программу, далее вводим команду:

Установка программы из порта

Развёртывание дерева портов

Для установки программ из портов будет удобно создать локальную копию дерева портов c сайта portsnap.freebsd.org.Для создания и обновления дерева портов можно использовать несколько команд утилиты portsnap (http://www.freebsd.org/cgi/man.cgi?query=portsnap):# portsnap fetch — позволит скачать дерево портов с какого-либо сайта.# portsnap extract — одноразовая команда для первоначального развёртывания дерева на локальной машине. Дерево портов будет лежать в /usr/ports.# portsnap fetch update — обновляет дерево до актуального состояния, что необходимо делать перед установкой и/или обновлением программ.

В данный момент (2014-03-17) размер папки /usr/ports составляет 660 мегабайт.

Поиск программы в дереве портов

Искать папку с необходимым портом во множестве подпапок директории /usr/ports не так сложно, если использовать команды:# whereis php5php5: /usr/ports/lang/php5# whereis apache24apache24: /usr/ports/www/apache24

# echo /usr/ports/*/*apache*/usr/ports/Mk/bsd.apache.mk /usr/ports/devel/apache-ant /usr/ports/distfiles/apache22 /usr/ports/net-mgmt/zenpack-apachemonitor /usr/ports/security/apache-xml-security-c /usr/ports/sysutils/apachetop /usr/ports/textproc/apache-solr /usr/ports/textproc/apache-solr3 /usr/ports/www/apache-forrest /usr/ports/www/apache-mode.el /usr/ports/www/apache22 /usr/ports/www/apache22-event-mpm /usr/ports/www/apache22-itk-mpm /usr/ports/www/apache22-peruser-mpm /usr/ports/www/apache22-worker-mpm /usr/ports/www/apache24 /usr/ports/www/mkapachepw /usr/ports/www/py-apachelog

Установка программы

Установка приложения происходит из соответствующей найденной папки. Сначала переходим в папку:# cd `whereis -q apache24`или # cd /usr/ports/www/apache24И уже находясь в папке запускаем компиляцию программы:# make install cleanили из любого места, но с указанием целевой директории (опция -C программы make):# make install clean -C /usr/ports/www/apache24

При компилировании программы из порта возможно появление псевдографических меню для выбора дополнительных настроек. Эти настройки сохраняются, и повторно, при переустановке пакета, не выводятся. Чтобы вновь увидеть эти диалоговые окна необходимо выполнить команды:# cd /usr/ports/www/apache24# make configдля изменения ранее установленных опций.Или# make rmconfigдля удаления  ранее установленных опций.Далее выполняем команду:# make reinstall cleanИли даже сразу:# make config reinstall clean(команда clean для make нужно, чтобы удалить временную рабочую папку work, куда скачивались исходники, применялись к этим исходникам заплатки и где производилась компиляция программы. В большинстве случаев этот оставшийся мусор не нужен.)

Удаление программы

Удаление приложения происходит из соответствующей найденной папки:# cd /usr/ports/www/apache24# make deinstall

portupgrade

portupgrade — видимо уже устаревшая программа, которая поможет автоматически обновить установленные приложения. Умеет работать с pkgng.Установка приложения portupgrade из дерева портов:# make install clean -C /usr/ports/ports-mgmt/portupgrade# cd /usr/ports# portupgrade -ai — для обновления всех установленных приложений с принудительным подтверждением (нажатием Yes).

portmaster

portmaster — заменяет/дополняет portupgrade. Умеет работать с pkgng. Имеет ряд преимуществ перед portupgrade?Установка приложения portmaster из дерева портов:# make install clean -C /usr/ports/ports-mgmt/portmaster# cd /usr/ports# portmaster -ad — для обновления всех установленных приложений без лишних запросов на удаление устаревших копий портов.

————————————————————————————-

Ссылки:

Как установить программу\утилиту во FreeBSD?

По факту, тут только два пути:

  1. Путь первый, установить программу из портов
  2. Путь второй, установить программу из уже готовых пакетов

Установка из портов.

Предположим вам нужна программа bash. (а она вам точно нужна)

Найти её в портах очень просто:

whereis bash

Видим там наш путь: /usr/ports/shells/bash. Смело шагаем туда:

cd /usr/ports/shells/bash

И собираем наш shell:

make install clean

Утилита shell скомпилируется и успешно установится по адресу: /usr/local/bin/bash Там будут лежать все проги которые Вы поставите. Если конечно Вы сами ничего не поменяете.

Для удаления программы, идете в порты:

cd /usr/ports/shells/bash

И удаляете программу:

make deinstall
make clean

Путь второй (через утилиту pkg). Ставим пакет lsof:

pkg_add -r lsof

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

pkg_delete lsof

Проверяем версии пакетов:

pkg_version -v

Для доп. информации:

pkg_info

Файлы пакетов распространяются в формате *.tgz.

Вся информация о пакете хранится в каталоге /var/db/pkg. Список установленных файлов и описания всех пакетов могут быть найдены среди файлов этого каталога.

Пакеты на сервере FTP

Зачастую пакет не представлен на CD, потому что пространство в наборе компакт-дисков Проекта FreeBSD ограниченно и не может вместить больше 17 000 пакетов. Кроме того, программное обеспечение на CD собрано для определенного «выпуска» FreeBSD. Если вы установили FreeBSD 7.1, затем обновили ее до версии 7.3 и теперь хотите установить пакеты для версии 7.3, то компакт-диск с пакетами для версии 7.1 не поможет. Кроме того, похожие проблемы будут наблюдаться после обновления до версии -stable или -current (глава 13).

Если пакет отсутствует на компакт-диске, его можно установить только через FTP. Проект FreeBSD предоставляет возможность установить через FTP пакеты практически для всех 17 000 с лишним элементов коллекции «портов». Любое FTP-зеркало FreeBSD содержит пакеты для самых последних выпусков FreeBSD, а на некоторых зеркалах можно найти пакеты для старых (и даже очень старых) выпусков. О выборе наиболее подходящего вам зеркала говорилось в главе 2. Каждое официальное FTP-зеркало FreeBSD хранит пакеты по адресу:

Например, пакеты FreeBSD 6.2 для архитектуры i386 можно найти по адресу ftp://ftp.freebsd.org/pub/freebsd/ports/i386/packages-6.2-release и на любых других серверах в том же самом каталоге. Если заглянуть на FTP-сайт, можно увидеть все категории в каталоге /usr/ports и многие другие. В коллекции «портов» каждый «порт» помещается в какую-нибудь категорию, однако некоторые «порты» запросто могут попасть сразу в несколько категорий. Например, «порты» Perl SNMP можно классифицировать и как средства управления сетью, и как программы Perl, в зависимости от выбранной точки зрения. На серверах FTP достаточно места, чтобы хранить «порты» во всех возможных категориях, что упрощает и ускоряет их поиск. Чем быстрее вы найдете искомый «порт» и покинете зеркало, тем легче жизнь у администраторов зеркала.

Так же, как и на компакт-диске, на каждом FTP-сайте имеется собственный каталог All, где хранятся фактические файлы пакетов. Однако, в отличие от CD, на FTP-сайте можно найти тысячи и тысячи пакетов!

Что устанавливает пакет?

Теперь, когда программа установлена, как найти ее в системе? В конце концов, здесь нет меню Пуск! Беспокоиться не о чем. Для получения полного списка установленных программ обратитесь к /var/db/pkg. Подкаталоги этого каталога соответствуют всем «портам» или пакетам, установленным в системе, и содержат списки всех программных компонентов. К примеру, теперь, после установки пакета xorg 6.9, у нас появился каталог /var/db/pkg/xorg-6.9.0. В нем находятся следующие файлы:

Файл +COMMENT содержит краткое описание пакета, а файл +DESC — более подробное описание. Файл +MTREE_DIRS содержит описание пакета в формате mtree(1). Особый интерес представляет файл +CONTENTS, в котором перечислены все файлы, установленные пакетом, все пакеты зависимостей и все инструкции по удалению пакета. (Теперь, когда пакет установлен, инструкции по установке больше не нужны, но инструкции по удалению могут пригодиться, если вы вдруг решите удалить пакет.)

Первая строка — это номер версии формата (1), в котором хранится запись о пакете. Если FreeBSD изменит формат хранения пакетов, инструменты управления пакетами смогут определить по этому номеру, как обслуживать пакет. Далее следует имя пакета (2) и затем определение (3), которое указывает — к какой категории относится пакет и в каком каталоге его можно отыскать. Вслед за меткой (4) указано место, куда нужно установить файлы пакета. Все пути к файлам указываются относительно этого каталога. Комментарий (5) указывает дополнительные пакеты, от которых зависит данный пакет. В данном случае — это пакет expat-2. Здесь также указывается каталог (6) в дереве «портов», где этот дополнительный пакет находится.

Однако пакет xorg является чем-то вроде «обманки» — при установке этого пакета не устанавливаются никакие файлы! В операционной системе FreeBSD пакет xorg присутствует только для описания зависимостей, необходимых для X Window System. Единственная запись, которую можно обнаружить в файле +CONTENTS, это ссылка на другие пакеты. Давайте рассмотрим содержимое файла +CONTENTS другого пакета, который действительно включает набор файлов. Вот содержимое пакета /usr/ports/archivers/zip:

Здесь мы снова видим рабочий каталог (1), но за ним следует собственно файл (2). Объединив имя каталога и имя файла, можно определить, что при установке пакета zip был установлен файл /usr/local/man/man1/zip.1.gz. Это страница руководства, с которой стоит ознакомиться. Далее следует комментарий, содержащий контрольную сумму MD5 (3) этого файла и инструкция (4) по удалению файла на случай, если потребуется удалить пакет. Однако этот пакет содержит не только страницу руководства, в состав пакета входит также двоичный файл (5). Вы уже наверняка поняли, что утилита zip(1) была установлена в виде файла /usr/local/bin/zip. При просмотре файла +CONTENTS можно определить имена и местоположение всех установленных файлов.

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

Страницы: 1

Другие полезные команды

df

выдаёт данные о занятом файлами пространстве и смонтированных файловых системах.

ps aux

показывает работающие процессы

ps ax является
частоупотребительной формой.

rm filename

удаляет filename.

rm -R dir

удаляет каталог dir и все его
подкаталоги—осторожно!

ls -R

выдаёт список файлов в текущем каталоге и всех его подкаталогах; я использовал
вариант, ls -AFR > where.txt, для получения перечня всех
файлов в и (отдельно) /usr до
того, как узнал о более эффективном способе поиска файлов.

passwd

для изменения пароля пользователя (или пароля root)

man hier

справочная страница по файловой структуре UNIX. Используйте find для поиска filename в /usr или в любом из её подкаталогов
при помощи команды

Используйте find для поиска filename в /usr или в любом из её подкаталогов
при помощи команды

% find /usr -name "filename"

Вы можете использовать * в качестве шаблона внутри
(это
выражение должно быть в кавычках). Если вы укажете команде find
на поиск в , а не в /usr, то она
будет искать файл(ы) во всех смонтированных файловых системах, включая CDROM и раздел
DOS.

4.4.1. Установка пакета

Для установки пакетов программного обеспечения для FreeBSD из
локальных файлов или с сервера в сети вы можете использовать утилиту
pkg_add(1).

Example 4-1. Сгрузка пакета и последующая его локальная установка

    # ftp -a ftp2.FreeBSD.org
    Connected to ftp2.FreeBSD.org.
    220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
    331 Guest login ok, send your email address as password.
    230-
    230-     This machine is in Vienna, VA, USA, hosted by Verio.
    230-         Questions? E-mail [email protected].
    230-
    230-
    230 Guest login ok, access restrictions apply.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> cd /pub/FreeBSD/ports/packages/sysutils/
    250 CWD command successful.
    ftp> get lsof-4.56.4.tgz
    local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
    200 PORT command successful.
    150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
    100% |**************************************************| 92375       00:00 ETA
    226 Transfer complete.
    92375 bytes received in 5.60 seconds (16.11 KB/s)
    ftp> exit
    # pkg_add lsof-4.56.4.tgz

Если у вас нет исходных текстов локальных пакетов (например,
набор компакт-дисков FreeBSD), то проще всего, наверное,
воспользоваться опцией -r для pkg_add(1). Это приведёт к тому,
что утилита автоматически определит правильный формат объектных файлов
и релиз, а затем сгрузит и установит пакет с сервера FTP.

    # pkg_add -r lsof-4.56.4

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

Файлы пакетов распространяются в формате .tgz. Вы можете найти их
по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages, или взять с
дистрибутива FreeBSD на компакт-дисках. Каждый CD из комплекта
FreeBSD на 4 дисках (а также PowerPak и тому подобное) содержит
пакеты в каталоге /packages. Расположение
пакетов похоже на то, как организовано дерево
/usr/ports. Каждая категория имеет собственный
каталог, и каждый пакет помещается в каталог
All.

Дополнительные параметры фильтрации

Теперь задача интереснее. Необходимо защитить наш сервер от перебора паролей ssh. Еще одна возможность PF — лимитировать количество соединений, соответствующих правилу, по различным параметрам.

Таблица:

persist — держать в памяти, даже если пустая. Если не указать такое поведение, PF удалит пустую таблицу.

И правила:

В данном случае max-src-conn 10 — только 10 одновременных соединений с одного адреса, max-src-conn-rate 3/10 — только 3 новых соединения за 10 секунд, overload <block_ssh> — добавлять в таблицу адреса источника нарушителей, flush — сбрасывать все соединения от нарушителя, созданные этим правилом.

По образу и подобию — разрешение пользователю ходить на веб-сервер.

Таблица:

И правила:

Параметры этого правила надо очень аккуратно подбирать под ваш сервис. Synproxy — включает проксирование syn запросов, защиту от synflood атак. А flush global означает сброс всех соединений с источника-нарушителя, даже если они не относятся к этому правилу.

Устаревание записей в таблицах заблокированных обеспечиваются командами такого вида:

Эта команда удалит все записи, старше часа из соответствующей таблицы. Команды поставим в крон:

Таким образом каждый час таблицы будут вычищаться.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: