Jump to content
Калькуляторы

Технические средства контроля за оператором

У нас вроде получилось справится с этим TP-Link'ом по следующей схеме

revizorro.jpg

в такой конфигурации получается 0-1 пропусков в сутки, против 50-100 без нее.

Реализация элементарная, если интересно - поделюсь

Поделитесь!

Share this post


Link to post
Share on other sites

Делюсь:

RKNbox - это простой виртуальный роутер с IP-фильтром, предназначенный для

улучшения качества блокировок запрещенных ресурсов согласно 149-ФЗ.

Запускается на компьютере под Linux kernel >=3.x в изолированном сетевом стеке .

Сам скрипт:

 

 

#!/bin/bash -i
# Written by Alexey Sberegaev <mrlexy@gmail.com>, 2017

# Load config
# Каталог размещения коробки РКН
DIR="/opt/rkn"

# Не забудте заглянуть в конфиг. Он тоже откомментирован
. /$DIR/etc/rkn.conf

#######################################
#                                        	COMMANDS                   			#
#######################################
IP="/sbin/ip"
TC="/sbin/tc"
LINK="$IP link"

# Софт-роутер будет крутится в изолированном сетевом стеке, поэтому можно не заботится о 
# пересечении адресации
# man ip-netns
NETNS_EXEC="$IP netns ex $NSNAME"

SYSCTL="/sbin/sysctl"
IPTABLES="/sbin/iptables"

# Ipset по умолчанию не ставится, не забудтье установить, для Ubuntu: apt-get install ipset
IPSET="/sbin/ipset -!"

# Путь к кэшу списка IP
BLACKLIST_CACHE="$DIR/var/db/blacklist.cache"

# Путь к PID-файлу сервера DHCP
DHCPID="$DIR/var/run/dhcpd.run"

# Команда для запуска сервера DHCP (должен же ревизорро получить адрес).
# Не беспокойтесь, если у вас уже работает другой сервер DHCP
# Этот сервер будет работать в другом сетевом namespace
# dnsmasq у меня отчего-то не взлетел, поэтому здесь isc-dhcpd
DHCP_SERV=$(cat <<DHCPCMD
/usr/sbin/dhcpd \
-cf $DIR/etc/dhcpd.conf \
-lf $DIR/var/db/dhcp.lease \
-pf $DHCPID \
-user dhcpd -group dhcpd \
-4 1n
DHCPCMD
)

PHP="/usr/bin/php -r"
PHPCODE=$(cat <<PHPDOC
error_reporting(E_ERROR);
\$src=file_get_contents("$BLACKLIST");
if(\$src === FALSE) exit(1);
\$src = explode(';',trim(\$src, " \";\t\n\r\0\x0B"));
\$src = array_slice(array_chunk(array_unique(\$src),65535),0,4);
if(count(\$src[0])>0) print "flush FZ149_chunk0\nflush FZ149_chunk1\nflush FZ149_chunk2\nflush FZ149_chunk3\n";
for(\$i=0; \$i<count(\$src);\$i++){
foreach(\$src[\$i] as \$value) {
print "add FZ149_chunk\$i \$value\n";
}
}
PHPDOC
)

# Команда, которая генерирует черный список в формате ipset save
# У меня это скрипт на PHP (выше)
BLACKLIST_CMD="do_blacklist"

do_blacklist()
{
$NETNS_EXEC $PHP "$PHPCODE"
}

