Firehol
Firehol blocklists — это набор автоматически обновляемых ipset-списков из множества security feed-источников: онлайн-атаки, злоупотребления сервисами, malware, botnet, C2-серверы и другая киберкриминальная активность.
VPS
Раздел «VPS»Установка
Раздел «Установка»Установите пакеты:
sudo apt install ipset iprangeFirehol blocklists
Раздел «Firehol blocklists»Перейдите на сайт Firehol или в GitHub-репозиторий Firehol и выберите blocklists, которые хотите включить.
Скопируйте raw-ссылки в /home/user/firehol/firehol.conf.
Пример:
https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/firehol_level1.netsethttps://raw.githubusercontent.com/firehol/blocklist-ipsets/master/firehol_level2.netsethttps://raw.githubusercontent.com/firehol/blocklist-ipsets/master/firehol_level3.netsethttps://raw.githubusercontent.com/firehol/blocklist-ipsets/master/firehol_abusers_1d.netsetСкрипт Firehol
Раздел «Скрипт Firehol»Создайте скрипт, который обновляет firehol ipsets и заново создает iptables-правила.
Например, /home/user/firehol/firehol.sh:
#!/bin/bash
LOG="/home/user/firehol/firehol.log"URLS=$(cat "/home/user/firehol/firehol.conf")echo "Updating Firehol $(date)" >> $LOG
iptables -D INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT > /dev/null 2>&1iptables -D DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT > /dev/null 2>&1iptables -D FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT > /dev/null 2>&1iptables -I FORWARD 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT >> $LOGiptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT >> $LOGiptables -I DOCKER-USER 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT >> $LOG
for URL in $URLSdo echo $URL >> $LOG NAME=$(basename $URL) echo $NAME >> $LOG FILE="/home/user/firehol/$NAME" curl -s -k $URL > $FILE # The following sed removes LAN ranges from the lists otherwise you might block yourself sed -i -e 's#10.0.0.0/8##' -e 's#172.16.0.0/12##' -e 's#192.168.0.0/16##' -e 's#127.0.0.0/8##' $FILE COUNT=$(/usr/bin/iprange -C $FILE) COUNT=${COUNT/*,/} echo $COUNT >> $LOG /usr/sbin/ipset create --exist $NAME hash:net family inet maxelem 131072 >> $LOG /usr/sbin/ipset flush $NAME > /dev/null 2>&1 /usr/bin/iprange $FILE --ipset-reduce 20 --ipset-reduce-entries 65535 --print-prefix "-A $NAME " > $FILE.ipset /usr/sbin/ipset restore --exist --file $FILE.ipset >> $LOG /usr/sbin/iptables -D FORWARD -m set --match-set $NAME src -j DROP &>/dev/null /usr/sbin/iptables -D INPUT -m set --match-set $NAME src -j DROP &>/dev/null /usr/sbin/iptables -D DOCKER-USER -m set --match-set $NAME src -j DROP &>/dev/null /usr/sbin/iptables -I DOCKER-USER 2 -m set --match-set $NAME src -j DROP >> $LOG /usr/sbin/iptables -I INPUT 2 -m set --match-set $NAME src -j DROP >> $LOG /usr/sbin/iptables -I FORWARD 2 -m set --match-set $NAME src -j DROP >> $LOGdoneПроверьте, что все работает и ipsets заполнены:
chmod +x /home/user/firehol/firehol.shsudo /home/user/firehol/firehol.shsudo ipset list firehol_level1.netsetРасписание Cron
Раздел «Расписание Cron»Запускайте скрипт firehol при загрузке и ежедневно.
Например, добавьте в sudo crontab -e:
0 1 * * * /home/user/firehol/firehol.sh@reboot sleep 120 && /home/user/firehol/firehol.shПроверьте запуск при ребуте и ежедневно. После перезагрузки есть задержка 2 минуты, чтобы успеть исправить возможную блокировку.
OPNSense
Раздел «OPNSense»Alias
Раздел «Alias»Перейдите в Firewall > Aliases и создайте:
Name: FireholType: URL IPsContent:https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/firehol_level1.netsethttps://raw.githubusercontent.com/firehol/blocklist-ipsets/master/firehol_level2.netsethttps://raw.githubusercontent.com/firehol/blocklist-ipsets/master/firehol_level3.netsethttps://raw.githubusercontent.com/firehol/blocklist-ipsets/master/firehol_abusers_1d.netsetName: ExternalType: NetworksContent: !10.0.0.0/8, !172.16.0.0/12, !192.168.0.0/16, !127.0.0.1Name: Firehol_without_internalType: Network groupContent: External, FireholFirewall
Раздел «Firewall»Перейдите в Firewall > Rules > WAN и создайте правило:
Action: BlockInterface: WANDirection: inTCP/IP Version: IPv4Protocol: anySource: Firehol_without_internalDestination: anyCron
Раздел «Cron»Создайте cron-задачу для ежедневного обновления списков.
Перейдите в System > Settings > Cron и добавьте:
Enabled: checkedMinutes: 0Hours: 0Day of the month: *Months: *Days of the week: *Command: Update and reload firewall aliases