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

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-сервере и анонимные соединения. Все работает :)