do_start() 
{
# поднимаем хост-интерфейс
$LINK set up dev $HOST_IF
# создаем независимый сетевой стек (net namespace)
$IP netns add $NSNAME
# поднимаем лупбэк
$NETNS_EXEC $LINK set up dev lo
# создаем vlan-интерфейсы и добавляем их в netns
$LINK add link $HOST_IF dev 0ut type vlan id $VLAN_OUT
$LINK set 0ut netns $NSNAME
$NETNS_EXEC $LINK set up dev 0ut
$NETNS_EXEC $IP addr add $IP_OUT dev 0ut
$NETNS_EXEC $IP route add default via $IP_OUT_ROUTE

$LINK add link $HOST_IF dev 1n type vlan id $VLAN_IN
$LINK set 1n netns $NSNAME
$NETNS_EXEC $LINK set up dev 1n
$NETNS_EXEC $IP addr add $IP_IN dev 1n
# включаем форвардинг пакетов
$NETNS_EXEC $SYSCTL -w net.ipv4.ip_forward=1  > /dev/null 2>&1
# слегка душим по скорости, нечего баловать и на премиум-тарифе еще и штрафы выписывать
$NETNS_EXEC $TC qdisc add dev 1n root tbf latency 100ms burst 4K rate 1mbit
$NETNS_EXEC $TC qdisc add dev 0ut root tbf latency 100ms burst 4K rate 1mbit
# создаем 4 фильтра, каждый может содержать 64К адресов, всего, значит, 256К	
$NETNS_EXEC $IPSET create FZ149_chunk0 iphash
$NETNS_EXEC $IPSET create FZ149_chunk1 iphash
$NETNS_EXEC $IPSET create FZ149_chunk2 iphash
$NETNS_EXEC $IPSET create FZ149_chunk3 iphash
# восстанавливаем правила из кэша
$NETNS_EXEC $IPSET restore -f "$BLACKLIST_CACHE"
# добавляем фильтры в файрвол		
$NETNS_EXEC $IPTABLES -F
$NETNS_EXEC $IPTABLES -A FORWARD -o 0ut -m set --match-set FZ149_chunk0 dst -j DROP
$NETNS_EXEC $IPTABLES -A FORWARD -o 0ut -m set --match-set FZ149_chunk1 dst -j DROP
$NETNS_EXEC $IPTABLES -A FORWARD -o 0ut -m set --match-set FZ149_chunk2 dst -j DROP
$NETNS_EXEC $IPTABLES -A FORWARD -o 0ut -m set --match-set FZ149_chunk3 dst -j DROP

$NETNS_EXEC $IPTABLES -A OUTPUT -o 0ut -m set --match-set FZ149_chunk0 dst -j DROP
$NETNS_EXEC $IPTABLES -A OUTPUT -o 0ut -m set --match-set FZ149_chunk1 dst -j DROP
$NETNS_EXEC $IPTABLES -A OUTPUT -o 0ut -m set --match-set FZ149_chunk2 dst -j DROP
$NETNS_EXEC $IPTABLES -A OUTPUT -o 0ut -m set --match-set FZ149_chunk3 dst -j DROP
# делаем перехват и редирект всех запросов DNS	
$NETNS_EXEC $IPTABLES -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination $NAMESERVER:53
$NETNS_EXEC $IPTABLES -t nat -A PREROUTING -p tcp --dport 53 -j DNAT --to-destination $NAMESERVER:53
$NETNS_EXEC $IPTABLES -t nat -A POSTROUTING -o 0ut -j MASQUERADE
# обнавляем черный список
do_reload
# запускаем сервер DHCP	
do_dhcp "start"
}

do_stop()
{
do_dhcp "stop"
$IP netns delete $NSNAME
}

do_status()
{
echo  
echo
echo "RKNbox status:"
echo
echo "Blacklisted IPs count: $($NETNS_EXEC $IPSET save | grep -c 'add FZ')"
echo
echo "Firewall:"
$NETNS_EXEC $IPTABLES -t nat -nvL PREROUTING
$NETNS_EXEC $IPTABLES -t nat -nvL POSTROUTING
echo
$NETNS_EXEC $IPTABLES -nvL FORWARD
echo
echo "DHCP status:"
do_dhcp "status"
}

do_reload()
{
$BLACKLIST_CMD |  $NETNS_EXEC $IPSET restore 
$NETNS_EXEC $IPSET save -f "$BLACKLIST_CACHE"
}

