Этот раздел посвящен подготовке системы к установке Fantomas.
Цинично? Вряд ли... Fantomas использует не один модуль Netfilter, при этом объединяя их функционал в себе. Поэтому и процесс подготовки к установке Fantomas заключается прежде всего в подготовке к использованию Netfilter.
В принципе, этот процесс мало чем отличается от создания обычной LAMP-платфомы, за исключением пакета ulog-1.24, а также момента конфигурирования и сборки ядра.
    Раздел создавался как пошаговое руководство для начинающих пользователей Linux, которым этот раздел настойчиво рекомендуется к обязательному и полному прочтению!
    Для более опытных Коллег этот раздел может быть полезен как справочное руководство.
    За подробной документацией по настройке каждого программного пакета обращайтесь на сайт разработчика или ищите мануал в архиве со скачанным дистрибутивом, поверьте, разработчики специально для Вас тратят уйму времени на написание документации. :)
Да, и еще - рассматриваться будет сборка софта из исходников. Тем кому это не по душе - делайте по своему, главное чтоб результат был таким же (опять же, если Вы новичек, рекомендую все таки ознакомиться).
Думаю не имеет смысла говорить о дистрибутивах, их особенностях и тонкостях установки - это, имхо, выходит за рамки данного мануала. Я полагаю что у Вас уже установлена система и произведена первичная настройка.
    Ядро берем , файл имеет имя вроде "linux-2.6.х.х.tar.gz". Определите какое ядро подлежит скачиванию, затем можно воспользоваться командой консоли:
tar -zxvf linux-2.6.x.x.tar.gz
cd linux-2.6.x.x
make menuconfig
#*** Режим конфигурирования в виде меню выдает имена опций ядра в подробном виде, поэтому некоторым новичкам порой бывает сложно найти нужную опцию. Если для Вас более привычны краткие имена опций вида "CONFIG_KERNEL_OPTION", то лучше попробуйте по классике:
make config
    Если Вы еще не научились собирать ядро "с закрытыми глазами", то при конфигурировании меняйте только те опции, значение которых Вам известно, в крайнем случае конфигурирование можно отложить и прочитать доку, и потом оперировать уже знакомыми опциями. Это поможет избежать проблем.
    Включите следующие опции:
    Если все прошло без ошибок, то дальше идем в /boot/grub (если у Вас grub :), сначала в надпапке убеждаемся что новый образ системы встал на место, потом находим grub.conf, открываем текстовым редактором и убеждаемся что строки для загрузки нового ядра присутствуют в конфиге.
Если в строке default указан номер записи старого ядра ( они нумеруются сверху вниз начиная с 0 ), можете поправить эту опцию для загрузки по умолчанию нового ядра.
Ни в коем случае не ставьте в опцию timeout слишком маленькое значение (!), т.к. если Ваше новое ядро по какой то причине не загрузится, то Вы всегда при перезагрузке сможете выбрать старое ядро, под которым спокойно допилите глюки нового, избежав тем самым серьезного гемороя.
tar -jxvf ipset-2.5.0.tar.bz2
cd ipset-2.5.0
KERNEL_DIR=/full_path/to/your/kernel/dir make
KERNEL_DIR=/full_path/to/your/kernel/dir make install
    Далее, если версия iptables у нас старше чем 1.4.4, а версия ipset - 3.0, то делаем так:
cp kernel/include/linux/netfilter_ipv4/ip_set.h /full-path/to/src/iptables-1.4.4/include/linux/netfilter_ipv4
cd /full-path/to/src/iptables-1.4.4
make
make install
tar -zxvf mysql-5.1.36.tar.gz
cd mysql-5.1.36
groupadd mysql
useradd -g mysql mysql
./configure --prefix=/usr/local/mysql --with-charset=utf8
make
make install
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql var
service mysqld start
/usr/local/mysql/bin/mysqladmin -u root -h localhost password 'newpasswd'
#*** откройте файл /etc/my.cnf и добавьте туда строки:
service mysqld restart
echo "/usr/local/mysql/lib/mysql" >>/etc/ld.so.conf
ldconfig
З.Ы.: можете попробовать отконфигурить с опцией --disable-shared, возможно это поможет избежать ошибки поиска динамических библиотек при сборке ulogd. Хотя, когда я собирал для себя, то не парился и сделал как описано ниже по сценарию. Работает.
    Все, если все прошло успешно, то с mysql мы закончили.
    Ulogd лучше всего брать с git разработчиков (в нем есть последние исправления, на ftp их нет):
