Friday, August 14, 2009

Борьба с перебором паролей на FTP сервере при помощи пакетного фильтра PF

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

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

  # Подключаем ранее составленный список заблокированных за излишнее число коннектов IP
  table persist file "/etc/pf.ftp.block.list"
 
  # Блокируем все входящие соединения с IP, которые присутствуют в черном списке
  block in quick on $ext_if from
 
  # Выявляем 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 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


--------------------------

fail2ban?

No comments: