Перейти к содержимому
Калькуляторы
Блокировка веб ресурса  

566 пользователей проголосовало

  1. 1. Для блокировка используем



Блокировка сайтов провайдерами маневры с DNS

Привет.

Ковыряю сурикату. Есть у кого опыт? Система вроде как крутая, но нормальной документации с примерами сильно не хватает. Если используете, то в каком режиме, AF_PACKET? Как можно сделать редирект трафика на заглушку? С меня что-нибудь.

Я пока в тесте запуская в AF_PACKET, правила примерно такие drop http any any -> any any (content:"GET";content:"site.org";http_header;content:"/general_info.shtml";http_uri; sid:13;)

Изменено пользователем borgkun

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Max1976, спасибо за труд,

и хотел вас попросить обновить информацию на главной(README) github

у вас там до сих пор написано, что

Для блокировки SSL/ip:port трафика необходимо использовать следующее правило:
iptables -A FORWARD -m mark --mark 17 -p tcp -j REJECT --reject-with tcp-reset
где 17, это значение из конфига nfqfilter.

хотя по треду я понял, что вы уже реализовали такую же фильтрацию что и http

Изменено пользователем cagami

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

хотя по треду я понял, что вы уже реализовали такую же фильтрацию что и http

SSL фильтруется по имени хоста в сертификате. Если имени хоста нет, то либо не фильтруется, либо блокируется на основании ip адреса и протокола SSL (см. параметр block_undetected_ssl).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

хотя по треду я понял, что вы уже реализовали такую же фильтрацию что и http

SSL фильтруется по имени хоста в сертификате. Если имени хоста нет, то либо не фильтруется, либо блокируется на основании ip адреса и протокола SSL (см. параметр block_undetected_ssl).

можно другой глупый вопрос, как мне через nfqfilter не отсылать 302, а форвордить на другой порт с nginx на этой же машине

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

хотя по треду я понял, что вы уже реализовали такую же фильтрацию что и http

SSL фильтруется по имени хоста в сертификате. Если имени хоста нет, то либо не фильтруется, либо блокируется на основании ip адреса и протокола SSL (см. параметр block_undetected_ssl).

можно другой глупый вопрос, как мне через nfqfilter не отсылать 302, а форвордить на другой порт с nginx на этой же машине

 

Никак. nfqfilter - это L7. А что ты хочишь - L3-L4. Разве что можно сделать репликацию пакетов.

 

На счёт склеивания пакетов - это сложный процесс, для которого нужно писать давольно таки много кода. Хотя, код можно взять из wireshark

Изменено пользователем ne-vlezay80

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть у кого нибудь пример заглушки на nginx для 302 moved редиректов?

 

программа ркн ругается в любом случае, если при проверке она не получает стандартную "заглушку" системы фильтрации контента.
Изменено пользователем hsvt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Установил nfqfilter. Автору спасибо.

 

В целом все работает, осталось несколько моментов.

 

Какая правильная реакция на https трафик для nfqfilter по отношению к клиенту? Сброс соединения?

Какая правильная реакция с точки зрения роскомнадзора?

 

В домашнем тестовом окружении их программа проверки RegisterCheck проходит отлично:

встречая https записи реестра в логе видно, что URL не доступен (URL not assigned).

А вот сегодня проверил с другого компьютера уже другую инсталляцию nfqfilter - и на каждую

https запись RegisterCheck выдал "доступен". Хотя, в браузере вся также соединения рвутся как в первом случае дома.

Баг в RegisterCheck?

 

P.S. чтобы собрать nfqfilter под gentoo пришлось добавить #include <signal.h> в main.cpp,

иначе не собиралось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Установил nfqfilter. Автору спасибо.

 

В целом все работает, осталось несколько моментов.

 

Какая правильная реакция на https трафик для nfqfilter по отношению к клиенту? Сброс соединения?

Какая правильная реакция с точки зрения роскомнадзора?

 

В домашнем тестовом окружении их программа проверки RegisterCheck проходит отлично:

встречая https записи реестра в логе видно, что URL не доступен (URL not assigned).

А вот сегодня проверил с другого компьютера уже другую инсталляцию nfqfilter - и на каждую

https запись RegisterCheck выдал "доступен". Хотя, в браузере вся также соединения рвутся как в первом случае дома.

Баг в RegisterCheck?

 

Цитирую:

-----------------

SSL фильтруется по имени хоста в сертификате. Если имени хоста нет, то либо не фильтруется, либо блокируется на основании ip адреса и протокола SSL (см. параметр block_undetected_ssl).

Для блокировки SSL/ip:port трафика необходимо использовать следующее правило:

iptables -A FORWARD -m mark --mark 17 -p tcp -j REJECT --reject-with tcp-reset

где 17, это значение из конфига nfqfilter

-----------------

 

Разные браузеры вероятно по разному отправляют сертификат.

Одни и те же url c https

(без iptables -A FORWARD -m mark --mark 17 -p tcp -j REJECT --reject-with tcp-reset)

- в firefox блокировались

- в IE (и в RegisterCheck) проходили.

 

Для полной блокировки (согласно цитате) добавить:

iptables -A FORWARD -m mark --mark 17 -p tcp -j REJECT --reject-with tcp-reset

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для полной блокировки (согласно цитате) добавить:

iptables -A FORWARD -m mark --mark 17 -p tcp -j REJECT --reject-with tcp-reset

 

Не совсем так. Есть 2 способа сброса соединения - при помощи iptables и с помощью самого nfqfilter. Если в конфиге nfqfilter есть send_rst = true, то использовать iptables не нужно.

Если при установлении SSL соединения в клиентском запросе не будет имени хоста, то при block_undetected_ssl = false блокировки не будет, а при block_undetected_ssl = true будет блокировка при совпадении ip сервера из файла sslips.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для полной блокировки (согласно цитате) добавить:

iptables -A FORWARD -m mark --mark 17 -p tcp -j REJECT --reject-with tcp-reset

 

Не совсем так. Есть 2 способа сброса соединения - при помощи iptables и с помощью самого nfqfilter. Если в конфиге nfqfilter есть send_rst = true, то использовать iptables не нужно.

Если при установлении SSL соединения в клиентском запросе не будет имени хоста, то при block_undetected_ssl = false блокировки не будет, а при block_undetected_ssl = true будет блокировка при совпадении ip сервера из файла sslips.

 

send_rst у меня включен. А вот block_undetected_ssl строчка закомментирована. Если предположить, что по умолчанию это параметр false, то блокировка https в моих случаях зависела только от сертификата. Странно, что на другой машине с теми же настройками nfqfilter register_check не видит https сайты. Получается, registercheck то шлет сертификаты, то нет. Видимо, надо включать дополнительные параметры блокировки block_undetected_ssl.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

end_rst у меня включен. А вот block_undetected_ssl строчка закомментирована. Если предположить, что по умолчанию это параметр false, то блокировка https в моих случаях зависела только от сертификата. Странно, что на другой машине с теми же настройками nfqfilter register_check не видит https сайты. Получается, registercheck то шлет сертификаты, то нет. Видимо, надо включать дополнительные параметры блокировки block_undetected_ssl.

 

Если в системе установлен старый IE, который не вставляет имя хоста в ssl hello, то и программа проверки выдаст что сайт не заблокирован. block_undetected_ssl по умолчанию false.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только сейчас обратил внимание в программе на проверку доступности IP-адресов, она делает ping или tracert и значит доступно? По статистике снизу в конце проверки набирается 90% доступности IP. При официальной проверке IP тоже проверяются и нужно все блокировать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

... При официальной проверке IP тоже проверяются и нужно все блокировать?

 

Тоже интересует этот момент.Всё нужно или только блокировать запрещённые URLs ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тут ранее писали о добавлении в файлик hosts ip адресов и max1976 добавил данный функционал. Те адреса у которых в реестре block type = ip, отлично добавляются в blackhole. Другой вопрос, если в программе проверки rkn выбирать "Проверять ip адреса" - она начинает проверять доступность ВСЕХ ip адресов.

 

Уже готова версия с поддержкой zap2_only_ips - эти адреса добавляются в квагу в виде ip route ip/mask null0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

end_rst у меня включен. А вот block_undetected_ssl строчка закомментирована. Если предположить, что по умолчанию это параметр false, то блокировка https в моих случаях зависела только от сертификата. Странно, что на другой машине с теми же настройками nfqfilter register_check не видит https сайты. Получается, registercheck то шлет сертификаты, то нет. Видимо, надо включать дополнительные параметры блокировки block_undetected_ssl.

 

Если в системе установлен старый IE, который не вставляет имя хоста в ssl hello, то и программа проверки выдаст что сайт не заблокирован. block_undetected_ssl по умолчанию false.

 

