Skip to main content

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

ufw status numbered
ufw delete 13
ufw deny out 25
ufw reset

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

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 reset