5

Есть ли в Debian программа для временного блокирования IP-адреса, просто запустив команду (указав IP-адрес и продолжительность)?

Только с помощью iptables/ip6tables я могу создать правило, но тогда мне придется удалить его вручную. Я также использую fail2ban, но не думаю, что смогу заблокировать произвольный IP-адрес, который не удовлетворял ни одному из правил fail2ban.

2 ответа2

5

Вам нужно создать ipset, чтобы iptables мог сопоставляться с ним. Примечание Тайм-аут 0 означает, что по умолчанию никогда не истекает.

ipset create temp_hosts hash:ip timeout 0
iptables -I INPUT 1 -m set -j DROP  --match-set temp_hosts src
iptables -I FORWARD 1 -m set -j DROP  --match-set temp_hosts src

Теперь, когда наш набор создан, мы можем начать добавлять IP-адреса (единица времени ожидания: секунды).

ipset add temp_hosts 1.1.1.2 timeout 400

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

ipset save -f /path/ipset.save
ipset restore -f /path/ipset.save

Они могут быть автоматизированы с помощью cron или systemd.

2

Попробуйте этот сценарий, вдохновленный комментарием Дэна:

#!/bin/bash
iptables -I INPUT -s $1 -j DROP
at ${2:-now+1hour} <<<"iptables -D INPUT -s $1 -j DROP"

Сохраните его как /usr/local/sbin/blockip и запустите blockip 1.2.3.4 или blockip 1.2.3.4 now+2hours . По умолчанию IP заблокирован на 1 час.

Вы можете заменить DROP на REJECT, если вы предпочитаете семантику REJECT.

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