git clone git://git.netfilter.org/ulogd.git
Далее:
cd ulogd
autoconf
Если нет git, можно взять с FTP Netfilter, а потом с моего сайта, там же где и сам Fantomas. Положить оба файла в один каталог, например в /usr/src, и обработать:
tar -jxvf ulogd-1.24.tar.bz2
patch -p1 <ulogd-1.24_072009_patch.diff
cd ulogd-1.24
Конфигурим и ставим:
ln -s -t include/ /usr/local/mysql/include/mysql    #*** пусть будут под носом, иначе он их может и вовсе не найти ...
./configure --with-mysql --prefix=/usr
make
#*** Если при сборке возникнет ошибка "ld: bad -rpath option", то в этом же каталоге открываем файл Rules.make, находим строчку "MYSQL_LDFLAGS=$(LDFLAGS) -rdynamic -L/usr..." и из этой строки убираем "-rdynamic", сохраняем файл и выходим из него. Снова делаем make, должно собраться нормально.
make install
cp ulogd.init /etc/init.d/ulogd
chmod 755 /etc/init.d/ulogd
chkconfig --add ulogd
chkconfig --levels 345 ulogd on
Поставили? Теперь поправим конфиг ulogd - для этого в каталоге /usr/etc (прим.: если при сборке префикс был указан /usr) находим файл ulogd.conf, открываем для редактирования, и после строчки # output plugins и после раскомментируем следующую строку:
plugin="/usr/lib/ulogd/ulogd_MYSQL.so"
#*** Строку plugin="/usr/lib/ulogd/ulogd_LOGEMU.so" лучше закомментировать, иначе демон ulogd будет писать лог сетевого трафика не только в MySQL, но и локально в лог-файл на диске. Т.к. нас будет интересовать база MySQL, то дублировать гигабайты информации в текстовый лог на диске смысла нет.
Остальные строчки в списке плагинов можно не трогать. Дальше ниже в конфиге находим секцию [MYSQL] и указываем для ulogd параметры соединения с mysql:
    Как известно, существует несколько веток версий httpd. В общем-то не принципиально какую Вы будете использовать, ставятся они почти одинаково несложно, поэтому я опишу установку Apache 2.0, который я выбрал для себя.
    Качаем . На момент написания этой доки актуальная версия - 2.0.63:
tar -zxvf httpd-2.0.63.tar.gz
cd httpd-2.0.63
./configure --prefix=/www --enable-so
make
make install
cp build/rpm/httpd.init /etc/init.d/httpd
chkconfig --add httpd
chkconfig --levels 345 httpd on
#*** откройте файл /etc/init.d/httpd и поправьте пути к файлам в строках apachectl и httpd вместо /usr/sbin/* на /www/bin/*, а затем чуть ниже аналогично поправьте путь к конфигу httpd в строке CONFFILE.
    Дальше открываем файл /www/conf/httpd.conf и настраиваем ServerAdmin, ServerName, DocumentRoot.
Теперь следует уделить немного внимания безопасности веб-сервера. Подробно мы на этом останавливаться не будем, т.к. в Интернет можно найти огромное количество документации на эту тему.
Минимально достаточная настройка выглядит примерно так:
   В файле httpd.conf найдите строчку <Directory "/www/htdocs">, и ниже, в строчке Options уберите поддержку Indexes.
   Если нет необходимости просматривать страницы Apache из интернет, то можете вообще в httpd.conf в строке Listen указать бинд на внутренний адрес строкой вида "Listen 192.168.0.1:80".
   Впрочем, если нужно чтоб Apache был виден из интернет, то ничего страшного, Fantomas об этом позаботится, в разделе 4 читайте внимательней про файл конфигурации и переменную allowed_ip :).
   Позаботьтесь о пути окружения для root, он задается в /root/.bash_profile в строке PATH, впишите туда все нужные каталоги bin, включая каталоги /../mysql/bin, если их там нет.
   Если на машине есть демоны ssh или telnet, то перевесьте их на другие порты, логически непонятные для непосвещенного. Это конечно не спасет от пристального взгляда вроде "nmap -sV", но хоть немного скроет Ваш порт от лишних глаз. И обязательно отключите доступ по сети к этим демонам для root, в ssh к примеру в конфиге укажите "PermitRootLogin no". Для доступа используйте любой другой логин, не имеющий админских прав, ну а после входа, соответственно, делаем su.
   И еще немаловажно: не вешайте на этот сервер ничего лишнего из того что может привлечь взгляд, тогда возможно Вам и не прийдется отбиваться от заинтересованных.
#*** Качаем отсюда модуль расширения PHP - ssh2, сохраняем прямо в текущем каталоге (ext). На момент написания документации свежая версия - 0.11.0:
wget http://pecl.php.net/get/ssh2-0.11.0.tgz
tar -zxvf ssh2-0.11.0.tgz
mv ssh2-0.11.0 ssh2
cd ..
#*** Вернулись в каталог с исходниками PHP, теперь удаляем старый скрипт configure и генерируем новый:
rm configure
./buildconf --force
#*** Дальше все как обычно - конфигурим, собираем и устанавливаем:
./configure --with-apxs2=/www/bin/apxs --with-mysql=/usr/local/mysql --with-ssh2
make
make install
cp php.ini-dist /usr/local/lib/php.ini
#*** откройте файл httpd.conf и убедитесь в наличии строк LoadModule php5_module modules/libphp5.so и AddType application/x-httpd-php .php .phtml, если их там нет - впишите рядом с похожими строками. В параметре DirectoryIndex к имеющейся строке добавьте index.php