Я пытаюсь создать несколько правил iptables, которые сделают это:

Если исходный ip пытается выполнить 3 или более подключений менее чем за минуту, запретите этот ip до дальнейшего уведомления.

Я не очень знаком с iptables, и это сложнее реализовать, чем я думал. Большинство примеров я нашел только блок за 60 секунд. Если бы кто-нибудь мог показать мне, как это сделать, я был бы очень благодарен.

3 ответа3

3

Вы можете использовать fail2ban для автоматического управления вашими iptables. Он отслеживает файлы журналов и выполняет действия на основе критериев, которые вы можете настроить. Он может обрабатывать несколько различных типов соединений по умолчанию. Используя этот фреймворк, я уверен, что вы можете заблокировать любое поведение, которое захотите.

https://www.fail2ban.org/wiki/index.php/Main_Page

ОТ README:

Fail2Ban сканирует файлы журналов, например [file:///var/log/pwdfail pwdfail], и блокирует IP-адреса, которые вызывают слишком много сбоев пароля.  Он обновляет правила брандмауэра, чтобы отклонить IP-адрес.  Эти правила могут быть определены пользователем.  Fail2Ban может читать несколько файлов журнала, таких как sshd или файлы веб-сервера Apache. Это README - краткое введение в Fail2Ban.  Дополнительная документация, FAQ, HOWTO доступны на веб-сайте проекта.

2

Похоже, что модуль ipset может быть самым прямым способом выполнить то, что я пытаюсь сделать. Однако сначала требуется создать ipset.

Это то, что я придумал, и это, кажется, работает:

iptables -A INPUT -p tcp --dport 80 -m состояние --state NEW -m последние --set

iptables -A INPUT -p tcp --dport 80 -m состояние --state NEW -m недавно --update --seconds 60 --hitcount 3 -j SET --add-установить заблокированный src

iptables -A INPUT -p tcp --dport 80 -m set --match-установить заблокированный src -j DROP

1

Есть опция --hitcount, которая указывает количество неудачных попыток. Я предлагаю вам проверить это на тестовом компьютере или на чем-то другом, а не на SSH-подключении к удаленному серверу, так как вы можете быть заблокированы. Если у вас нет доступа к консоли KVM.

Аналогичный ответ дается здесь:автоматически отрицать попытки взлома в CentOS?

В течение нескольких секунд просто укажите свое значение, и оно должно работать.

Нужно всегда помнить, что правила DROP должны быть в конце правил. Обычно файл правил iptables находится в /etc /sysconfig /iptables

Для других вариантов, вы можете проверить https://linux.die.net/man/8/iptables. Вы можете найти почти все на странице linux.die.net. Он включает в себя страницы руководства Linux и многое другое.

Чтобы проверить список заблокированных IP-адресов, вы можете запустить: iptables -L INPUT -v -n Проверить это подробнее: https://www.cyberciti.biz/faq/linux-howto-check-ip-blocked-against-iptables/

И то, что я лично нашел полезным это руководство: https://linuxacademy.com/howtoguides/posts/show/topic/15473-introduction-to-iptables

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .