billing:howto:ipset_blacklist

Блокировка списка доменов+ip

Вернуться на уровень выше

Как работает: создаем список domains.list, куда вносим все домены, которые нужно заблокировать. Также есть файл ip.list, в который можно добавить уже известные IP. Скрипт по указанным днс находит все ip и добавляет в ipset. Правилом в iptables список блокируется.

Установка

Поставить dig

Для Centos:

yum install -y bind-utils
#!/bin/bash
#͑Client DNS
DNS1=8.8.8.8
DNS2=8.8.4.4

DIG=`which dig`
IPSET=`which ipset`
IPSETNAME="paysystems"

HOME_DIR=$(cd $(dirname $0)&& pwd)
SRCDATA=`cat $HOME_DIR/domains.list`
IPLIST="$HOME_DIR/ip.list"
RESULT="$HOME_DIR/paysys.txt"

$DIG +short $SRCDATA @$DNS1 |grep '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' > $RESULT
$DIG +short $SRCDATA @$DNS2 |grep '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' >> $RESULT
cat $IPLIST >> $RESULT

$IPSET -N $IPSETNAME iphash -exist
for i in `cat $RESULT`;
do
$IPSET add $IPSETNAME $i -exist 2>/dev/null;
done

DNS1 и DNS2 - указываем клиентские DNS-сервера (это важно!)

domains.list - файл с доменами

ip.list - файл с IP (тут можно добавлять IP к общему списку)

Пример правила для iptables:

ipset -N blacklist iphash -exist
iptables -A FORWARD -m set --match-set blacklist src -j REJECT --reject-with icmp-proto-unreach

Добавить в крон:

00 6 * * * root /var/mikbill/scripts/blacklist/blacklist.sh > /dev/null
  • billing/howto/ipset_blacklist.txt
  • Последнее изменение: 6 лет назад
  • vilko