Для построения сервиса администраторы предпочитают выбирать решение или
такое, с которым сталкивались раньше, или наиболее известное – Apache, Squid,
BIND, Postfix, Courier Mail Server. Но не всегда проторенный путь оптимален.
Альтернативные программы, особенно если используется не самое современное
оборудование, зачастую гораздо эффективнее.

 

Веб-сервер lighttpd

Apache, благодаря своей надежности, функциональности и расширяемости, на
сегодняшний день стал стандартом де-факто для веб-сервера. Но на медленных
компьютерах, встраиваемых платформах и для обработки статичного контента индеец
будет выглядеть неповоротливым тяжеловесом. Поиск в репозитарии Debian/Ubuntu «sudo
apt-cache search httpd» выдаст не один десяток схожих проектов. Среди них —
nginx и
lighttpd, которые, по
данным компании NetCraft,
входят в первую пятерку популярных веб-серверов. Оба сервера работают очень
быстро, потребляя малое количество ресурсов, и используют одну и ту же модель
многозадачности — асинхронный I/O. Стоит отметить, что на lighttpd крутятся
такие сайты, как SourceForge, Youtube, Википедия. Он поддерживает выдачу
динамических страниц (при помощи FastCGI) и балансировку нагрузки.
Функциональность можно изменить за счет подключения/отключения модулей. В
настоящее время реализованы модули управления виртуальными хостами,
переадресации, аутентификации и др. Для примера настроим lighttpd с поддержкой
PHP5 и MySQL.

Действие первое: выполняем установку веб-сервера из репозитария Ubuntu (чтобы
упростить задачу, все примеры буду приводить на Ubuntu 8.04 LTS, более понятном
для новичков, хотя все сказанное, за исключением особенностей установки, будет
актуально и для других систем):

$ sudo apt-get install lighttpd lighttpd-doc php5-cgi

Некоторые модули вынесены в отдельные пакеты, найти которые можно поиском.
Теперь, если набрать в браузере http://localhost, увидим страницу по умолчанию,
где вкратце расписаны особенности сервера. Конфигурационные файлы находятся в /etc/lighttpd,
каталог DocumentRoot — /var/www, место для CGI-скриптов — /usr/lib/cgi-bin, логи
— /var/log/lighttpd.

Чтобы не нарушать совместимость с большинством приложений, необходимо
активировать параметр «cgi.fix_pathinfo» (так мы дадим указание PHP
устанавливать имя файла в переменной SCRIPT_FILENAME):

$ sudo nano /etc/php5/cgi/php.ini

cgi.fix_pathinfo = 1

Основной файл lighttpd.conf состоит из директив и стандартен для Unix. Если
директива должна принимать несколько значений, они перечисляются через запятую и
заключаются в скобки. Открываем конфиг в редакторе и правим:

$ sudo nano /etc/lighttpd/lighttpd.conf

# Описание модулей
server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_compress",
# Добавляем строку, подключающую FastCGI
"mod_fastcgi",
# "mod_rewrite",
)
# Расположение файлов
server.document-root = "/var/www/"
# Индексные файлы, не забываем о index.php
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm", "index.lighttpd.html" )
# При необходимости указываем порт и адрес, на котором будут приниматься
подключения
# server.port = 80
# server.bind = "localhost"
# Кодировка для листинга файлов
dir-listing.encoding = "utf-8"
# UID|GID, с правами которых будет работать демон
server.username = "www-data"
server.groupname = "www-data"
# Добавляем строку-обработчик PHP-файлов
fastcgi.server = ( ".php" => ("bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php-fastcgi.socket"
))

По окончании настройки проверяем файл на отсутствие ошибок:

$ lighttpd -t -f /etc/lighttpd/lighttpd.conf
Syntax OK

После чего перезапускаем сервер:

$ sudo /etc/init.d/lighttpd force-reload

Принимаемся за MySQL:

$ sudo apt-get install php5-mysql mysql-server mysql-client

