пятница, 31 декабря 2010 г.

Установка spamblock

Встал вопрос борьбы со спамерами, от абонентов.
Обычно для этого использовался PF,
но на виртуальной машине Xen FreeBSD 8.1 уходит в коматоз просто при включении PF.
Поэтому пришлось находить другой вариант борьбы...
Нашел аналог, который будет работать в том числе и с IPFW - spamblock.
Это скрипт при помощи tcpdump отлавливает количество соединений за определенный период и если он превышает установленные значения, происходит блокировка (занос в таблицу).


Требования:
OS - FreeBSD or Linux
perl modules: Config::General, Time::Local
tcpdump
ipfw2, pf, iptables or iptables+ipset

Установка рассматривается под FreeBSD+ipfw
Можно просто выполнить этот скрипт, spamblock и конфиг будут в /etc/SPAMBLOCK

#/bin/sh
mkdir /etc/SPAMBLOCK
cd /etc/SPAMBLOCK
wget http://sources.homelink.ru/spamblock/spamblock.txt
wget http://sources.homelink.ru/spamblock/spamblock.conf.txt
cp spamblock.txt spamblock.pl
cp spamblock.conf.txt spamblock.pl.conf
chown -R root:wheel ./
chmod 400 spamblock.pl.conf
chmod 700 spamblock.pl
chmod 500 /etc/SPAMBLOCK
rm -f spamblock.txt
rm -f spamblock.conf.txt
Установка необходимых модулей

perl -MCPAN -e shell
install Config::General
install Time::Local
Настройка конфига

#!/bin/sh
# spamblock.conf
# На какой сетевой ловить спамеров
IFACE="net0"
# Какой фаер используем
FIREWALL_TYPE="ipfw"
# Какая таблица используется для спамеров
IPFW_TABLE="100"
# Схема блокировок, блокировать, если:
# больше 5 попыток конекта в 1 сек
# больше 10 попыток конекта в 3 сек 
# больше 15 попыток конекта в 6 сек 
# больше 20 попыток конекта в 10 сек
# больше 60 попыток конекта в 60 сек
# больше 300 попыток конекта в 600 сек
# больше 1000 попыток конекта в 3000 сек
# POLICY="5 1 10 3 15 6 20 10 60 60 300 600 1000 3000"
# ### Я выставляю более жесткие правила...
POLICY="5 1 10 3 10 6 15 10 20 60 100 600 500 3000"
# Куда слать отчеты
EMAIL="spam-alert@mail.ru"
# Исключения
WHITELIST="1.2.3.4, 5.6.7.8"

## EOF ##

Запуск из /etc/rc.local

/etc/SPAMBLOCK/spamblock.pl >> /var/log/spamblock.log 2>&1 &
Настраиваем ротацию логов

# spamblock
/var/log/spamblock.log   root:wheel  600 10 100 * JC
Примечение: скрипт запускает на прослушивание порт 25, при этом не переводя сетевую в promiscuous mode.
Для того чтоб спамеры блокировались, необходимо добавть правило в фаервол вида

ipfw add 100 deny tcp from table(100) to any in
Все, наступило счастье :)!!!

Кстати, данную схему можно успешно использовать и для других портов.

Комментариев нет:

Отправить комментарий