Заметки о работе с ОС FreeBSD. Статьи об установке и настройке ПО для FreeBSD.

9 июля 2009 г.

Установка Firebird 1.5.5 на FreeBSD 7.0 и выше

Дело в том, что начиная с ветки 7.0 во FreeBSD используется GCC 4, а Firebird 1.5 хочет GCC 3 версии. О чем, собственно, он и сообщает при попытке установки:


Client does not compile with GCC 4.2. Please use firebird2 instead

Предлагает установить Firebird2, но нам то нужен 1.5.5

Но это можно обойти достаточно безболезненно.

Итак:
Устанавливаем GCC 3.4 из /usr/ports/lang/gcc34
Правим файл /usr/ports/databases/firebird-server/Makefile
Комментируем в нем строки:

.if ${OSVERSION} >= 700042
IGNORE= Client does not compile with GCC 4.2. Please use firebird2 instead
.endif

После этого ставим Firebird как обычно. Т. е. даем права 777 на /usr/ports/databases/firebird-server и /usr/ports/databases/firebird-client

[root@test44 ~]# chmod -R 777 /usr/ports/databases/firebird-server
[root@test44 ~]# chmod -R 777 /usr/ports/databases/firebird-client

Заходим по юзером и делаем make


[lehan@test44 /usr/ports/databases/firebird-server]# make

В процессе установки (когда будет устанавливаться firebird-client) система попросит рутовый пароль.

После завершения сборки пакета меняем юзера на root

[lehan@test44 /usr/ports/databases/firebird-server]# su -

И завершаем установку:

[root@test44 ~]# cd /usr/ports/databases/firebird-server
[root@test44 /usr/ports/databases/firebird-server]# make install clean

Проверяем чтобы в /etc/services были эти строки:

gds_db 3050/tcp #InterBase Database Remote Protocol
gds_db 3050/udp #InterBase Database Remote Protocol

Добавляем в /etc/inetd.conf эту строку:

gds_db stream tcp nowait firebird /usr/local/sbin/fb_inet_server fb_inet_server

Не забываем перезапустить inetd
[root@test44 ~]# /etc/rc.d/inetd restart
Stopping inetd.
Starting inetd.

[root@test44 ~]# pkg_info | grep firebird
firebird-client-1.5.5 The open-source InterBase(tm) 6.0 spin-off (client)
firebird-server-1.5.5 The open-source InterBase(tm) 6.0 spin-off (Classic version




22 июня 2009 г.

Работа с portaudit

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

Простой пример работы:
[root@test249 ~]# portaudit -Fda
New database installed.
Database created: Mon Jun 22 15:40:03 MSD 2009
Affected package: libsndfile-1.0.19
Type of problem: libsndfile -- multiple vulnerabilities.
Reference:

Affected package: ntp-4.2.4p6
Type of problem: ntp -- stack-based buffer overflow.
Reference:

2 problem(s) in your installed packages found.

You are advised to update or deinstall the affected package(s) immediately.

Параметры:
-F - скачать текущую базу с сайтов freebsd
-d - вывести дату используемой базы в отчете
-a - вывести отчет и проверить все установленные пакеты

Можно также вывести отчет по локальному файлу INDEX:
[root@test249 ~]# portaudit -f /usr/ports/INDEX-7
Все остальное есть в man'е.

11 июня 2009 г.

Установка и настройка frox (кэширующий ftp-прокси)


Итак, мы хотим установить ftp-прокси-сервер для общения клиентов внутри сети, сидящих за NAT, c внешними ftp-серврами. Причем, чтобы не было "шаманства" с активными или пассивными режимами работы, настройкой ftp-клиентов для работы с прокси-серверами и т.д. Т. е. сделаем проксирование ftp-трафика прозрачным для клиента, сам трафик будем кэшировать для анонимных соединений и в итоге пустим все через http-прокси-сервер Squid.

Итак, система на тестовой машине:
[root@test249 ~]# uname -mrs
FreeBSD 6.3-RELEASE i386
Идем в порты и конфигурируем:
[root@test249 ~]# cd /usr/ports/ftp/frox
[root@test249 /usr/ports/ftp/frox]# make config
Выбираем нужные нам опции. Я выбираю PF, HTTP_CACHE, CCP.

Устанавливаем
[root@test249 /usr/ports/ftp/frox]# make install clean
Далее редактируем файл /usr/local/etc/frox.conf

# Интерфейс, который мы будем "слушать"
Listen 192.168.110.254
# Собственно, порт, который "слушаем"
Port 2121
# Если мы хотим запускать frox через inetd, то следует раскомментировать эту строку
# FromInetd yes
# Пользователь и группа, от которой работает frox
User nobody
Group nogroup
# Рабочая директорая frox. Здесь он будет хранить временные файлы и сокеты.
# frox должен иметь в нее доступ.
WorkingDir /tmp
# По умолчанию frox делает chroot своей "рабочей директории",
# но т. к. я использую /tmp - я этого делать не буду.
DontChroot Yes
# Собственно, логи. 0 - не писать логи, 5 - только критические ошибки, 10 - все ошибки,
# 15 - ошибки и что-то еще, 20 - ошибки, соединения, кэш, 25 - дебаг.
LogLevel 20
# Если мы хотим, чтобы логи шли через syslog - нужно закоментировать эту строку
LogFile /var/log/frox.log
XferLogging yes
# Где храним PID
PidFile /var/run/frox.pid
# Конвертация Active -> Passive.
# Полезное решение в связи с проблемами у pf и активным режимом ftp.
APConv yes
# Блокировать команду "PORT" на портах меньше 1024.
BounceDefend yes
# По умолчанию frox режет непечатаемые символы, но т. к. мы
# не хотим проблем с ftp-клиентами - включаем.
AllowNonASCII yes
# Какие номера портов разрешаем использовать frox
ControlPorts 40000-40999
PassivePorts 41000-41999
ActivePorts 42000-42999
# Включаем модуль http-кэша
CacheModule http
# Адрес http-прокси-сервера (Squid)
HTTPProxy 127.0.0.1:3128
MinCacheSize 65536
ForceHTTP no
# Если мы хотим кэшировать все (а не только соединения от anonymous), то пишем yes
# CacheAll no
# Дополнительно включаем решим "непрозрачного" проксирования
# Без него frox иногда отваливается
DoNTP yes
NTPAddress 192.168.110.254:2121
# Настраиваем максимальное число процессов
MaxForks 10
# Максимальное число соединений с одного IP
MaxForksPerHost 4
# Можно также ограничить скорость каждого соединения
# MaxTransferRate 4096
# MaxUploadRate 4096
# В секции Access control lists я добавлю лишь следующиее (разрешаю все)
ACL Allow * - *
Добавляем в /etc/rc.conf строку:
frox_enable="YES"
Запускаем
[root@test249 ~]# /usr/local/etc/rc.d/frox start
Проверяем запустился ли
[root@test249 ~]# ps -ax | grep frox
28253 p0- S 0:00.11 /usr/local/sbin/frox
89476 p0 S+ 0:00.00 grep frox
Проверяем слушает ли заданные порты
[root@test249 ~]# sockstat | grep frox
nobody frox 28253 5 dgram -> /var/run/logpriv
nobody frox 28253 6 tcp4 192.168.110.254:2121 *:*
Далее проверяем на клиентском ПК. Пробуем активный решим, пробуем пассивный решим, пробуем авторизоваться на любом ftp-сервере и анонимные соединения. Все работает :)