Можно поставить и другие пакеты, реализующие разные модули PHP, часто
требующиеся в работе – php-imap, php-gd, php-ldap и другие.

Для включения или отключения модулей можно использовать специальные
Perl-скрипты lighty-enable-mod, lighty-disable-mod, поставляемые вместе с
сервером. Например, включаем модуль fastcgi:

$ sudo lighty-enable-mod fastcgi
Available modules: auth cgi fastcgi proxy rrdtool simple-vhost ssi ssl userdir
Already enabled modules:
Enabling fastcgi: ok
Run /etc/init.d/lighttpd force-reload to enable changes

 

Многофункциональный прокси DeleGate

Выбор прокси-серверов в *nix огромен. Поиск в репозитарии любого дистра
выдаст десяток приложений, ориентированных на разные задачи и протоколы.
Возможности у них различны: кэширующие, фильтрующие, прозрачные и так далее.
Популярный Squid несколько тяжеловат и в настройке довольно сложен. Если нужен
только кэширующий прокси, заменить кальмара поможет или
Polipo
— легкий проксик, ориентированный на небольшое количество клиентов, или
популярный Oops!.

Когда нужен контроль доступа и прочие фичи без кэширования данных, обрати
внимание на Tinyproxy
или 3proxy. Требуется
фильтровать web-контент? Посмотри в сторону
WillowNG,
bfilter,
WebCleaner. Но мы
остановимся на DeleGate.
Причина такого выбора кроется в многофункциональности этого прокси. Он
поддерживает работу с большим количеством протоколов (HTTP, FTP, NNTP, SMTP, POP,
IMAP, LDAP, Telnet, SOCKS, DNS). Реализовано кэширование данных, фильтрация
трафика, аутентификация и другие функции. DeleGate нет в репозитарии Ubuntu, но
его установка несложна. Скачать архив с исходными текстами можно с сайта проекта
(в качестве логина указав e-mail). Приступаем к установке:

$ tar xzvf delegate9.9.0.tar.gz
$ cd delegate9.9.0
$ make

В процессе сборки будет запрошен email-адрес, который будет использоваться в
сообщениях об ошибках. По завершении процесса в каталоге $HOME/delegate
создается DGROOT-окружение, содержащее все рабочие библиотеки. Здесь же будут
находиться pid-файл, журнал и кэш. Для удобства работы скопируем исполняемый
файл delegated в каталог, доступный через переменную окружения PATH:

$ sudo cp -v src/delegated /usr/bin

Для примера запустим delegate в режиме http-прокси, работающего на 8080 порту
(‘-v’ для отладки):

$ delegated -v -P8080 SERVER=http

Настраиваем браузер на новый порт и пробуем подключиться. В консоли наблюдаем
за ходом работы. Если номер порта выбрать <1024, Delegate при запуске потребует
права root. Если не использовать параметр ‘-v’, то после инициализации демон
освободит консоль. Остановить затем процесс можно так:

$ delegated -P8080 -Fkill
"/home/user/delegate/act/pid/8080": kill(14131,SIGTERM) = 0 (0) ** OK **

Теперь добавим кэширование и ограничим работу Delegate только внутренним
интерфейсом:

$ delegated -P192.168.1.1:8080 SERVER=http CACHE=do

Процессы delegated никак не связаны между собой, таким образом, нам ничто не
мешает запустить столько копий Delegate со своими параметрами, сколько
действительно необходимо. Аналогично активируется FTP-прокси:

$ delegated -P8021 SERVER=ftp

Кроме того, Delegate может работать как HTTP, FTP, DNS или NNTP-сервер.
Например, запустим его как веб-сервер:

$ sudo delegated -P80 SERVER=http MOUNT="/* file:/var/www/*"

 

DNS сервер Dnsmasq

