The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Защита от спамерских и bruteforce-атак с помощью iptables
Сохраняем в файл скрипт:

   #!/bin/sh
   # Защита от спамовских атак и от BRUTE-атак с помощью IPTABLES
   # REJECT_BRUTERS v.1.0 Lev Zabudkin. zabudkin@mail.ru. http://zabudkin.ru
   # 23.03.2010
   #
   #  Описание:
   #   Данный скрипт позволяет Вам, используя iptables заблокировать
   #   дальнейшие попытки соединения от надоедливых хостов,
   #   которые пытались приконнектиться в течении определенного Вами времени
   #   и определенное Вами количество раз.
   #
   #  Итак поехали:
   #
   #  Мы создаём ниже переменную IPTABLES, дабы не указывать  постоянно где он лежит 
   #  Где у Вас лежит iptables?  (подсказка: # whereis iptables)
   IPTABLES="/sbin/iptables"

   #  На каком сетевом интерфейсе контролировать коннекты
   CHECK_INT="ppp0"

   #  Сколько именно коннектов Вы разрешаете с одного хоста?
   #  В данном случае указано 2, чего вполне достаточно для SMTP.
   MAXIMUM_CONNECTIONS_PER_PERIOD=2

   #  А в течение скольки секунд они разрешены?
   PERIOD_SECONDS=60

   #  Пояснение:  Если в течении Выше указанных секунд хост (в данном примере любой(!))
   #  попытается приконнектиться к Вам, то соединение будет отброшено (см. -j DROP)
   #  причем НАВСЕГДА, т.е ДО ТЕХ ПОР, пока Вы не обнулите цепочку BRUTE_CHECK
   #  ключём -F BRUTE_CHECK команды iptables

   #  Создаём цепочку  BRUTE_CHECK
   $IPTABLES -N BRUTE_CHECK
   #  Обнуляем правила цепочки BRUTE_CHECK
   $IPTABLES -F BRUTE_CHECK

   #  В данном случае мы удаляем ранее сделанное "перенаправление" (см. чуть ниже)
   #  чтобы этот скрипт можно было вызывать многократно
   $IPTABLES -D INPUT -j BRUTE_CHECK

   #  В данном случае мы "перенаправляем" для обработки входящие пакеты
   #  в нашу созданную цепочку
   $IPTABLES -A INPUT -j BRUTE_CHECK

   #  А тут уже пошли наши правила, которые гласят:
   #  все входящие пакеты на сетевой интерфейс (мы его указали выше),
   #  которые являются для нас новыми (см. state) и которые соответствуют нашим
   #  параметрам (см. выше), мы отбрасываем.
   $IPTABLES -A BRUTE_CHECK -i $CHECK_INT -p tcp -m state --state NEW -m recent --set --name BRUTE

   # См. Ниже Пояснение, если понадобится, то раскоментируете нижеприведенную строку 
   # (просто уберите символ решетки - #)
   #$IPTABLES -A BRUTE_CHECK -i $CHECK_INT -p tcp -m state --state NEW -m recent --update --seconds $PERIOD_SECONDS \
   #  --hitcount $MAXIMUM_CONNECTIONS_PER_PERIOD --rttl --name BRUTE -j LOG --log-level 4 --log-prefix '** BRUTE **'

   $IPTABLES -A BRUTE_CHECK -i $CHECK_INT -p tcp -m state --state NEW -m recent --update --seconds $PERIOD_SECONDS \
     --hitcount $MAXIMUM_CONNECTIONS_PER_PERIOD --rttl --name BRUTE -j DROP


Пояснение:

Для того, чтобы видеть, каких же успехов Вы добились, применив выше написанное,
проделайте следующее:

откройте файл /etc/syslog.conf и добавьте в конец строку:

   kern.warning /var/log/iptables.log

затем перезапустите syslog:

   /etc/init.d/syslog restart

(если у Вас Ubuntu, то наверное это sysklogd)

События (про попытки) будут записываться в файл /var/log/iptables.log,
его и смотрите.

Да, и будет не лишним добавить данный скрипт в CRON (/etc/crontab),
скажем каждые 5 минут:

   */5 * * * * root Путь/ВашСкрипт
 
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетные фильтры в Linux: iptables, ipchains

Обсуждение [ RSS ]
 
  • 1.1, lab, 22:52, 25/03/2010 [ответить] [смотреть все]
  • +/
    СПАСИБО! Наконец-то! Вы так доходчиво пишете Лев, спасибо Вам! Мне особенно понравилась Ваша статья про сквид!
     
  • 1.4, JKJ, 23:02, 25/03/2010 [ответить] [смотреть все]
  • +/
    да как это чем! Раньше долбали все кому не лень. а сейчас - тишина!
     
  • 1.5, Alexey, 09:34, 26/03/2010 [ответить] [смотреть все]
  • +/
    Жду еще подобных заметок с подробными коментариями!
     
  • 1.6, ALex_hha, 13:24, 26/03/2010 [ответить] [смотреть все]
  • +/
    > В данном случае указано 2, чего вполне достаточно для SMTP.

    два конекта в минуту достаточно для SMTP?!!

     
  • 1.7, теоретик, 11:52, 27/03/2010 [ответить] [смотреть все]
  • +/
    За 10 минут в логе 9 адресов и все долбятся на 445 порт... Сомнительная польза, ИМХО.
     
     
  • 2.8, теоретик, 12:13, 27/03/2010 [^] [ответить] [смотреть все]  
  • +/
    И кстати, по крайней мере у меня --hitcount 3 третье соединение уже не пропускается. Т.е. в вашем скрипте разрешено только одно соединение в 60 секунд.
    Или в новых ядрах это поведение изменено?
     
  • 1.9, navis, 22:30, 28/03/2010 [ответить] [смотреть все]  
  • +/
    Для подобных целей fail2ban существует
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 12.05 Организация шифрованного бэкапа с помощью rdiff-backup, encfs и Dropbox
    - 11.05 Настройка беспроводного соединения в Debian GNU/Linux
    - 07.05 Использование Google Drive в Linux
    - 18.04 Использование нескольких сетевых стеков в Linux
    - 15.04 Восстановление стандартного KDE меню после его удаления (например, wine)
    - 11.04 Настройка gmirror при использовании GPT во FreeBSD 9
    - 09.04 Маршрутизатор на базе FreeBSD с приоритизация трафика средствами PF и ALTQ
    - 02.04 Частичное восстановление данных MySQL из бэкапа, созданного с использованием LVM
    - 21.03 Настройка DNSSEC в BIND 9.9
    - 17.03 Набор номера на Cisco IP Phone 7960/7940 из скрипта
    RSS | Следующие 15 записей >>


    ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Оформить подписку на год


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList