Установка патчей и обновление FreeBSD.

Если Вам необходимо обновить версию FreeBSD без перехода на более высокую версию ( например без перехода с FreeBSD 7.1 на FreeBSD 7.2) А просто наложить патчи безопасности. При этом Вы не перекомпилировали ядро и не изменяли встроенных пользователей.

Для этого делаем следующее:

Устанавливаем, если необходимо,прокси HTTP_PROXY http://myproxy:myport.

Например:(setenv HTTP_PROXY http://172.16.2.1:3128)

Выполняем

#freebsd-update fetch.

Затем #

freebsd-update install.

Перезагружаемся.

Смотрим, что имеем на сервере.

freebsd7a# u(name -a

( FreeBSD freebsd7a.localdomain 7.2-RELEASE FreeBSD

…edited…

Вот как это делается.

freebsd7a# setenv HTTP_PROXY http://172.16.2.1:3128

freebsd7a# freebsd-update fetch

Looking up update.FreeBSD.org mirrors… 3 mirrors found.

Fetching public key from update5.FreeBSD.org… done.

Fetching metadata signature for 7.2-RELEASE from update5.FreeBSD.org…

done.

Fetching metadata index… done.

Fetching 2 metadata files… done.

Inspecting system… done.

Preparing to download files… done.

Fetching 26 patches…..10….20… done.

Applying patches… done.

The following files will be updated as part of updating to 7.2-RELEASE-p3:

/boot/kernel/if_bce.ko

/boot/kernel/if_bce.ko.symbols

/boot/kernel/if_fxp.ko

/boot/kernel/if_fxp.ko.symbols

/boot/kernel/kernel

/boot/kernel/kernel.symbols

/lib/libc.so.7

/lib/libthr.so.3

…edited…

/usr/sbin/named

/usr/sbin/nologin

/usr/sbin/ntpd

freebsd7a# freebsd-update install

Installing updates… done.

freebsd7a# reboot

Смотрим, установился ли патч.

freebsd7a# un(ame -a

FreeBSD freebsd7a.localdomain 7.2-RELEASE-p2

Другой вариант — установка патчей вручную.

Мы хотим вручную применить патчи безопасности.

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

Инсталлируем GnuPG

freebsd7# pkg_add -vr gnupg

scheme: [ftp]

user: []

password: []

host: [ftp.freebsd.org]

port: [0]

document: [/pub/FreeBSD/ports/i386/packages-7.1-release/Latest/gnupg.tbz]

—> ftp.freebsd.org:21

looking up ftp.freebsd.org

connecting to ftp.freebsd.org:21

…edited…

Инсталлируем GPG и импортируем ключи разработчиков

freebsd7# gpg —import /usr/share/doc/en_US.ISO8859-1/books/handbook/pgpkeys.html

gpg: directory ‘/root/.gnupg’ created

gpg: new configuration file ‘/root/.gnupg/gpg.conf’ created

gpg: WARNING: options in ‘/root/.gnupg/gpg.conf’ are not yet active during this run

gpg: keyring ‘/root/.gnupg/secring.gpg’ created

gpg: keyring ‘/root/.gnupg/pubring.gpg’ created

gpg: /root/.gnupg/trustdb.gpg: trustdb created

gpg: key CA6CDFB2: public key «FreeBSD Security Officer <

Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

>» imported

gpg: key FF8AE305: public key »

Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

» imported

gpg: key 7414629C: public key «FreeBSD portmgr secretary <

Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

>» importedgpg: Total number processed: 3

gpg: imported: 3 (RSA: 1)

gpg: no ultimately trusted keys found

Проверяем, установлены ли у нас source.

freebsd7# ls /usr/src

Должны увидеть следующее:

COPYRIGHT contrib rescue

LOCKS crypto sbin

MAINTAINERS etc secure

Makefile games share

Makefile.inc1 gnu sys

ObsoleteFiles.inc include tools

README kerberos5 usr.bin

UPDATING lib usr.sbin

bin libexec

cddl release

Значит, что установлено.

Если не видим,  ставим через sysinstall.

Запускаем sysinstall.

Выбираем Configure – Do post-install configuration of FreeBSD

Выбираем Distributions – Install additional distribution sets

Выбираем src – Sources for everything by highlighting and hitting the space bar

Выбираем All – Select all of the below by highlighting and hitting return.

Кнопка OK .

Кнопка OK на Select the distributions you wish to install pageand нажать return.

Выбираем CD/DVD – Install from a FreeBSD CD/DVD and нажать return.

Обновляем source код с помощью CVS.

freebsd7# cd /usr

freebsd7# cvs -d

Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

:/home/ncvs co -r RELENG_7_1_0 src

cvs checkout: Updating src

cvs checkout: Updating src/bin

cvs checkout: Updating src/bin/cat

…truncated…

Демонстрация наложения патча

Скачиваем патч для ktimer

freebsd7# fetch

http://security.FreeBSD.org/patches/SA-09:06/ktimer.patch

ktimer.patch 100% of 476 B 61 kBps

freebsd7# fetch http://security.FreeBSD.org/patches/SA-09:06/ktimer.patch.asc

ktimer.patch.asc 100% of 195 B 24 kBps

Проверяем сигнатуру подписи патча ktimer.

freebsd7# gpg —verify ktimer.patch.asc ktimer.patch

gpg: Signature made Sun Mar 22 19:59:58 2009 EDT using DSA key ID CA6CDFB2

gpg: Good signature from «FreeBSD Security Officer <

Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

gpg: WARNING: This key is not certified with a trusted signature!

gpg: There is no indication that the signature belongs to the owner.

Primary key fingerprint: C374 0FC5 69A6 FBB1 4AED B131 15D6 8804 CA6C DFB2

Накладываем патч ktimer

freebsd7# patch < /root/ktimer.patch

Hmm… Looks like a unified diff to me…

The text leading up to this was:

—————————

|Index: sys/kern/kern_time.c

|==================================

|— sys/kern/kern_time.c (revision 190192)

|+++ sys/kern/kern_time.c (working copy)

—————————

Patching file sys/kern/kern_time.c using Plan A…

Hunk #1 succeeded at 1079 (offset -6 lines).

В заключение мы пересоберем ядро GENERIC из source с патчами и проинсталлируем его.

Пересборка ядра

freebsd7# cd /usr/src/sys/i386/conf

freebsd7# cp GENERIC FREEBSD7

freebsd7# cd /usr/src

freebsd7# make buildkernel KERNCONF=FREEBSD7

—————————————————————

>>> Kernel build for FREEBSD7 started on Thu Aug 20 11:01:55 EDT 2009

—————————————————————

===> FREEBSD7

mkdir -p /usr/obj/usr/srcsys

—————————————————————

>>> stage 1: configuring the kernel

…edited…

—————————————————————

>>> Kernel build for FREEBSD7 completed on Thu Aug 20 11:54:29 EDT 2009

Инсталляция нового ядра.

freebsd7# make installkernel KERNCONF=FREEBSD7

—————————————————————

>>> Installing kernel

—————————————————————

cd /usr/obj/usr/src/sys/FREEBSD7; MAKEOBJDIRPREFIX=/usr/obj MACHINE_ARCH=i386 MACHINE=i386 CPUTYPE= GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac

…edited…

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

#cd /usr/src

#make buildworld

#make buildkernel KERNCONF=FREEBSD7

#make installkernel KERNCONF=FREEBSD7

#mergemaster -p

#make installworld

#mergemaster

#reboot

Обновление FreeBSD c 7.1 на 7.2

freebsd7# freebsd-update upgrade -r 7.2-RELEASE

Looking up update.FreeBSD.org mirrors… 3 mirrors found.

Fetching public key from update4.FreeBSD.org… done.

Fetching metadata signature for 7.1-RELEASE fromupdate4.FreeBSD.org… done.

Fetching metadata index… done.

Fetching 2 metadata files… done.

Inspecting system… done.

The following components of FreeBSD seem to be installed:

kernel/generic src/base src/bin src/cddl src/contrib

src/crypto src/etc

src/games src/gnu src/include src/krb5 src/lib src/libexec src/release

src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin

src/usbin world/base world/dict world/doc world/games

world/info

world/manpages world/proflibs

The following components of FreeBSD do not seem to be installed:

world/catpages

Does this look reasonable (y/n)? y

Fetching metadata signature for 7.2-RELEASE from update4.FreeBSD.org… done.

Fetching metadata index… done.

Fetching 1 metadata patches. done.

Applying metadata patches… done.

Fetching 1 metadata files… done.

Inspecting system… done.

Fetching files from 7.1-RELEASE for merging… done.

Preparing to download files…

..edited..

freebsd7# freebsd-update install

Installing updates…

Kernel updates have been installed. Please reboot and run «/usr/sbin/freebsd-update install» again to finish

installing updates.

Перегружаемся:

freebsd7# reboot

freebsd7# freebsd-update install

Installing updates…done.

Попросят пересобрать все third-party приложения (например, порты, установленные через дерево портов и т.п), в связи с обновлением системных библиотек. После выполнения предложенного требуется запустить freebsd-update еще раз для удаления старых (более не используемых) библиотек

# freebsd-update install

Проверяем версию FreeBSD

freebsd7# u(name -a

FreeBSD freebsd7.localdomain 7.2-RELEASE-p2 FreeBSD

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *