Go to content Go to menu

Один мой клиент поставил задачу - защитить его игровой сервер 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 Ответа(ов) на "Проксирующий сервер для анализа трафика"

  1. Игорь Says:

    Не подскажете случайно как из этого лога выбрать ip-адрес?

  2. Александр Says:

    cat /var/log/proxy7777.log | awk {‘print $4’} | cut -f 2 -d “=”
    Даст список всех адресов в файле лога.

  3. Игорь Says:

    Спасибо большое!!!

  4. Александр Says:

    Уважаемый Александр, я так понимаю вы пробовали настройки с использованием НатДенат в айпитейбл. Какие были результаты? понимаю описываемая проблема была давненько , но может помните.

  5. Александр Says:

    Да, пробовал и средствами iptables. Принципиальной разницы нет. Но есть одно но: сбор и анализ статистики по логам был гораздо проще при реализации через inetd.

Leave A Reply

Помощь по Textile