Использование своего DNS-сервера позволяет ускорить серфинг и чуточку
сократить нагрузку на внешний канал за счет кэширования. Популярный BIND –
монструозен, жаден до оперативки и имеет репутацию самого дырявого DNS-решения.
Но ему легко найти замену. Команда «sudo apt-cache search dns» выдаст несколько
предложений на любой вкус. К примеру, lwresd — сильно урезанный, только
кэширующий, сервер имен, который отвечает на запросы с помощью облегченного
протокола определения имен BIND 9, а не протокола DNS. Есть еще PowerDNS — очень
мощный и простой в настройке DNS-сервер, к которому написано много графических
тулз; MaraDNS с хорошей секурити историей; кэширующий djbdns; Dnsmasq, о котором
пойдет речь дальше, и другие.

Разработанный для небольших сетей
Dnsmasq
является кэширующим DNS, а также DHCP и TFTP-сервером. Объединение DNS и
DHCP-серверов в одной программе дает ряд преимуществ. Обмен данными «DNS – DHCP»
упрощен, и как только что-то делает одна часть, вторая тут же узнает об этом, на
лету корректируя свои установки. Скажем, полученный при помощи DHCP IP-адрес
сразу же попадает в DNS-таблицу. Сервер Dnsmasq умеет загружать информацию из
файла /etc/hosts, которую и будет использовать как для службы DNS, так и для
DHCP. Полученный клиентом IP может заноситься в hosts. Ставим:

$ sudo apt-get install dnsmasq

Настройки Dnsmasq производятся в единственном файле /etc/dnsmasq.conf. В
самом простом случае достаточно уточнить в нем интерфейс, чтобы он принимал
запросы только из внутренней сети:

listen-address=127.0.0.1, 192.168.0.1

Как вариант, можно использовать параметр «interface».

Теперь открываем /etc/resolv.conf и добавляем в самом начале строку «nameserver
127.0.0.1», указывая, что при опросе первым сервером имен станет локальная
система. Если провайдер для раздачи IP-адресов использует DHCP, то файл /etc/resolv.conf
будет переписан при следующем подключении. Чтобы этого избежать, в /etc/dhcp3/dhclient.conf
снимаем комментарий с записи:

prepend domain-name-servers 127.0.0.1;

Теперь при обновлении первой строкой в resolv.conf будет вставлена ссылка на
127.0.0.1. При необходимости сюда через запятую можно добавить IP-адреса других
предпочитаемых DNS-серверов. Перезапускаем dnsmasq:

$ sudo /etc/init.d/dnsmasq restart

Минимальная настройка DHCP-сервера фактически сводится к настройке директивы
dhcp-range, при помощи которой задаются границы диапазона IP-адресов для выдачи
клиентов:

dhcp-range=192.168.1.100,192.168.1.150,255.255.255.0,24h

В этом примере был задан диапазон 192.168.1.100-192.168.1.150. Сетевая маска
необязательна, – Dnsmasq способен подобрать оптимальную, исходя из текущих
настроек. Так же из системных настроек берутся имена домена, DNS-сервера и
IP-адрес маршрутизатора. Последним идет необязательный параметр, указывающий на
время выдачи адреса, после которого клиент повторяет запрос на его получение.
Кроме того, в файле можно найти еще несколько директив, начинающихся на dhcp-. С
их помощью под силу задать практически любые настройки DHCP. Например, чтобы
клиенту с определенным MAC-адресом всегда выдавался один и тот же IP-адрес,
используем dhcp-host:

dhcp-host=00:11:AA:BB:22:CC,192.168.1.200,dejavu

Кстати, у dhcp-host есть несколько дополнительных опций. Так, чтобы
игнорировать систему с определенным адресом, в конце предыдущего правила
добавляем «ignore».

 

Легкий почтовик XMail

Небольшой (1.5 Мб) и легкий в работе
XMail – это полноценный
SMTP, POP3 и Finger-сервер, который может работать на широком спектре систем:
Linux, *BSD, Mac OS X, Solaris и Windows NT/2000/XP/2003/Vista. Позиционируется
как для внутренней сети интранет, так и для работы в интернете. Может
обслуживать несколько доменов, умеет управлять внешними POP3 учетными записями,
алиасами, списками рассылки, поддерживает несколько типов аутентификации и
многое другое. Очень прост в настройке и идеально подходит для случаев, когда
Sendmail/Postfix/Exim админу не по зубам или попросту излишен. Соответствующие
пакеты есть в репозитарии Ubuntu:

$ sudo apt-get install xmail xmail-doc

В процессе установки будет запрошено имя домена по умолчанию и учетная запись
для отправки служебных сообщений. Рабочими каталогами для XMail являются /var/lib/xmail
(при установке из сырцов /var/Mailroot), /var/spool/xmail и некоторые другие. В
пакетах Debian/Ubuntu для удобства настройки основные конфигурационные файлы
размещены в /etc/xmail, а в указанных каталогах находятся символические ссылки.
Для каждого домена так же создается отдельный каталог. Управление запуском
сервера производится при помощи скрипта /etc/init.d/xmail. Все настройки описаны
в README, который доступен как на сайте проекта, так и в /usr/share/doc/xmail.
При ручной правке разработчики советуют помнить о формате файлов. Каждый
параметр начинается с новой строки. Если команда имеет несколько значений, то их
следует прописывать через табуляцию (сколько они займут строк, неважно; пока не
нажат <Enter>, вся запись будет сопоставлена этому параметру).

Команда «netstat -atn», введенная после инсталляции, показывает, что
слушаются 25 (SMTP) и 110 (POP3) порты. Поэтому нас ждет минимум настроек.
Сервер XMail не использует общесистемные учетные записи, а хранит данные о
пользовательских аккаунтах в своих файлах. Например, учетные записи для работы с
почтой находятся в файле mailusers.tab, а в smtpauth.tab заносятся учетные
записи для подключения к SMTP-серверу (используются они только для отправки
сообщений). Сети, с которых можно отправлять и получать почту, указываются
соответственно в файлах pop3.ipmap.tab и smtp.ipmap.tab. По умолчанию запись в
них разрешает подключение с любого адреса:

"0.0.0.0" "0.0.0.0" "ALLOW" 1

Вероятно, здесь следует разрешить подключения только из внутренних сетей:

"0.0.0.0" "0.0.0.0" "DENY" "1"
"192.168.1.0" "255.255.255.0" "ALLOW" "2"

В других файлах находятся данные SMTP-шлюзов и релеев, алиасы доменов,
настройки антиспама и прочее. Править файлы вручную необязательно. Сервер XMail
предоставляет возможность удаленного управления (порт 6017).

На сайте проекта в разделе «XMail Tools» можно найти ссылки на некоторые
инструменты. Например, PHP-интерфейс к XMail — PHPXmail (phpxmail.sf.net). Но
вначале нужно создать в ctrlaccounts.tab учетную запись администратора. Создание
новой записи здесь несколько необычно. Первым делом при помощи утилиты XMCrypt
генерируем хэш пароля:

$ sudo /usr/sbin/XMCrypt p@5sw0rd
1525501612551701

Копируем полученную строку в ctrlaccounts.tab и добавляем логин. Примерно
так: «admin 1525501612551701». Кроме того, в ctrl.ipmap.tab следует ограничить
доступ к управлению сервером только определенными сетями или адресами, как это
сделано в других *.ipmap.tab. Скачиваем, распаковываем в каталог /var/www архив
PHPXmail и набираем в браузере http://localhost/phpxmail. Выбираем ссылку «Add
new server», а затем вводим данные своего сервера и учетные данные админа. После
подключения получаем возможность управлять учетными записями через веб-интерфейс,
а пользователи могут работать с почтой. Журналы находятся в каталоге /var/log/xmail.
Здесь три файла: ctrl* — управление, smtp* — отправка почты и pop3 – получение.

Оставить мнение

Check Also

Кеш-атаки по сторонним каналам. Что произошло в области утечек на аппаратном уровне за последние два года

Несмотря на то что до 2016 года существовало лишь несколько публикаций о кеш-атаках на сма…