Даже с 11 IE такая же ситуация - ssl сайты открываются. Включил block_undetected_ssl. Все равно продолжают открываться.

Перепроверил наличие файла sslips и присутствия в нем ip адреса сайта. Все на месте.

 

Полез в исходники, добавил несколько контрольных точек логгирования: c m0 до m4.

 

	    _logger.debug("m0: %d, %d", (int)_config.block_undetected_ssl, (int)flow->l4.tcp.ssl_stage);
		struct ndpi_packet_struct *packet_s = &flow->packet;
		if(_config.block_undetected_ssl && flow->l4.tcp.ssl_stage >= 1)
		{
		    _logger.debug("m1");
			if(packet_s->payload[0] == 0x16 /* Handshake */)
			{
			    _logger.debug("m2");
				u_int8_t handshake_protocol = packet_s->payload[5]; /* handshake protocol a bit misleading, it is message type according TLS specs */
				if(handshake_protocol == 0x01 /* Client Hello */)
				{
				    _logger.debug("m3");
					Poco::ScopedReadRWLock lock(nfqFilter::_sslIpsSetMutex);
					if(nfqFilter::_sslIpsSet->find(*dst_ip.get()) != nfqFilter::_sslIpsSet->end())
					{
					    _logger.debug("m4");
						_parent->inc_matched_ssl_ip();
						_logger.debug("Blocking/Marking SSL client hello packet from %s:%d to %s:%d", src_ip->toString(),tcp_src_port,dst_ip->toString(),tcp_dst_port);
						if(_config.send_rst)
						{
							_logger.debug("SSLClientHello: Send RST to the client (%s) and server (%s) (packet no %d)",src_ip->toString(),dst_ip->toString(),id);
							std::string empty_str;
							SenderTask::queue.enqueueNotification(new RedirectNotification(tcp_src_port, tcp_dst_port,src_ip.get(), dst_ip.get(),/*acknum*/ tcph->ack_seq, /*seqnum*/ tcph->seq,/* flag psh */ (tcph->psh ? 1 : 0 ),empty_str,true));
							_parent->inc_sended_rst();
							nfq_set_verdict(qh,id,NF_DROP,0,NULL);
						} else {
							_logger.debug("SSLClientHello: Set mark %d to packet no %d",_config.mark_value,id);
							_parent->inc_marked_ssl();
							nfq_set_verdict2(qh,id,NF_ACCEPT,_config.mark_value,0,NULL);
						}
						return ;
					}
				}
			}
		}
		_logger.debug("No ssl client certificate found! Accept packet from %s:%d to %s:%d.",src_ip->toString(),tcp_src_port,dst_ip->toString(),tcp_dst_port);

 

В логах в результате вижу:

 

2016-04-13 15:05:28.570 [775] Debug PktAnalyzer 1 - Analysing SSL protocol

2016-04-13 15:05:28.570 [775] Debug PktAnalyzer 1 - m0: 1, 2

2016-04-13 15:05:28.570 [775] Debug PktAnalyzer 1 - m1

2016-04-13 15:05:28.570 [775] Debug PktAnalyzer 1 - No ssl client certificate found! Accept packet from 10.50.7.89:60845 to 104.20.72.182:443.

 

Может ослабить условия проверок?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А иногда даже вот такая ситуация в логах, т.е. все на первом же условии останавливается и сайт открывается.

 

2016-04-13 17:02:06.224 [1915] Debug PktAnalyzer 2 - m0: 1, 0

2016-04-13 17:02:06.224 [1915] Debug PktAnalyzer 2 - No ssl client certificate found! Accept packet from 10.50.7.89:64866 to 212.56.159.134:443.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Quagga ругается на:

Apr 13 16:41:00 filter quagga[31088]: Starting Quagga daemons (prio:10): zebra bgpd.
Apr 13 16:41:00 filter quagga[31088]: % Unknown command:  network 162.243.97.71/32
Apr 13 16:41:00 filter quagga[31088]: % Unknown command:  network 149.202.99.111/32

 

Это результат после отработки скрипта генерации конфигов. Где-то ошибка?

 

P.S с кваггой не особо знаком и может сам что-то не так делаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Даже с 11 IE такая же ситуация - ssl сайты открываются. Включил block_undetected_ssl. Все равно продолжают открываться.

 

Пришлите дамп с такими сайтами.

 

Это результат после отработки скрипта генерации конфигов. Где-то ошибка?

 

Смотрите весь конфиг bgpd.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

