Проксирующий сервер для анализа трафика
30 Август 2012, 12:20
Один мой клиент поставил задачу - защитить его игровой сервер Lineage2 от DDoS атак, посредством настройки проксирующего сервера между ним и внешним миром. Были реализованы различные варианты организации этой системы, но о самомэффективном из опробованных я изложу здесь. В качестве операционной системы на сервер был выбран Debain 6. После основной настройки сервера и фаервола пришла очередь настройки проксирования. Выбор пал на демон inetd.
Входные данные:
Игровые порты для проксирования: tcp 2106 и tcp 7777
IP-адрес проксирующего сервера: 9.9.9.9
IP-адрес подзащитного: 10.10.10.10
Для начала устанавливаем демон:
# apt-get install xinetd
Теперь создаем его файлы конфигурации для каждого порта.
# nano /etc/xinet.d/proxy2106
с содержимым:
service proxy2106
{
disable = no
type = UNLISTED
socket_type = stream
wait = no
user = nobody
group = nobody
protocol = tcp
port = 2106
bind = 9.9.9.9
redirect = 10.10.10.10 2106
per_source = UNLIMITED
instances = UNLIMITED
cps = 10000 1
log_on_success = HOST
log_type = FILE /var/log/proxy2106.log
}
# nano /etc/xinet.d/proxy7777
с содержимым:
service proxy7777
{
disable = no
type = UNLISTED
socket_type = stream
wait = no
user = nobody
group = nobody
protocol = tcp
port = 7777
bind = 9.9.9.9
redirect = 10.10.10.10 7777
per_source = UNLIMITED
instances = UNLIMITED
cps = 10000 1
log_on_success = HOST
log_type = FILE /var/log/proxy7777.log
}
Теперь по-подробнее про ключевые параметры:
log_on_success = HOST
log_type = FILE /var/log/proxy7777.log
Здесь мы указываем куда писать все подключения к демону на нужный нам порт и в каком режиме. Он будет регистрировать в указанный файл все адреса хостов при каждом новом подключении.
Лог-файл будет выглядеть примерно так:
12/8/30@11:10:51: START: proxy7777 from=46.159.247.218
12/8/30@11:11:34: START: proxy7777 from=78.106.187.96
12/8/30@11:11:39: START: proxy7777 from=77.106.247.140
12/8/30@11:11:43: START: proxy7777 from=77.106.247.140
12/8/30@11:12:34: START: proxy7777 from=93.74.30.48
12/8/30@11:12:39: START: proxy7777 from=194.50.254.170
12/8/30@11:12:40: START: fproxy7777 from=178.93.178.193
12/8/30@11:12:43: START: proxy7777 from=194.50.254.170
12/8/30@11:12:49: START: proxy7777 from=178.93.178.193
12/8/30@11:12:51: START: proxy7777 from=77.35.25.229
Как видим регистрируется время нового подключения и адрес удаленного клиента.
Остается только написать скрипт обработки этих данных, который будет вылавливать частые подключения с одного и того же адреса и вносить его в запрещающие правила фаервола.
Но это уже другая история, да и делиться этим скриптом я не буду -оставлю себе на хлеб =)
P.S.: Здесь есть один минус,- все пакеты приходящие на подзащитный сервер будут иметь адрес нашего прокси-сервера.
5 Ответа(ов) на "Проксирующий сервер для анализа трафика"
24 Сентябрь 2012, 23:07
Не подскажете случайно как из этого лога выбрать ip-адрес?
24 Сентябрь 2012, 23:49
cat /var/log/proxy7777.log | awk {‘print $4’} | cut -f 2 -d “=”
Даст список всех адресов в файле лога.
25 Сентябрь 2012, 00:06
Спасибо большое!!!
28 Август 2013, 14:31
Уважаемый Александр, я так понимаю вы пробовали настройки с использованием НатДенат в айпитейбл. Какие были результаты? понимаю описываемая проблема была давненько , но может помните.
6 Сентябрь 2013, 08:37
Да, пробовал и средствами iptables. Принципиальной разницы нет. Но есть одно но: сбор и анализ статистики по логам был гораздо проще при реализации через inetd.