do_restart()
{
do_stop
do_start
}

do_dhcp()
{
local ACTION="$1"
case "$ACTION" in
 	start)
	$NETNS_EXEC $DHCP_SERV 
	;;
 	stop)
	kill -15 $(cat $DHCPID)
#		rm $DHCPID
	;;
 	status)
 		if [ ! -f "$DHCPID" ]; then
  		echo "Can not find PID-file"
  		return 2
 		fi
	ps -p "$(cat $DHCPID)"
		if [ $? -ne 0 ]; then
        			echo "RKNbox dhcp daemon is not running"
        			return 2
			fi
   		echo "RKNbox dhcp daemon is running"
	echo
	return 0
	;;
 	restart)
	do_dhcp "stop"
	do_dhcp "start"
	;;

 	*)
	echo "Usage: RKNbox dhcp {start|stop|restart|status}" >&2
	;;
esac
}

do_shell() {
NEWPS=${PS1%\\\$*}
$NETNS_EXEC bash --init-file <(echo ". \"$HOME/.profile\"; echo; echo \"Set NS to $NSNAME\"; echo; export PS1=\"\[\e[0;32m\][netns:\[\e[1;92m\]$NSNAME\[\e[0;32m\]]\[\e[0m\]$NEWPS\\\\\$ \";  ")

return "$?"
}

case "$1" in
 start)
do_start
 	;;

 stop)
do_stop
;;

 status)
do_status
exit "$?"
 	;;
 reload)
do_reload
 	;;
 restart)
do_stop
do_start
 	;;

 dhcp)
do_dhcp "$2"
exit "$?"
 	;;

 shell)
do_shell
exit "$?"
 	;;

 test)
do_test
exit "$?"
 	;;

 *)
echo "Usage: RKNbox {start|stop|restart|reload|status|dhcp|shell}" >&2
exit 3
;;
esac

exit 0

 

 

 

Сам скрипт с небольшой справкой и схемой подключения приложен.

Вот вывод rknbox status, обратите внимание на счетчики. Это примерно за сутки.

/opt/rkn# ./rknbox status


RKNbox status:

Blacklisted IPs count: 42565

Firewall:
Chain PREROUTING (policy ACCEPT 1377K packets, 83M bytes)
pkts bytes target 	prot opt in 	out 	source       		destination 		
4707  301K DNAT   	udp  --  *  	*   	0.0.0.0/0        	0.0.0.0/0        	udp dpt:53 to:10.168.1.250:53
0 	0 DNAT   	tcp  --  *  	*   	0.0.0.0/0        	0.0.0.0/0        	tcp dpt:53 to:10.168.1.250:53
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target 	prot opt in 	out 	source       		destination 		
172K   10M MASQUERADE  all  --  *  	0ut 	0.0.0.0/0        	0.0.0.0/0   		

Chain FORWARD (policy ACCEPT 2798K packets, 639M bytes)
pkts bytes target 	prot opt in 	out 	source       		destination 		
1210K   73M DROP   	all  --  *  	0ut 	0.0.0.0/0        	0.0.0.0/0        	match-set FZ149_chunk0 dst
0 	0 DROP   	all  --  *  	0ut 	0.0.0.0/0        	0.0.0.0/0        	match-set FZ149_chunk1 dst
0 	0 DROP   	all  --  *  	0ut 	0.0.0.0/0        	0.0.0.0/0        	match-set FZ149_chunk2 dst
0 	0 DROP   	all  --  *  	0ut 	0.0.0.0/0        	0.0.0.0/0        	match-set FZ149_chunk3 dst

DHCP status:
 PID TTY      	TIME CMD
5413 ?    	00:00:00 dhcpd
RKNbox dhcp daemon is running

 

А так выглядит работа штатного блокировщика ресурсов в абонентской сети:

без ревизора:

without_rev.png

с ревизором:

with_rev.png

со включенным rknbox'ом:

with_rknbox.png

У нас вроде получилось справится с этим TP-Link'ом по следующей схеме

revizorro.jpg

в такой конфигурации получается 0-1 пропусков в сутки, против 50-100 без нее.

Реализация элементарная, если интересно - поделюсь

Поделитесь!

rknbox.tar.gz

Share this post


Link to post
Share on other sites

спасиБО lexy

Кстати, в разделе на сайте http://www.ordercom.ru/reg.htm

письмо Надзора в ТУ о не использовании прогр. агента для протоколов по Административке.

Share this post


Link to post
Share on other sites

Кстати, в разделе на сайте http://www.ordercom.ru/reg.htm письмо Надзора в ТУ о не использовании прогр. агента для протоколов по Административке.

Извините, но суду чихать на это письмо. Тем более на такую копию...

Программный агент, суточный мониторинг, один пропуск к запрещенному ресурсу, отзыв, в том числе ссылка на аналогичное письмо в предыдущей версии - итог: наложить административное взыскание в виде предупреждения.

Судебной практики, где эта ссылка сработала, найти не удалось.

А за период с начала марта по 21 марта 2017 года в картотеке арбитражных судов по стране было зарегистрировано более тысячи заявлений на привлечение операторов к административной ответственности.

Вывод простой - занимайтесь собственной системой блокировки - что бы они ничего не пропускала.

 

И не забывайте, что на нее тоже могут попросить сертификат или декларацию и вдуть за отсутствие таковых.

Share this post


Link to post
Share on other sites

Кстати, в разделе на сайте http://www.ordercom.ru/reg.htm письмо Надзора в ТУ о не использовании прогр. агента для протоколов по Административке.

Извините, но суду чихать на это письмо. Тем более на такую копию...

Программный агент, суточный мониторинг, один пропуск к запрещенному ресурсу, отзыв, в том числе ссылка на аналогичное письмо в предыдущей версии - итог: наложить административное взыскание в виде предупреждения.

Судебной практики, где эта ссылка сработала, найти не удалось.

А за период с начала марта по 21 марта 2017 года в картотеке арбитражных судов по стране было зарегистрировано более тысячи заявлений на привлечение операторов к административной ответственности.

Вывод простой - занимайтесь собственной системой блокировки - что бы они ничего не пропускала.

 

И не забывайте, что на нее тоже могут попросить сертификат или декларацию и вдуть за отсутствие таковых.

Не извиню!

Пс и выигрываю суд не на основании письма, а по правовой позиции.

Есть вопросы - обращайтесь в личку...

Share this post


Link to post
Share on other sites

Делюсь:

RKNbox - это простой виртуальный роутер с IP-фильтром, предназначенный для

...

А откуда и чем конкретно заполняется blacklist.cache?

IP адресами из списка РКН, которые имеют тип "блокировка по ip"?

Решает ли "система" проблему с блокировкой https?

Где "живёт" редирект на "заглушку"? Или всё это решает только проблему блокировки по IP?

Share this post


Link to post
Share on other sites

В кэш сливается последняя успешная загрузка списка после того, как список обновился. Конкретно у меня список берется отсюда: https://reestr.rublacklist.net/api/ips он больше того, что можно вытащить из выгрузки РКН. На рублэклист на сегодня 43538, в РКН - 26792.

IP-фильтру без разницы на протокол. Редирект на заглушку "живет" в основной системе фильтрации. Чтобы стало яснее - внимательно посмотрите схему включения

Делюсь:

RKNbox - это простой виртуальный роутер с IP-фильтром, предназначенный для

...

А откуда и чем конкретно заполняется blacklist.cache?

IP адресами из списка РКН, которые имеют тип "блокировка по ip"?

Решает ли "система" проблему с блокировкой https?

Где "живёт" редирект на "заглушку"? Или всё это решает только проблему блокировки по IP?

Share this post


Link to post
Share on other sites

В кэш сливается последняя успешная загрузка списка после того, как список обновился. Конкретно у меня список берется отсюда: https://reestr.rublacklist.net/api/ips он больше того, что можно вытащить из выгрузки РКН. На рублэклист на сегодня 43538, в РКН - 26792.

IP-фильтру без разницы на протокол. Редирект на заглушку "живет" в основной системе фильтрации. Чтобы стало яснее - внимательно посмотрите схему включения

Т.е. шпиону "ревизору" в любом случае для всех заблокированных выдаётся DROP и "заглушку" он не увидит никогда.

Так?

Share this post


Link to post
Share on other sites

Ага.

В кэш сливается последняя успешная загрузка списка после того, как список обновился. Конкретно у меня список берется отсюда: https://reestr.rublacklist.net/api/ips он больше того, что можно вытащить из выгрузки РКН. На рублэклист на сегодня 43538, в РКН - 26792.

IP-фильтру без разницы на протокол. Редирект на заглушку "живет" в основной системе фильтрации. Чтобы стало яснее - внимательно посмотрите схему включения

Т.е. шпиону "ревизору" в любом случае для всех заблокированных выдаётся DROP и "заглушку" он не увидит никогда.

Так?

Share this post


Link to post
Share on other sites

В кэш сливается последняя успешная загрузка списка после того, как список обновился. Конкретно у меня список берется отсюда: https://reestr.rublacklist.net/api/ips он больше того, что можно вытащить из выгрузки РКН. На рублэклист на сегодня 43538, в РКН - 26792.

А обычный линуховый роутер (HP G5, 4 ядра, 10 гиг памяти) не помрет, если ему влить такой список ip-адресов для заворачивания в /dev/nul ? Трафика - до 300 мегабит в пиках

Share this post


Link to post
Share on other sites

А обычный линуховый роутер (HP G5, 4 ядра, 10 гиг памяти) не помрет, если ему влить такой список ip-адресов для заворачивания в /dev/nul ? Трафика - до 300 мегабит в пиках

 

Ну обычный фуджицу от нага со скат6 энтри - горазд слабее, просто сетевки получше, и центос. Ничего, просто дропает коннекты налету, не особо напрягаясь, в режиме в разрыв. При большем трафике... Просто он не заворачивает в /dev/null, а шлёт rst запретному соединению в обе стороны. рчц не возбуждается.

Share this post


Link to post
Share on other sites

Я тоже так думал, что умрет от такой кучи правил. Собирался что-то типа htb ваять по цепочкам /8, /16, /24, /32.

А потом нашел, что это уже давно сделано (далее голосом Виктора Прокопенко с РЕН-ТВ) Об этом мало кто знает, но для iptables есть утилита ipset, которая умеет эффективно обрабатывать большие списки адресов или подсетей используя хэширование. (http://ipset.netfilter.org/)

В кэш сливается последняя успешная загрузка списка после того, как список обновился. Конкретно у меня список берется отсюда: https://reestr.rublacklist.net/api/ips он больше того, что можно вытащить из выгрузки РКН. На рублэклист на сегодня 43538, в РКН - 26792.

А обычный линуховый роутер (HP G5, 4 ядра, 10 гиг памяти) не помрет, если ему влить такой список ip-адресов для заворачивания в /dev/nul ? Трафика - до 300 мегабит в пиках

Share this post


Link to post
Share on other sites
Не извиню! Пс и выигрываю суд не на основании письма, а по правовой позиции.Есть вопросы - обращайтесь в личку...

 

Не нужно в личку.

В паблике опубликуйте выигранные Вами дела по административке по Ревизору.

 

Решения суда "привлечь к административной ответственности в виде предупреждения" за победу не принимаются!

 

 

Share this post


Link to post
Share on other sites
Не извиню! Пс и выигрываю суд не на основании письма, а по правовой позиции.Есть вопросы - обращайтесь в личку...

 

Не нужно в личку.

В паблике опубликуйте выигранные Вами дела по административке по Ревизору.

 

Решения суда "привлечь к административной ответственности в виде предупреждения" за победу не принимаются!

Уже опубликовал. Даже в 2 местах прямые ссылки дал и там в практике нет предупреждений, везде чистая победа, а не по очкам.

Поиск по Форуму рулит.

Share this post


Link to post
Share on other sites
Уже опубликовал. Даже в 2 местах прямые ссылки дал и там в практике нет предупреждений, везде чистая победа, а не по очкам.Поиск по Форуму рулит.

 

Не правильная у Вас самореклама.

Приведите, пожалуйста, Ваши прямые ссылки, где АС ОТКАЗАЛ РКН в наложении административного взыскания на оператора, потому что нарушение было зафиксировано с помощью ПРОГРАММНОГО АГЕНТА, а не аппаратного.

 

 

 

 

 

Share this post


Link to post
Share on other sites

Народ, знает ли кто как аппаратному ревизору на шлюзе обрезать мониторинг к сайтам так, чтобы он думал что они недоступны?

В случаях, когда небольшое кол-во сайтов не заблокированы и роскомнадзор выписывает административку, можно ли как защититься от их нападков в суде?

п.с. задолбали, честное слово, сайтов незаблокированных значитиельно меньше 1 процента,а уже дело шьют

Share this post


Link to post
Share on other sites

Народ, знает ли кто как аппаратному ревизору на шлюзе обрезать мониторинг к сайтам так, чтобы он думал что они недоступны?

А предидущую страницу посмотреть - никак? ;-)

Share this post


Link to post
Share on other sites

Я не понял где это и что сделать.

п.с. у меня договор с ростелекомом на фильтрацию адресов на моём айпи.

Роскомнадзор уведомлён, но всё равно с меня спрашивают. что делать?

Share this post


Link to post
Share on other sites

Я не понял где это и что сделать.

п.с. у меня договор с ростелекомом на фильтрацию адресов на моём айпи.

Роскомнадзор уведомлён, но всё равно с меня спрашивают. что делать?

Регрессом забирать штраф с Ростелика

Share this post


Link to post
Share on other sites

Народ, знает ли кто как аппаратному ревизору на шлюзе обрезать мониторинг к сайтам так, чтобы он думал что они недоступны?

В случаях, когда небольшое кол-во сайтов не заблокированы и роскомнадзор выписывает административку, можно ли как защититься от их нападков в суде?

п.с. задолбали, честное слово, сайтов незаблокированных значитиельно меньше 1 процента,а уже дело шьют

две страницы назад лежит архивчик. В нашей сети помогает.

Share this post


Link to post
Share on other sites

Я ненашёл две страницы назад никакого архива, и даже три.

помогите

Share this post


Link to post
Share on other sites

Я ненашёл две страницы назад никакого архива, и даже три.

помогите

Зарегитесь, и по ЭЦП получайте список сами. Или у вышестоящего блокиратора простите сами.

Share this post


Link to post
Share on other sites

Я ненашёл две страницы назад никакого архива, и даже три.

помогите

Зарегитесь, и по ЭЦП получайте список сами. Или у вышестоящего блокиратора простите сами.

Ему не реестр забирать надо, а

как аппаратному ревизору на шлюзе обрезать мониторинг к сайтам так, чтобы он думал что они недоступны?

Share this post


Link to post
Share on other sites

Ему не реестр забирать надо, а

как аппаратному ревизору на шлюзе обрезать мониторинг к сайтам так, чтобы он думал что они недоступны?

Можно конечно контролёров некое время обманывать. Но в третий раз - кроилово идёт к попадалову.

Share this post


Link to post
Share on other sites

Я ненашёл две страницы назад никакого архива, и даже три.

помогите

Посты lexy от 28 марта. Все разжевано.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this