-- Logs begin at Tue 2016-03-22 07:45:27 MSK. --
Apr 11 14:22:57 dpi.domain.net systemd[1]: Starting Nfqilter filtering daemon...
Apr 11 14:22:57 dpi.domain.net systemd[1]: Started Nfqilter filtering daemon.
Apr 11 14:31:57 dpi.domain.net systemd[1]: Stopping Nfqilter filtering daemon...
Apr 11 14:31:57 dpi.domain.net systemd[1]: Starting Nfqilter filtering daemon...
Apr 11 14:31:57 dpi.domain.net systemd[1]: Started Nfqilter filtering daemon.
Apr 11 19:24:56 dpi.domain.net systemd[1]: nfqfilter.service: main process exited, code=killed, status=6/ABRT
Apr 11 19:24:56 dpi.domain.net systemd[1]: Unit nfqfilter.service entered failed state.
Apr 11 19:24:56 dpi.domain.net systemd[1]: nfqfilter.service failed.
Apr 14 14:01:10 dpi.domain.net systemd[1]: Starting Nfqilter filtering daemon...
Apr 14 14:01:10 dpi.domain.net systemd[1]: Started Nfqilter filtering daemon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Наверное было что-то не то в конфигах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Даже с 11 IE такая же ситуация - ssl сайты открываются. Включил block_undetected_ssl. Все равно продолжают открываться.

 

Пришлите дамп с такими сайтами.

 

 

дамп - https://drive.google.com/file/d/0B5FyoK7xVd-pVXFGQnFsUFFwcGM/view?usp=sharing

 

в дампе:

196.40.69.110 - https://www.mvpaction.ag/

10.50.7.89 - клиентский хост

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Даже с 11 IE такая же ситуация - ssl сайты открываются. Включил block_undetected_ssl. Все равно продолжают открываться.

 

Пришлите дамп с такими сайтами.

 

 

дамп - https://drive.google.com/file/d/0B5FyoK7xVd-pVXFGQnFsUFFwcGM/view?usp=sharing

 

в дампе:

196.40.69.110 - https://www.mvpaction.ag/

10.50.7.89 - клиентский хост

 

В дампе видно, что доступ к сайту блокируется (попытка установки tls соединения). Затем клиентское устройство переходит на sslv2 и тогда уже соединение устанавливается. Думаю что надо упростить проверки в алгоритме блокировки ssl/ip, тогда проблема будет решена.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Даже с 11 IE такая же ситуация - ssl сайты открываются. Включил block_undetected_ssl. Все равно продолжают открываться.

 

Пришлите дамп с такими сайтами.

 

 

дамп - https://drive.google.com/file/d/0B5FyoK7xVd-pVXFGQnFsUFFwcGM/view?usp=sharing

 

в дампе:

196.40.69.110 - https://www.mvpaction.ag/

10.50.7.89 - клиентский хост

 

В дампе видно, что доступ к сайту блокируется (попытка установки tls соединения). Затем клиентское устройство переходит на sslv2 и тогда уже соединение устанавливается. Думаю что надо упростить проверки в алгоритме блокировки ssl/ip, тогда проблема будет решена.

 

Да, именно это я и предлагал. Там много проверок, часть из них я у себя выключил, стало лучше, но все равно некоторые сайты проходят. Это как раз был один из них.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обновите nfqfilter и не забудьте выставить block_undetected_ssl в true.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в main.cpp все также приходится добавлять вручную

#include <signal.h>, иначе не собирается.

 

Making all in src
make[1]: Entering directory `/usr/src/nfqfilter/src'
g++ -DHAVE_CONFIG_H -I. -I../include  -I../nDPI/src/include   -std=c++0x -O2 -pthread -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cpp
main.cpp: In member function 'virtual int nfqFilter::main(const ArgVec&)':
main.cpp:255:20: error: aggregate 'nfqFilter::main(const ArgVec&)::sigaction handler' has incomplete type and cannot be defined
main.cpp:258:31: error: 'sigemptyset' was not declared in this scope
main.cpp:259:13: error: 'SIGHUP' was not declared in this scope
main.cpp:259:35: error: invalid use of incomplete type 'struct nfqFilter::main(const ArgVec&)::sigaction'
main.cpp:255:10: error: forward declaration of 'struct nfqFilter::main(const ArgVec&)::sigaction'
make[1]: *** [main.o] Error 1
make[1]: Leaving directory `/usr/src/nfqfilter/src'
make: *** [all-recursive] Error 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.