Украинская Баннерная Сеть

Аренда сервера. Выделенные серверы в Украине и Нидерландах
Аренда сервера

VPS, VDS, Windows VPS - от $10
VPS
Как не превратить свой почтовый сервер в рассадник спама

В последнее время приходится наблюдать определенное увеличение числа спама, рассылаемого при помощи вредоносного ПО через почтовые сервера провайдеров и организаций. В этом случае сами провайдеры и организации, чьи сервера используются для рассылки, страдают в гораздо большей мере, чем получатели спама. Чем чревата рассылка спама через Ваш почтовый сервер и как с этим бороться? Обо всем по порядку.

Когда раньше зомби машины рассылали письма напрямую, то с ними было относительно легко бороться. Часть из них не имела обратной записи и отфильтровывалась на проверках ip, часть на грейлистинге, часть на других фильтрах. Сейчас вредоносное ПО умнеет и в некоторых случаях зомби машины рассылают сообщения через почтовые сервера, которые указаны в настройках почтовых клиентов (Outlook, The Bat! и т.д.). Поскольку почтовый сервер имеет очередь сообщений, корректные DNS записи и т.д. – это позволяет спам сообщению проходить грейлистинг и многие другие фильтры, что доставляет лишних хлопот получателям таким сообщений. Но несоизмеримо больше хлопот такой спам доставляет тем администраторам, через чьи сервера он рассылается.

Как правило у провайдеров и организаций почтовые сервера настроены таким образом, что сообщение от компьютеров из внутренних подсетей принимаются к отправке без всяких ограничений и любой компьютер из внутренней подсети, если будет заражен вредоносным ПО, сможет осуществить спам рассылку через почтовый сервер. Результатом такой спам рассылки будет рост очереди почтовых сообщений, вплоть до десятков тысяч и более писем. Сервер будет заниматься рассылкой десятков и сотен тысяч писем спама в то время как легитимная корреспонденция будет ожидать своей очереди. Таким образом одна единственная рассылка может парализовать нормальное хождение почты на срок от нескольких часов и более в зависимости от объема рассылки. Как же с этим бороться?

Очень просто. Во-первых следует включить SMTP авторизацию. Во-вторых, поскольку все спам сообщения имеют поддельный обратный адрес, при отправке сообщений авторизованными пользователями нужно проверять совпадает ли то, что клиент передает в качестве обратного адреса с тем адресом, который хранится в базе для этого пользователя.

Поясню на примере postfix’а. Я не буду объяснять как настроить postfix с поддержкой виртуальных пользователей и авторизации, вместо этого я буду полагать, что Вы уже имеете postfix настроенный таким образом. Так вот, если перед рестрикшном “permit_sasl_authenticated” добавить рестрикшн “reject_authenticated_sender_login_mismatch”, чтобы они выглядели примерно так:

...
reject_authenticated_sender_login_mismatch,
permit_sasl_authenticated,
...

то будет следующая картина: если пользователь авторизуется как [email protected] и попытается передать письмо в котором в качестве обратного адреса указан [email protected], то в ответ получит ошибку:

5.7.1 <[email protected]> Sender address rejected: not owned by user [email protected]

Поскольку все сообщения рассылаемые вредоносным ПО имеют поддельный обратный адрес, то таким образом Вы сможете защитить свой почтовый сервер, не допустив его превращения в рассадник спама.

Создание jail’ов в FreeBSD

1. Создание джейла

Перед продолжением убедитесь, что у Вас уже установлены исходники в /usr/src и ip адрес x.x.x.x висит альясом на одном из интерфейсов.

Для управления джейлами установим jailadmin:

cd /usr/ports/sysutils/jailadmin/
make install clean

Определимся где будут жить джейлы. Например, это будет /jails. Создадим эту директорию:

mkdir /jails

Создадим директорию для джейла с именем www.

mkdir /jails/www

Скопируем туда мир:

cd /usr/src
make buildworld
make installworld DESTDIR=/jails/www
make distribution DESTDIR=/jails/www

Отредатируем /etc/fstab, добавим туда:

