The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Борьба с перебором паролей на FTP сервере при помощи пакетного фильтра PF
Для предотвращения bruteforce-атак по подбору паролей во FreeBSD или OpenBSD можно использовать 
возможность пакетного фильтра PF по лимитированию числа соединений за единицу
времени в сочетании с блокировкой по таблицам.

Добавляем в /etc/pf.conf

   # Подключаем ранее составленный список заблокированных за излишнее число коннектов IP
   table <ftp-attacks> persist file "/etc/pf.ftp.block.list"
 
   # Блокируем все входящие соединения с IP, которые присутствуют в черном списке
   block in quick on $ext_if from <ftp-attacks>
 
   # Выявляем IP с которых было более 5 обращений за 40 секунд 
   # и добавляем этот IP в ранее созданную таблицу блокировки
   pass in quick on $ext_if inet proto tcp from any to ($ext_if) port 21 keep state (max-src-conn-rate 5/40, overload <ftp-attacks> flush global)

Перечитываем конфигурацию PF:
   /etc/rc.d/pf reload
или
   /sbin/pfctl -f /etc/pf.conf 

Далее, чтобы сохранить созданную таблицу блокировки между перезагрузками, необходимо добавить
в /etc/rc.shutdown код для сброса в файл состояния таблицы перед завершением работы:
   /sbin/pfctl -t ftp-attacks -T show > /etc/pf.ftp.block.list

Для удаления определенного IP (например, 192.168.1.1) из таблицы:
   /sbin/pfctl -t ftp-attacks -T delete 192.168.1.1

Для добавления IP или подсети вручную:
   /sbin/pfctl -t ftp-attacks -T add 192.168.1.1
   /sbin/pfctl -t ftp-attacks -T add 192.168.1.0/24

Для полной очистки таблицы
   /sbin/pfctl -t ftp-attacks -T flush 

Для загрузки таблицы из файла:
   /sbin/pfctl -t ftp-attacks -T replace -f /etc/pf.ftp.block.list

Для поиска IP в таблице 
   /sbin/pfctl -t ftp-attacks -T test 192.168.1.1

Для вывода более подробной статистики по каждому из IP в таблице:
   /sbin/pfctl -t ftp-attacks -T show -v

Для очистки счетчиков срабатываний:
   /sbin/pfctl -t ftp-attacks -T zero
 
13.08.2009 , Источник: http://www.cyberciti.biz/faq/freebs...
Ключи: pf, firewall, block, bsd / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетный фильтр в FreeBSD: ipfw, IP-Filter

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, alex_odessa (?), 22:01, 13/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо.
     
  • 1.2, Щекн Итрч (ok), 00:33, 14/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тоже спасибо. А то sshit regexp'ов не имеет для распознавания ftp брутов, а ума и трудолюбия дописать у меня не хватает. Хорошо было бы ftp-серверы наделить опцией: "писать в auth.log сообщения об отказе в аутентификации формате sshd". Было бы сверхудобно.
     
     
  • 2.8, Andrey Mitrofanov (?), 13:54, 14/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Хорошо было
    >бы ftp-серверы наделить опцией: "писать в auth.log сообщения об отказе в
    >аутентификации формате sshd".

    А давайте этому научим(*) соотв.модули PAM, и _волшебным_ образом fail2ban-у и аналогам "научатся" login, telnet, всякие pop3d и прочие.

    Ой, а в опенбсд пам-то есть? $)

    (*)И да -- пусть кто-нибудь другой.

     
     
  • 3.13, Щекн Итрч (ok), 04:06, 15/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    этому научим(*) - мысль есть, денег нет. Но, вообще, созреваю. fail2ban - целует морковь взасос или, по простому, сосёт. Нужно переписывать sshit. Только тупой | в сканер логов дает эффект. РАМ, волшебным образом, бесполезен для диагностирования брутов.
     

  • 1.3, Ma_X_X (?), 09:39, 14/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А разве "во FreeBSD или OpenBSD" нет простого fail2ban?
     
     
  • 2.4, charon (ok), 12:13, 14/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    есть. Тесты на ВПС показывают, что fail2ban потребляет заметное количество ресурсов, поэтому лучше не плодить сущности.
     
  • 2.5, Анонимус. (?), 12:14, 14/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Тебе альтернативный вариант описали, это не значит что все забыли что такое  fail2ban .

    И не все должны им пользоваться.

     
  • 2.15, Щекн Итрч (ok), 04:09, 15/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >А разве "во FreeBSD или OpenBSD" нет простого fail2ban?

    А нарисуйте-ка мне how-to для брута против ftp?
    Буду искренне признателен.

     
     
  • 3.19, Щекн Итрч (ok), 06:12, 22/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Сам нарисовал. fail2ban рулит.
     

  • 1.6, artemrts (ok), 12:22, 14/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/

    Еще можно добавить max-src-nodes и max-src-conn
     
  • 1.7, 0lpa (?), 12:27, 14/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А смысл держать таблицу в файле, да еще сохранять ее при перезагрузке?
    Можно просто каждый час по cron-у ее чистить, так по-моему проще, да и для честных юзеров какого-нибудь прокси может случиться вечный бан.
     
  • 1.9, Touch (??), 14:14, 14/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    bruteblockd
     
     
  • 2.10, grayich (ok), 15:53, 14/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    +1
    хорошая штука http://samm.kiev.ua/bruteblock/
     
     
  • 3.12, BonDit (??), 22:12, 14/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    pf не умеет(
     
     
  • 4.14, Щекн Итрч (ok), 04:07, 15/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >pf не умеет(

    Оть иманна. Нет PF - гулять лесом.

     
     
  • 5.17, Touch (??), 15:24, 17/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    угум .. нет PF'а - нет пролем с натом GRE и перебором паролей ..
     
     
  • 6.18, Touch (??), 15:24, 17/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >угум .. нет PF'а - нет пролем с натом GRE и перебором
    >паролей ..

    нет проблем

     

  • 1.11, Аноним (-), 20:12, 14/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ЖЖоте, а еще десяток альтернативных вариантов слабо написать? Или теперь каждый кто пишет заметки , должен расписывать все варианты что бы его не обливали грязью и было советами.
     
  • 1.16, Аноним (-), 13:02, 15/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Манов ещё так много, а все нужно обязательно поместить на опеннет в виде заметок...
     
  • 1.20, daemon17 (??), 14:11, 09/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня работает скрипт по крону анализируя лог ftp
    и никаких списков не надо держать.
    Больше 3-х неправильных заходов и пошел в bruteforce.
    =================================
    #!/bin/sh

    # add IP to PF table bruteforce
    #
    logfile="/var/log/xferlog"
    grep "Authentication failed" ${logfile} >/dev/null 2>&1
    if [ $? -eq 0 ]; then
        set 'grep "Authentication failed" ${logfile}|sed 's/.*\@//; s/).*//'|uniq -c'
        while [ $# -ge 2 ]; do
            ip=$2
            count=$1
            if [ $count -ge 3 ]; then
                /sbin/pfctl -t bruteforce -T show | grep $ip
                if [ $? -ne 0 ]; then
                    /sbin/pfctl -t bruteforce -T add $ip
                    echo "Address $ip add to table PF \"bruteforce\"" >> /tmp/bruteforce
                fi
            fi
            shift 2
        done

    fi
    if [ -f /tmp/bruteforce ]; then
        cat /tmp/bruteforce | mail -s "Bruteforce" root; rm -rf /tmp/bruteforce
    fi
    /sbin/pfctl -t bruteforce -T expire 86400

    exit

     

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




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру