LinuxForum.Fans
Тема

блокировка ВКонтакте

Автор: dimonshef11 95 сообщений 28387 просмотров
#167551

iptables -F
iptables -X
и заново все правила, можно подумать у тебя правил over 10000...

#167553

Тогда приходиться запускать снова firewall
Проще просто отчистить 1 таблицу. Например поставить скрипт в cron а не весь firewall

#167555
Kettler написал:
Тогда приходиться запускать снова firewall

И в чём проблема-то ещё раз говорю правил то не 10000. и IP адреса которые блокировать надо не ежеминутно изменяются.

#167556
newzenon написал:
[quote=Kettler]Тогда приходиться запускать снова firewall

И в чём проблема-то ещё раз говорю правил то не 10000.[/quote]
Для моих вещей это не подходит.
Да пару строк не особо много зато всё аккуратно. Чем делать это через полный firewall.

#167576

Я не стал заморачиваться и порезал по тупому

Показать
[console][root@ldap ~]# cat /root/script/banned.sh
iptables -F check_ip
iptables -N check_ip

iptables -I FORWARD 10 -s 192.168.3.0/24 -o ppp0 -j check_ip

############## XHAMSTER.COM ################
iptables -A check_ip -d 88.208.24.47 -j DROP
iptables -A check_ip -d 88.208.24.43 -j DROP
iptables -A check_ip -d 88.208.24.44 -j DROP
iptables -A check_ip -d 88.208.24.45 -j DROP
############################################

############### VKONTAKTE.RU #################
iptables -A check_ip -d 87.240.188.253 -j DROP
iptables -A check_ip -d 87.240.188.248 -j DROP
iptables -A check_ip -d 93.186.224.242 -j DROP
iptables -A check_ip -d 93.186.224.243 -j DROP
iptables -A check_ip -d 87.240.188.249 -j DROP
iptables -A check_ip -d 87.240.188.250 -j DROP
iptables -A check_ip -d 87.240.188.252 -j DROP
iptables -A check_ip -d 87.240.188.254 -j DROP
iptables -A check_ip -d 93.186.224.240 -j DROP
iptables -A check_ip -d 93.186.224.241 -j DROP
##############################################

############## ODNOKLASSNIKI.RU ##############
iptables -A check_ip -d 217.20.144.66 -j DROP
iptables -A check_ip -d 217.20.144.146 -j DROP
iptables -A check_ip -d 217.20.144.162 -j DROP
iptables -A check_ip -d 217.20.144.178 -j DROP
iptables -A check_ip -d 217.20.144.194 -j DROP
iptables -A check_ip -d 217.20.144.210 -j DROP
iptables -A check_ip -d 217.20.144.226 -j DROP
iptables -A check_ip -d 217.20.144.242 -j DROP
iptables -A check_ip -d 217.20.145.36 -j DROP
iptables -A check_ip -d 217.20.145.50 -j DROP
iptables -A check_ip -d 217.20.145.66 -j DROP
iptables -A check_ip -d 217.20.145.98 -j DROP
iptables -A check_ip -d 217.20.145.158 -j DROP
iptables -A check_ip -d 217.20.145.206 -j DROP
iptables -A check_ip -d 217.20.149.164 -j DROP
iptables -A check_ip -d 217.20.149.179 -j DROP
iptables -A check_ip -d 217.20.144.2 -j DROP
iptables -A check_ip -d 217.20.144.19 -j DROP
iptables -A check_ip -d 217.20.144.34 -j DROP
iptables -A check_ip -d 217.20.144.50 -j DROP
##############################################
iptables -A check_ip -j RETURN[/console]

Режутся vkontakte.ru, vk.com, odnoklassniki.ru xhamster.com

#167580

--=XliN=--, ну минимально в цикле из файло сделай ...
во:

text
export BLACKLISTIP="/var/firewall/blacklist.ip"
iptables -F check_ip
iptables -N check_ip
if [ -f $BLACKLISTIP ] ;then cat $BLACKLISTIP | while read line; do  echo -e "${line}";
iptables -A check_ip -d  ${line} -j DROP
done; fi
iptables -A check_ip -j RETURN
#167582

зачем это в скрипт ?
iptables -N check_ip

Я выше выкладывал проверенный.

#167583

Блин щас разжую

в firewall добавляем
iptables -N check_ip # Создаем цепь для соц сетей

# Здесь мы указываем что это первое правило в FORWARD если например зделать A то работать вообще не будет ибо обязательно как ниже!!!
#$lan ваша подсеть например 192.168.0.0/24
#$inet интерфейс в интернет
$lan=192.168.0.0/24
$inet=ppp999
iptables -I FORWARD 1 -s $lan -o $inet -j check_ip #отправляем на проверку на наличие запрещённых сетей
#Получаеться пакет попал в FORWARD и сразу на проверку в check_ip

Нижним скриптом берем айпи и загоем в таблицу check_ip


Скрипт будет таким.

#!/bin/bash
BLACKLIST="/var/blacklist.url"
n=1;

# Очищаем все старые на фиг ип
iptables -F check_ip
if [ -f $BLACKLIST ]; then
while read line
do
nslookup ${line} >> /tmp/nslookup.tmp;
done < $BLACKLIST
fi

awk '/Address:/ {if($2=="127.0.0.1#53"){} else{print $2 > "/var/blacklist.ip" }}' /tmp/nslookup.tmp

if [ -f /var/blacklist.ip ] ;
then
cat /var/blacklist.ip | while read line
do
echo "${line}"
iptables -I check_ip $n -d ${line} -j DROP # дропаем
let n=n+1;
echo $n;
done
fi
# Тоже обязательно иначе нормалные пакеты не пойдут дальше
iptables -A check_ip -j RETURN #отправляем дальше на проверку

