LINUX.ORG.RU
решено ФорумAdmin

Блокировка отдельных страниц через iptables string

 , , ,


3

4

Делаем правило:

 iptables -A ZAPRET_GOV -m conntrack --ctstate ESTABLISHED -m string --string "http://memo.ru/d/236514.html" --algo bm  --from 280  -p tcp -j REJECT --reject-with tcp-rst

Получаем то, что сайт открывается, но элементы ссылки не прогружаются.

Как сделать так, чтобы сбразывалось соединение?

★★★★★

Проще через прокси,а в iptables сделать форвард на него

edyard
()

Какое-то жуткое извращение. Поставь проси в прозрачном режиме и заворачивай на него весь трафик.

gadfly ★★
()
Ответ на: комментарий от gadfly

Меня интерисует, как это сделать без прокси

ne-vlezay ★★★★★
() автор топика

iptables резолвит и вносит полученный адрес. Если таковых несколько то фильтруется тот, которому повезло. Остальные свободны.

sin_a ★★★★★
()

Надеюсь ограничение на фрагментирование пакетов ты уже поставил? А иначе это правило теоретически можно будет обойти послав вместо одного - 2 фрагментированных пакета, в каждом из которых будет только часть строки, на которую ты матчишь, следовательно - эти пакеты не подпадут под правило

Pinkbyte ★★★★★
()

"-j REJECT --reject-with tcp-reset"

Жаль что он толко в одну сторону ресет посылает :(

http запрос в таком виде передается только на прокси-сервер, а обычный клиентский запрос имеет отдельно путь и отдельно хост.

weburl вроде для этих целей писали.

vel ★★★★★
()
Ответ на: комментарий от ne-vlezay

как пробовал(пример запрета фрагментированных пакетов)? Что в счетчиках? Правила вообще отрабатывают?

Но вообще да, как тебе уже подсказали - ты изобретаешь велосипед

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 2)

Это изначально плохая идея делать это через iptables. Забудь. Юзай прозрачный прокси.

blind_oracle ★★★★★
()

ЕЩЁ ВОПРОС: Как можно перенаправлять на страницу с заглушкой при блокировке сайта через weburl

ne-vlezay ★★★★★
() автор топика
Ответ на: комментарий от ne-vlezay

для этого есть какой-то модуль. Только как у него с ipv6 - не понятно.

если я ничего не путаю, то на хабре была статейка.

http://xgu.ru/wiki/Carbon_Reductor

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)

Proxy нет? Тогда читай про l7firewall.

Deleted
()
Ответ на: комментарий от vel

Меня интерисует, есть ли свободная реализация

ne-vlezay ★★★★★
() автор топика

Не правильно такие вещи делать через iptables, он слишком низкоуровневый для этого. Единственноверный вариант - прозрачный прокси, не выпендривайся и ставь его.

К тому же ж вроде как роскомнадзор требует блокировать только сам сайт, а не ссылки на него. Так что не правильно ты режешь, ибо твой фильтр закроет помимо прочего даже эту страницу форума. Опять же тут помог бы прозрачный прокси, потому что он понимает структуру HTTP и может определить к какой странице реально обращаются.

KivApple ★★★★★
()

Нельзя так делать. На третьем уровне OSI, на котором работает iptables твоя задача не решается, бери выше.

Заворачивай все на squid и им фильтруй что надо, там же и страницы перенаправленя работают и все остальное.

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

BaBL ★★★★★
()

Кстати, а чего б ему не открываться-то? В твоём случае надо отдельно ловить

Host: memo.ru
и
GET /d/236514.html

gadfly ★★
()
Последнее исправление: gadfly (всего исправлений: 2)

Пока ждал ответа, накатил:

#!/bin/bash

DUMP="/opt/dump_gov.dmp"
API="https://api.antizapret.info/all.php"
IPT_RULE="ZAPRET_GOV"
ACTION=$1

search_dump ()
{
	if ls $DUMP 2>/dev/null >/dev/null
	then
		true
	else
		echo "Dump not found. Rebuilding..."
		if wget $API -O- 2>/dev/null 2>&1 >$DUMP
		then
			echo "Rebuild OK"
		else
			echo "Rebuild FAILED"
			rm $DUMP
		fi
	fi
}

parsing_dump_and_add_rule ()
{
	echo "Building iptables rules..."
	iptables -F $IPT_RULE
	for a in $(cat $DUMP|tr ';' ' '|awk '{print $2}')
	do
		iptables -A $IPT_RULE -m weburl --contains "$a" -p tcp -j REJECT --reject-with tcp-rst
	done
}

clean_ipt_rule ()
{
	echo "Cleaning $IPT_RULE"
	iptables -F $IPT_RULE
}

case $ACTION in

start)
	search_dump
	parsing_dump_and_add_rule
	;;
stop)
	clean_ipt_rule
	;;

esac

почему-то при работе выдаёт ошибку:

root@debian:/home/admin# /opt/zapret_gov.sh start
Building iptables rules...
iptables v1.4.19.1: Parameter definition is too long, must be less than 1024 characters
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.19.1: Parameter definition is too long, must be less than 1024 characters
Try `iptables -h' or 'iptables --help' for more information.

Как отключить в iptables лимит 1024 правил на ципочку

ne-vlezay ★★★★★
() автор топика
Ответ на: комментарий от vel

А тогда что это сыплет на консоль при загрузке реестра запрещённых сайтов в iptables

Parameter definition is too long, must be less than 1024 characters

ne-vlezay ★★★★★
() автор топика
Ответ на: комментарий от vel

Я как понял, в этой ошибке нет ничего критического.
Изминил MAX_TEST_STR на 4096 - не помогло

ne-vlezay ★★★★★
() автор топика

Блокировка отдельных страниц через iptables

как страшно жить! лучше приготовь кальмара.

vxzvxz ★★★
()
Ответ на: комментарий от vel

Я при работе твоего weburl заметил, что интернет просел.

Я набрал ifconfig eth1 (это мой внешний интерфейс) - там были ошибки. Убрал правила в iptables с weburl - ошибок не было

ne-vlezay ★★★★★
() автор топика

ZAPRET_GOV

Ты не с того конца проблему решаешь. Тебе ведь не нужно блокировать страницы собственного сайта. Ты хочешь чтобы к тебе не было претензий со стороны «ZAPRET_GOV». Ну так и решай эту проблему, вместо того, чтобы городить энергетически затратные костыли, которые будут сказываться на производительности и потреблении электроэнергии вычислительной системы. Напиши письмо своему депутату с просьбой принять меры к отмене цензуры в сети, выйди на митинг, объяви голодовку наконец.

anonymous
()
Ответ на: комментарий от ne-vlezay

я заметил на ядре 4.0.4 странный баг. Если добавить много правил, сеть начинает медленно работать. Сейчас я откатился на 3.18.x - там всё работает нормально

ne-vlezay ★★★★★
() автор топика
Ответ на: комментарий от te111011010

Тогда я бы строками сделал :) 'Host: example.com' + 'GET /example/path'.

gadfly ★★
()
Ответ на: комментарий от ne-vlezay

Я подправил его только чтоб оно собиралось + тест на проверку работоспоссобности. А режекты локальных пакетов не проявляются как ошибки на интерфейсе ?

качество кода weburl меня не обрадовало.

vel ★★★★★
()
Ответ на: комментарий от vel

я ещё посмотрел, если сайт блокируемый через weburl открыть через яджекс - то от почему-то блокируется через раз

ne-vlezay ★★★★★
() автор топика

Закон принимали чтобы вендоры продали много DPI решений
Ты подрываешь экономику своими действиями

zolden ★★★★★
()

я только что в weburl обнаружил баг: если на заблокированную в weburl ссылку клиннуть, она почему то иногда не блокируется

ne-vlezay ★★★★★
() автор топика
Последнее исправление: ne-vlezay (всего исправлений: 1)
Ответ на: комментарий от vel

Я в weburl обнаружил баг: если много правил, на некорые заблокированные сайты наблюдается просачивание трафика

ne-vlezay ★★★★★
() автор топика
Последнее исправление: ne-vlezay (всего исправлений: 1)
Ответ на: комментарий от ne-vlezay

качество кода weburl меня не обрадовало. Я не удивлюсь, если оно упадет от хитрых входных данных или от хитрого регекспа.

vel ★★★★★
()
Ответ на: комментарий от vel

от себи странно ведёт на разных системах. Например, сегодня у всех пропал интернет - оказалось, что этот weburl глюканул

А кто вобще автор этого чуда

ne-vlezay ★★★★★
() автор топика
Последнее исправление: ne-vlezay (всего исправлений: 1)
Ответ на: комментарий от vel

я её смотрел. Как понял, проект заброшен

ne-vlezay ★★★★★
() автор топика
6 августа 2015 г.

Кстати, на freebsd есть это: http://www.ahome.ru/ng_grep/index.html
Но, для начала нужно найти freebsd Надо гдето достать доку на netgraph
Пока пользуюсь tproxy

ne-vlezay ★★★★★
() автор топика
Последнее исправление: ne-vlezay (всего исправлений: 2)
Ответ на: комментарий от dev-ice

Записи не найдены.

Это и есть твоя система

ne-vlezay ★★★★★
() автор топика
Последнее исправление: ne-vlezay (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.