Autofaucets.ru - автоматический сборщик криптовалюты с кранов!

НАСТРОЙКА IPTABLES. Защита от паразитного трафика

Posted by Cooper Tue, 28 Nov 2006 16:14:00 GMT

Анализируя информацию о статистике использования моего блога, я обнаружил, что ежедневно с конкретных хостов происходит подозрительно бурная активность, характерная скорее для роботов или пауков чем для реальных пользователей.

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

Я решил найти простое и действенное средство защиты от паразитного трафика, которое, по возможности, должно базироваться на стандартных утилитах LINUX. Для себя я выделил несколько подходов:

  1. Блокировать “плохие” хосты на уровне приложения;

  2. Использовать стандартные средства вэб-сервера Apache или lighttpd;

  3. Настроить правила утилиты iptables, которая присутствует во всех LINUX дистрибутивах, базирующихся на ядрах 2.4.x или 2.6.x

    Первые два способа были исключены из рассмотрения, поскольку здесь существует определённая привязка к приложению или к конкретному web-серверу. И если, например, Apache будет заменён на ngnix, придется заново прописывать блокирующие правила. К тому же, паразитные пакеты будут доходить до вэб сервера и приложения, дополнительно загружая их.

    Используя утилиту iptables достаточно просто можно настроить набор правил для блокирования, а также получить средство для накопления и просмотра статистики по созданным правилам.

Настройка правил iptables

Процесс настройки достаточно простой и занимает несколько минут. Надо заметить, что Вы должны зайти на сервер как root пользователь или использовать команду sudo для добавления правил.

Итак, у нас есть конкретный хост (crawler.bloglines.com, IP=65.214.44.29) и целая подсеть (84.110.0.0), которые надо забанить. Правила выглядят так:

#Crawler bloglines 
/sbin/iptables -A INPUT -s 65.214.44.29 -p tcp -m multiport --dports 80 -j DROP

#bzq-*.red.bezeqint.net
/sbin/iptables -A INPUT -s 84.110.0.0/255.255.0.0 -p tcp -m multiport --dports 80 -j DROP

Для других хостов или подсетей в правилах iptables, меняется только IP источника (параметр -s).

Просмотр статистики iptables

Запускаем iptables с параметрами -L и -v для просмотра статистики. Опция -L определяет вывод статистики для цепочки (chain). Если конкретная цепочка не задана, то для всех.

Опция -v задает расширенный вывод, включающий в себя счетчики пакетов и байт.

Очень часто добавляется параметр -n, который говорит команде iptables о том, что не надо обращаться к DNS для разрешения IP адресов и вывода их в виде доменных имен. Это значительно уменьшает время на выдачу результатов и позволяет уменьшить нагрузку на сервер.

Для дополнительного удобства список правил может быть пронумерован. Для этого используется опция –line-numbers.

/sbin/iptables -L -v --line-numbers

Сохранение правил и статистики

Если перезагрузить компьютер или удалить iptables kernel modules вся информация о собранной статистике и добавленных правилах будет утеряна. Чтобы предотвратить потерю данных необходимо делать бэкап после каждого изменения в списке правил. Для этого служить утилита iptables-save. Например:

iptables-save -c > /root/iptables-backup.txt

Восстановить данные из бэкапа можно используя команду iptables-restore. Обычно это делается после перезагрузки в одном из скриптов инициализации, например в /etc/rc.d/rc.local для Red Hat Linux.

iptables-restore -c < /root/iptables-backup.txt


Библиография:

Posted in  | Tags , , , , , ,  | 4 comments

Comments

  1. Avatar Gluek said 27 days later:

    Спасибо за информацию!

  2. Avatar Alx said over 2 years later:

    а можно узнать что за шрифт у вас используется в эмуляторе терминала?))

  3. Avatar Cooper said over 2 years later:

    Для примера использовал специально более мелкий шрифт - Terminal 9pt. В повседневной работе установлен тот же шрифт, только 14pt.

  4. Avatar netlink4@gmail.com said over 4 years later:

    вообще-то мульти-порт используют для перечни портов а не для одного порта как Вы тут пишите! iptables -A INPUT -i ppp0 -p tcp -m multiport –dports 21,22,80,6881 -j ACCEPT А от всякого мусора вот правило пример >>> iptables -A INPUT -i ppp0 -p tcp -m tcp –tcp-flags FIN,SYN,ACK SYN -j REJECT –reject-with icmp-port-unreachable

(leave url/email »)

   Comment Markup Help Preview comment