Использование ipset в CentOS 5 | ||
Сети > Маршрутизация Появилась задача: блокировать доступ некоторому списку пользователей доступ в сеть Internet, трафик пользователей проходит через софтварный (программный) Linux маршрутизатор (роутер).
Первая мысль — блокировать в iptables. Мысль это безусловна верная, но при большом количестве правил, это будет создавать излишнюю нагрузку на CPU. Так например линейный список из 1000 правил убьет производительность роутера под нуль.
Каким образом можно увеличить производительность данной схемы ?
Выход был найден – ipset.
Установка ipset для CentOS i386 занимает 1 минуту:
Подключаем CentALT: rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm
Устанавливаем нужные пакеты: yum install ipset kmod-ipset
Обновляем iptables — пересобран штатный для CentOS iptables, только добавлен модуль SET. yum update iptables Создаем файл /etc/ipset.conf в который будем писать ip которым запрещен доступ следующего содержания #!/bin/bash
# Создаем новую цепочку правил
ipset -N access iphash
# добавляем список доступа
ipset -A access 192.168.0.2
ipset -A access 192.168.0.3
ipset -A access 192.168.0.4
добавляем в автоматический запуск в файл /etc/rc.d/rc.local добавляем последней строку /bin/bash /etc/ipset.conf
Затем добавляем в /etc/sysconfig/iptables единственную строку которая закроет доступ всем ip адресам из выше приведенного списка -A FORWARD -m set --set access src -j DROP
перегружаем правила iptables
# service iptables restart Все. Переход от блокировки в iptables на блокировку в ipset снизил нагрузку на систему более чем в 2 раза при количестве правил >1000, сетевой трафик проходящий через роутер в районе 100 kpps.
Подобным образом можно успешно защищаться от простых DDOS атак.
Источник: http://centos.alt.ru/?p=402 |
||
Комментарии | ||