Skip to main content

Блокировка источников динамическим листом IP с UFW

Устанавливаем необходимые пакеты:

apt-get -y install ipset

Создаем блок лист:

ipset create "IP_ipsum4_block" hash:ip

Добавляем туда значения от общедоступных фидов IPsum (агрегационный фид level 4 - very low false positives) и сохраняем в файл /etc/ipset.rules:

ipset flush "IP_ipsum4_block"; for IP in $(wget -O - https://raw.githubusercontent.com/stamparm/ipsum/master/levels/4.txt); do ipset add "IP_ipsum4_block" $IP; done; ipset save > /etc/ipset.rules

Добавляем ежедневное обновление фидов с crontab (для редактирования планировщика: crontab -e):

0 0 * * * ipset flush "IP_ipsum4_block"; for IP in $(wget -O - https://raw.githubusercontent.com/stamparm/ipsum/master/levels/4.txt); do ipset add "IP_ipsum4_block" $IP; done; ipset save > /etc/ipset.rules

Для восстановления ipset при перезагрузке зайдите в CRON:

crontab -e

Добавьте запись и выйдите с сохранением:

@reboot ipset restore < /etc/ipset.rules; ufw reload
Переустановка UFW
sudo apt-get purge --auto-remove ufw
sudo apt-get install ufw
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw reload

Далее добавим правило в UFW:

sudo nano /etc/ufw/before.rules

Добавьте следующее значение до COMMIT:

# block by ipsum4 src IPs
-A ufw-before-input -m set --match-set IP_ipsum4_block src -j DROP

image.png

Перезапустите UFW:

sudo ufw reload

Убедитесь, что правило применяется (добавленная запись должна появиться в списке вывода):

sudo iptables -S ufw-before-input
Полезные команды UFW
ufw status verbose
ufw allow in on eth0 from 203.0.113.102
ufw allow from 203.0.113.103 proto tcp to any port 22
ufw allow proto tcp from any to any port 80,443
ufw allow from 203.0.113.0/24 to any port 3306
ufw deny out 25
ufw status numbered
ufw delete 13
ufw --force delete 13
ufw reset