#167588

О:

text

export BLACKLISTIP="/var/firewall/blacklist.ip"
# Проверка существования цепочки BLACKLIST_IP, если её нет - создаём. 
# для удаления цепочки полностью iptables -X BLACKLIST_IP
if [ -z "`iptables -n -L | grep -i "chain BLACKLIST_IP"`" ]; then iptables -N BLACKLIST_IP; fi

# Сброс блокировок iptables -F BLACKLIST_IP

# Погнали наши городских :) if [ -f $BLACKLISTIP ] ;then cat $BLACKLISTIP | while read line; do echo -e "${line}"; iptables -A BLACKLIST_IP -d ${line} -m recent --set --name FUCKOFF -j DROP iptables -A BLACKLIST_IP -j RETURN

Вот так может?

text
iptables -A BLACKLIST_IP -d  ${line} -m recent --set --name FUCKOFF -j REJECT
#167589
newzenon написал:

Вот так может?
text
iptables -A BLACKLIST_IP -d  ${line} -m recent --set --name FUCKOFF -j REJECT

Как тебе больше нравиться. Основную мыслю понял.

#167590

Тут самое главное
iptables -I FORWARD 1 -s $lan -o $inet -j check_ip

#167591

А можно ещё это особенно Xlin

text
tc class add dev $inet parent 1:1 classid 1:50 htb rate 10Kbit ceil 10Kbit burst 15k
tc qdisc add dev $inet parent 1:50 handle 50: sfq perturb 10
tc filter add dev $inet parent 1:0 protocol ip prio 7 handle 50 fw classid 1:50
iptables -t mangle -I check_ip $n -d ${line} -j -j MARK --set-mark 50
#167592

Kettler, всё же советую преобразование url2ip сделать отдельным скриптом, то что у тебя - не годиться потому- что - выполняться может долго (из-за nslookup) - и в основной скрипт не запихнёшь.

#167594
newzenon написал:
Kettler, всё же советую преобразование url2ip сделать отдельным скриптом, то что у тебя - не годиться потому- что - выполняться может долго - и в основной скрипт не запихнёшь.

? разжуй

Точто моё это 2 скрипта 1 блок в основной firewall. А второй в cron

#167595

nslookup - требует времени, если много урлов.

#167597

Я слушаю дальше я не могу понять ход твоих мыслей.

#167612

Мои мысли... эмм это сложно. smile

Я вот тут чё подумал, в документации сказано:

Источник пакета
Для фильтрации по источнику используется опция -s. Например запретим все входящие пакеты с узла 192.168.133.133:
text
iptables -A INPUT -s 192.168.133.133 -j DROP

Можно использовать доменное имя для указания адреса хоста. То есть:

text
iptables -A INPUT -s test.host.jp -j DROP

Также можно указать целую подсеть:

text
iptables -A INPUT -s 192.168.133.0/24 -j DROP

Также вы можете использовать отрицание (знак !). Например так - все пакеты с хостов отличных от 192.168.133.156 будут уничтожаться:

text
iptables -A INPUT ! -s 192.168.133.156 -j DROP

те. Не зря ли мы тут парсим nslookup? разве iptables по доменным именам сам этого не делает?
надо проверить вывод: iptables -L с доменным именем и с нашими выкрутасами сравнить.

#167616

:D :D :D как проверишь отпиши но я всё таки жду чтоб разжевали где мои ошибки на счёт скриптов.

#167631

Вот как выглядит у меня с нашим парсером через nslookup одного адреса: vkontakte.ru:
[console]-A PREROUTING -d 93.186.224.242/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 93.186.224.243/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 87.240.188.249/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 87.240.188.250/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 87.240.188.252/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 87.240.188.254/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 93.186.224.240/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 93.186.224.241/32 -j DNAT --to-destination 127.0.0.1 [/console]





Вот такие правила создаются с присутствием только одной строчки:

text
iptables -t nat -A PREROUTING -d vkontakte.ru -j DNAT --to-destination 127.0.0.1

[console]-A PREROUTING -d 87.240.188.254/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 93.186.224.240/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 93.186.224.241/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 93.186.224.242/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 93.186.224.243/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 87.240.188.249/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 87.240.188.250/32 -j DNAT --to-destination 127.0.0.1
-A PREROUTING -d 87.240.188.252/32 -j DNAT --to-destination 127.0.0.1 [/console]

Так что пострадали фигней и хватит. :lol: :lol: :lol:

#167887

Подскажите в чем касяк. Скрипт отрабатывает, но IP повторяются (два, а то и три раза)

[console]#!/bin/bash
lan="192.168.3.0/24"
inet="ppp0"
BLACKLIST="/var/blacklist.url"

# Очищаем все старые на фиг ип
if [ -f $BLACKLIST ]; then
while read line
do
nslookup ${line} >> /tmp/nslookup.tmp;
done < $BLACKLIST
fi
awk '/Address:/ {if($2=="192.168.1.77#53"){} else{print $2 > "/var/blacklist.ip" }}' /tmp/nslookup.tmp

if [ -f /var/blacklist.ip ] ; then
if [ ! -z "`iptables -n -L | grep -i "chain check_ip"`" ]; then
iptables -F check_ip;
echo "Цепочка создана"
iptables -I FORWARD 1 -s $lan -o $inet -j check_ip
cat /var/blacklist.ip | while read line
do
echo -e "${line}"
iptables -A check_ip -d "${line}" -j DROP
done
iptables -A check_ip -j RETURN
else
iptables -N check_ip
fi
fi[/console]

Войдите или зарегистрируйтесь, чтобы ответить.