devfs     /jails/www/dev     devfs   rw,noauto  0 0
proc      /jails/www/proc    procfs  rw,noauto 0 0

Отредактируем /usr/local/etc/jailadmin.conf:

jaildir=/jails
maxparallel=5
debug=1
default_devfsruleset=devfsrules_jail
default_fstab=/etc/fstab
default_shutdown=naive
default_startcommand=/bin/sh /etc/rc
default_usejtools=1

# ========= Jails ======
www
    ip: x.x.x.x
    hostname: www.example.com
    mount: /proc,/dev

2. Запуск, остановка, работа с джейлом

Запуск джейла и остановка выполняются командами:

jailadmin start www
jailadmin stop www

Список запущенных джейлов:

jls

Перейти в джейл:

jexec N sh

где N – номер джейла из jls

Мониторим загрузку дисков (Disk I/O) в cacti.

В Windows версии пакета net-snmp отсутствуют mib’ы для мониторинга загрузки дисковой подсистемы. Поэтому мониторить, описанным ниже способом, получится толь только *nix системы.

1. Установка

- Качаем Cacti_Net-SNMP_DevIO_v3.zip (альтернативная ссылка). Распаковываем.

- Файл net-snmp_devio.xml кладём в /путь_к_cacti/resource/snmp_queries/net-snmp_devio.xml.

- Файлы net-snmp_devIO-BytesRW_graphTMPL.xml, net-snmp_devIO-LoadAVG_graphTMPL.xml, net-snmp_devIO-ReadsWrites_graphTMPL.xml импортируем в cacti (“Import Templates” в меню cacti).

- Открываем “Data Queries”, создаем новый “Data Query”:
DataQuery1
 
Подробнее »

Защищаем apache 1.3 в FreeBSD. Процессы с привилегиями пользователя.

В этой статье я рассмотрю решения, которые позволяют процессам apache 1.3 выполняться от имени пользователя, которому принадлежит виртуалхост. Архитектура apache 1.3 предполагает только prefork схему, поэтому все описанные ниже решения работают примерно одинаково: в системе запускается некоторое количество процессов apache. При получении запроса он передается одному из бездействующих процессов, процесс определяет на какой виртуалхост пришел запрос и какому пользователю принадлежит этот виртуалхост, после чего процесс suid’ится в пользователя/группу, которым принадлежит виртуалхост. Вся последующая обработка запроса происходит уже от имени пользователя/группы, которым принадлежит виртуалхост.

1. suexec
2. suphp
3. dklab
4. производительность


1. suexec

Описание:

suexec позволяет выполнять CGI скрипты от пользователя, которому принадлежит виртуалхост.

Установка suexec в FreeBSD:

В /etc/make.conf добавить:

.if ${.CURDIR} == /usr/ports/www/apache13
WITH_APACHE_SUEXEC=yes
APACHE_SUEXEC_DOCROOT= /home
.endif

В “APACHE_SUEXEC_DOCROOT” следует задавать директорию в которой располагаются пользователи и их DocumentRoot директории.

После этого:

# cd /usr/ports/www/apache13
# make install clean

Конфигурирование:

В описание виртуалхоста добавить:

User example
Group example

Преимущества:

+ CGI скрипты работают от имени пользователя.

Недостатки:

- От имени пользователя будут выполняться только CGI скрипты. Скрипты PHP, запущенные под mod_php будут продолжать выполняться от имени веб-сервера.


2. suphp

Описание:

suphp – это DSO-модуль (Dynamic Shared Object) для apache. Позволяет выполнять PHP скрипты от пользователя, которому принадлежит виртуалхост.

Установка suphp в FreeBSD:

# cd /usr/ports/www/suphp
# make install clean

Конфигурирование:

в httpd.conf:

LoadModule suphp_module libexec/apache/mod_suphp.so
AddModule mod_suphp.c
suPHP_Engine on
suPHP_AddHandler x-httpd-php
AddType application/x-httpd-php .php
AddHandler x-httpd-php .php

в описании виртуалхоста:

suPHP_UserGroup example example

Преимущества:

+ PHP cкрипты работают от имени пользователя.

Недостатки:

- От имени пользователя будут выполняться только PHP скрипты. CGI скрипты будут продолжать выполняться от имени веб-сервера.
- PHP скрипты запускаются при помощи php-cgi, что лишает возможности использовать mod_php со всеми его преимуществами в плане производительности.


3. dklab apache

Описание:

dklab apache – это apache 1.3.34 c набором патчей от Дмитрия Котерова. Подробную информацию можно получить по адресу: http://dklab.ru/lib/dklab_apache/

Установка dklab apache в FreeBSD:

Можно скачать порт, распаковать в /usr/ports/www/dklab-apache, затем собрать порт:

# cd /usr/ports/www/dklab-apache
# make install clean

Либо можно скачать готовые пакеты и установить при помощи pkg_add:
http://woland.pl.ua/upload/dklab-apache-i386.tbz
http://woland.pl.ua/upload/dklab-apache-amd64.tbz

Конфигурирование:

В описание виртуалхоста добавляем:

User example
Group example

Преимущества:

+ Удобство конфигурирования. Не требуется конфигурировать отдельно suexec и suphp, достаточно директив User/Group в описании виртуалхоста.

Недостатки:

- Процесс выполняется от имени пользователя даже при обработке запроса на статический файл, что негативно сказывается на общей производительности.


4. производительность

Для тестирования производительности использовались 3 файла.
Первый – статический HTML файл с текстом “Hello world!”.
Второй – PHP скрипт:

<? phpinfo() ?>

Третий – CGI скрипт:

#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "Hello world!";

Каждый файл запрашивался 50.000 раз в 50 потоков (“ab -c 50 -n 50000 …”). Засекалось время в секундах за которое полностью выполнится тест.

Время выполнения теста (в сек.):

HTML PHP CGI
apache 1.3.41 5 22 152
apache 1.3.41 с suexec - - 229
apache 1.3.41 с suphp - 388 -
dklab apache 395 293 497

Стоит отметить, что тест синтетический и показывает не то, чтобы реальные цифры производительности, а скорее сколько времени требуется apache‘у для того, чтобы переключить пользователя от которого работает процесс. К примеру, dklab apache c mod_php на реальной живой системе показал всего лишь ~7-10% разницу в потреблении ресурсов CPU по сравнению с mod_php на обычном apache.

Видео с Highload 2009. Блиц-доклады

Видео доклад с конференции Highload 2009.

Название: Блиц-доклады
Год: 2009
Докладчик: Разные докладчики
Компания: N/A
Язык доклада: Русский
Описание: Блиц-доклады – это серия коротких докладов, по 5 минут каждый. На видео представлены 9 докладов:

1. “Виртуальные хосты веб-сервера Apache. Проблемы и решения для массового хостинга“. Кратко: при многотысячном числе виртуальных хостов рестарт apache’а происходит 15-20 секунд. Доклад о том, как этого избежать.

2. “9 способов ответить на HTTP GET“. Беглый обзор и сравнение CGI, mod_perl, FastCGI, ngx_perl, POE, HTTP::Daemon, AnyEvent, HTTP::Engine, PSGI.

3. “Как мы используем nginx“. Представитель mail.ru рассказывает о том, как прикручивали геобазу к существующему проекту.

4. AnyEvent. Обзор возможностей метафреймворка AnyEvent

5. “Python и высокая нагрузка“. Следует ли использовать python там, где нужна высокая нагрузка.

6. “Perl 6 на высоких нагрузках“. Заметка о компиляторах perl 6.

7. “РНР-разгон“. Некоторые аспекты оптимизации PHP кода.

8. Функционал “Мир Тесен” внутри “Вконтакте”. С технической стороны польза от доклада равна нулю, поскольку техническая сторона отсутствует в принципе. Спонсорский доклад, чистая реклама.

9. “PowerDNS в масштабах хостинг-провайдера“.

Подробнее »


Украинская Баннерная Сеть
Hosting Catalog Rambler's Top100