С задачей неплохо справляется скриптик pf-badhost
, в блок листе которого, почти 650млн IP буратин, он собирается из Spamhaus
, Firehol
, Emerging Threats
и Binary Defense
, которые достаточно часто обновляются.
Настроить все просто:
Создаем пользователя
useradd -s /sbin/nologin -d /var/empty _pfbadhost
Скачиваем и устанавливаем скриптик и нужные файлы:
ftp https://geoghegan.ca/pub/pf-badhost/0.5/pf-badhost.sh
install -m 755 -o root -g bin pf-badhost.sh /usr/local/bin/pf-badhost
install -m 640 -o _pfbadhost -g wheel /dev/null /etc/pf-badhost.txt
install -d -m 755 -o root -g wheel /var/log/pf-badhost
install -m 640 -o _pfbadhost -g wheel /dev/null /var/log/pf-badhost/pf-badhost.log
install -m 640 -o _pfbadhost -g wheel /dev/null /var/log/pf-badhost/pf-badhost.log.0.gz
Даем права _pfbadhost
права запускать скрипт от superuser(вот тут как-то неприятно)
# cat /etc/doas.conf
permit root
permit nopass _pfbadhost cmd /sbin/pfctl args -nf /etc/pf.conf
permit nopass _pfbadhost cmd /sbin/pfctl args -t pfbadhost -T replace -f /etc/pf-badhost.txt
Optional rule for authlog scanning
permit nopass _pfbadhost cmd /usr/bin/zcat args -f /var/log/authlog /var/log/authlog.0.gz
4. Настраиваем PF(/etc/pg.conf):
table <pfbadhost> persist file “/etc/pf-badhost.txt” block in quick on egress from <pfbadhost> block out quick on egress to <pfbadhost>
5. Запускаем скрипт от имени пользователя `_pfbadhost`:
doas -u _pfbadhost pf-badhost -O openbsd
6. Перезагружаем правила в pf и проверяем, что все работает:
pfctl -f /etc/pf.conf doas -u _pfbadhost pf-badhost -O openbsd
7. Добавляем запуск в crontab:
crontab -u _pfbadhost -e
0 * -s pf-badhost -O openbsd
И наконец полезные командочки как этим управлять вручную:
pfctl -t pfbadhost -T show # тут будет дохренища строк
pfctl -t pfbadhost -T add 192.168.0.1 pfctl -t pfbadhost -T add 192.168.0.0/16
pfctl -t pfbadhost -T delete 192.168.0.0/16
pfctl -t pfbadhost -T test 192.168.0.1
С задачей неплохо справляется скриптик pf-badhost
, в блок листе которого, почти 650млн IP буратин, он собирается из Spamhaus
, Firehol
, Emerging Threats
и Binary Defense
, которые достаточно часто обновляются.
Настроить все просто:
Создаем пользователя
useradd -s /sbin/nologin -d /var/empty _pfbadhost