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

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

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



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

с реестром всё нормально творится уже не первый день?

 

https://gyazo.com/802889717506fc2da4794200abf83799

 

ревизор пропускает чего нет в выгрузке =)))

 

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

 

А вот если на сервере с запрещенным контентом выставить MSS 64 - то клиент поколбасит пакеты в более мелкие - и все не помогут ни карбоны ни extfilter.

 

max197616, а будет версия без ndpi, чтоб он мог собирать пакеты?

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


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

Дело в том, что некоторые ресурсы иногда подпадают под это

nfqfilter/src/pktanalyzer.cpp

        if(protocol.master_protocol != NDPI_PROTOCOL_HTTP && protocol.protocol != NDPI_PROTOCOL_HTTP && protocol.protocol != NDPI_PROTOCOL_DIRECT_DOWNLOAD_LINK)
       {
               _logger.debug("Not http protocol. Protocol is %hu/%hu from %s:%d to %s:%d",protocol.master_protocol,protocol.protocol,src_ip->toString(),tcp_src_port,dst_ip->toString(),tcp_dst_port);
               nfq_set_verdict(qh,id,NF_ACCEPT,0,NULL);
               return ;
       }

В результате имеем пропуск.

Помогает

        if(protocol.master_protocol && protocol.protocol && protocol.master_protocol != NDPI_PROTOCOL_HTTP && protocol.protocol != NDPI_PROTOCOL_HTTP && protocol.protocol != NDPI_PROTOCOL_DIRECT_DOWNLOAD_LINK)
       {
               _logger.debug("Not http protocol. Protocol is %hu/%hu from %s:%d to %s:%d",protocol.master_protocol,protocol.protocol,src_ip->toString(),tcp_src_port,dst_ip->toString(),tcp_dst_port);
               nfq_set_verdict(qh,id,NF_ACCEPT,0,NULL);
               return ;
       }

Вместо пропуска соединения подвисают в воздухе. И (внезапно!) ломается newcamd. Вопрос - почему nDPI иногда не может определить протокол? После нескольких перезапусков может начать работать как ни в чем не бывало

 

Спасибо.

Ваш патч помог.

Можен max197616 и Vans добавят его.

 

А кто что делает nfqfilter с длинными URL типа

ladious.ru/download/YU....

Обрезания не помогают.

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


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

Спасибо.

Ваш патч помог.

Можен max197616 и Vans добавят его.

 

есть улучшенная версия патча. https://github.com/myth11/nfqfilter/commit/d0702b75d47389718830ad792a00b1fc6e06d59d

 

Просто секцию

if(protocol.master_protocol != NDPI_PROTOCOL_HTTP && protocol.protocol != NDPI_PROTOCOL_HTTP && protocol.protocol != NDPI_PROTOCOL_DIRECT_DOWNLOAD_LINK)

{

_logger.debug("Not http protocol. Protocol is %hu/%hu from %s:%d to %s:%d",protocol.master_protocol,protocol.protocol,src_ip->toString(),tcp_src_port,dst_ip->toString(),tcp_dst_port);

nfq_set_verdict(qh,id,NF_ACCEPT,0,NULL);

return ;

}

надо опустить ниже. Будет так

	_logger.debug("Got HTTP protocol");
std::string host((char *)&flow->host_server_name[0]);
std::string uri_o(flow->http.url ? flow->http.url : "");
std::string add_param;
std::string uri_encoded;
std::string uri_reserved=";,/?:@&=+$";
//                _logger.error("http protocol. Protocol is %hu/%hu from %s:%d to %s:%d",protocol.master_protocol,protocol.protocol,src_ip->toString(),tcp_src_port,dst_ip->toString(),tcp_dst_port);

if((flow->http.method == HTTP_METHOD_GET || flow->http.method == HTTP_METHOD_POST || flow->http.method == HTTP_METHOD_HEAD) && !host.empty())
{
	int dot_del=0;
	if(host[host.length()-1] == '.')
	{
		dot_del=host.length()-1;
		host.erase(dot_del,1);
	}
	if(_config.lower_host)
		std::transform(host.begin(), host.end(), host.begin(), ::tolower);
	sw.reset();
	sw.start();

	AhoCorasickPlus::Match match;
	bool found=false;
	{
		Poco::Mutex::ScopedLock lock(nfqFilter::_domainMapMutex);
		nfqFilter::atm_domains->search(host,false);
		std::size_t host_len=host.length();
		while(nfqFilter::atm_domains->findNext(match) && !found)
		{
			if(match.pattern.length != host_len)
			{
				DomainsMatchType::Iterator it=nfqFilter::_domainsMatchType->find(match.id);
				bool exact_match=false;
				if(it != nfqFilter::_domainsMatchType->end())
					exact_match = it->second;
				if(exact_match)
					continue;
				if(host[host_len-match.pattern.length-1] != '.')
					continue;
			}
			found=true;
		}
	}
	sw.stop();
	_logger.debug("Host seek occupied %ld us",sw.elapsed());
	if(found)
	{
		_logger.debug("Host %s present in domain (file line %u) list from ip %s", host, match.id, src_ip->toString());
		switch (_config.add_p_type)
		{
			case A_TYPE_ID: add_param="id="+std::to_string(match.id);
					break;
			case A_TYPE_URL:
			    Poco::URI::encode(uri_o, uri_reserved, uri_encoded);
			    add_param="url="+uri_encoded;
			    _logger.debug("Params for redirect: '%s'", add_param);
			    break;
			default: break;
		}
		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 ),add_param));
		_parent->inc_redirected_domains();
		nfq_set_verdict(qh,id,NF_DROP,0,NULL);
		return ;
	}
	sw.reset();
	sw.start();
	found=false;
	if(flow->http.url)
	{
		std::string uri;
		if(dot_del)
			uri_o.erase(dot_del+7,1);
		try
		{
			Poco::URI uri_p(uri_o);
			uri_p.normalize();
			uri.assign(uri_p.toString());
			if(_config.url_decode)
			{
#ifdef __USE_POCO_URI_DECODE
				Poco::URI::decode(uri_p.toString(),uri);
#else
				uri=url_decode(uri);
#endif
			}
		} catch (Poco::SyntaxException &ex)
		{
			_logger.debug("An SyntaxException occured: '%s' on URI: '%s'",ex.displayText(), uri_o);
			uri.assign(flow->http.url);
		}

		{
			Poco::Mutex::ScopedLock lock(nfqFilter::_urlMapMutex);
			nfqFilter::atm->search(uri,false);
			while(nfqFilter::atm->findNext(match) && !found)
			{
				if(_config.match_url_exactly && uri.length() != match.pattern.length)
					continue;
				found=true;
			}
		}
		sw.stop();
		_logger.debug("URL seek occupied %ld us for uri %s",sw.elapsed(),uri);
		if(found)
		{
			_logger.debug("URL %s present in url (file pos %u) list from ip %s",uri,match.id,src_ip->toString());
			switch (_config.add_p_type)
			{
				case A_TYPE_ID: add_param="id="+std::to_string(match.id);
				    break;
				case A_TYPE_URL: 
				    Poco::URI::encode(uri, uri_reserved, uri_encoded);
				    add_param="url="+uri_encoded;
				    _logger.debug("Params for redirect: '%s'", uri_encoded);
				    break;
				default: break;
			}
			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 ),add_param));
			_parent->inc_redirected_urls();
			nfq_set_verdict(qh,id,NF_DROP,0,NULL);
			return ;
		}
	}
}
nfq_set_verdict(qh,id,NF_ACCEPT,0,NULL);

if(protocol.master_protocol != NDPI_PROTOCOL_HTTP && protocol.protocol != NDPI_PROTOCOL_HTTP && protocol.protocol != NDPI_PROTOCOL_DIRECT_DOWNLOAD_LINK)
{
	_logger.debug("Not http protocol. Protocol is %hu/%hu from %s:%d to %s:%d",protocol.master_protocol,protocol.protocol,src_ip->toString(),tcp_src_port,dst_ip->toString(),tcp_dst_port);
	nfq_set_verdict(qh,id,NF_ACCEPT,0,NULL);
	return ;
}

 

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

 

А кто что делает nfqfilter с длинными URL типа

ladious.ru/download/YU....

Обрезания не помогают.

Есть выше. Zapret.pl

		# URLs
	my $processed_urls=0;
               my $need_to_block_domain=0;
               my $need_to_block_ip=0;
	my $test_dom=0;
my $test_dom_h=0;
	if( ref($NEW{$d_id}->{urls}) eq 'ARRAY' )
	{
		foreach my $url ( @{$NEW{$d_id}->{urls}} )
		{
####################URL Длиннее 1024 символов блокируются по IP############################
			if((my $len = length($url)) < 1024)
			{
				$processed_urls++;
			} else {
				$need_to_block_ip=1;
				$OLD_URLS{md5_hex(encode_utf8($url))} = 0;
				$logger->info("Skip longer URL, blocking by IP: ".$url . "Lenght: ".$len);
			}
###########################################################################################

                my $need_to_block_domain=0;
               my $need_to_block_ip=0;

следующие в коде дальше, комментируются

 

 

https://github.com/myth11/zapret/blob/master/zapret.pl

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


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

Может всё таки Вам всем объединиться в один больше пользы всем будет

 

https://github.com/max197616/nfqfilter

https://github.com/Vans1/nfqfilter

https://github.com/myth11/nfqfilter

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


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

По вопросу nfqfilter и длинные URL типа ladious.ru/download/YU

 

Подскажите может я чего то не знаю?

Что мешает увеличить AC_PATTRN_MAX_LENGTH

в nfqfilter/include/actypes.h

и nDPI/src/lib/third_party/include/actypes.h

 

P.S Понял, разными двумя пакетами url такой длины передаётся.

Тогда токо обрезать

Изменено пользователем Стич

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


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

Оно не войдёт в один пакет, а собирать фрагменты ndpi не может

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


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

Стич, наложи последнюю версию патча. Она newcamd не ломает, соединения не висят

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


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

Может всё таки Вам всем объединиться в один больше пользы всем будет

 

https://github.com/max197616/nfqfilter

https://github.com/Vans1/nfqfilter

https://github.com/myth11/nfqfilter

Плюсую. Мужики, спасибо, полезное дело делаете... Только заморочно метаться между репозиториями.

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


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

А как в extfilter победить проблему с vip-club-vulkan.net?

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


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

Закрыть где-нибудь по ip. На бордере, например

 

А с другой стороны - 406 код не считается нарушением

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


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

А у кого нить нет скриптика для того что бы узнать IP и добавить в фаервол на бордере?

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


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

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

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


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

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

 

Да отрезолвить это не проблема. Мне бы как правильно добавить в iptables что бы ревизор не ругался

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


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

Приветствую! А кто как блокирует ссылки типа qBY1RSBoCqFLw_wcB// 2 слэша в конце? в базе у меня оно верное - а при выгрузке - нормализуется до одного слэша и получаю пропуск...

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


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

как правильно добавить в iptables

В цепочку FORWARD. Что-то типа iptables -A FORWARD -d IP -j DROP

 

Приветствую! А кто как блокирует ссылки типа qBY1RSBoCqFLw_wcB// 2

конкретный урл можно?

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


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

К сожалению не помогло... с 1 слешем (так как выгружается после extfilter-maker) все блокируется. С 2 слэшами - нет. если вручную внести эту ссылку (с 2 слэшами) то работает и так и так

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

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


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

К сожалению не помогло... с 1 слешем (так как выгружается после extfilter-maker) все блокируется. С 2 слэшами - нет. если вручную внести эту ссылку (с 2 слэшами) то работает и так и так

Странно, у меня блокируется

 

Поставьте в конфиге

 

Цитата

url_normalization = true

данная строчка закомментирована

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

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


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

а чем гененируете списки? Я сперва получаю выгрузку ( вней данный урл как раз с 2 //) парсю и отправляю в базу. Из базы extfilter-maker генерирует списки для extfilter.. и вот в этих уже списках данный урл с 1 слешем..

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

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


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

а чем гененируете списки? Я сперва получаю выгрузку ( вней данный урл как раз с 2 //) парсю и отправляю в базу. Из базы extfilter-maker генерирует списки для extfilter.. и вот в этих уже списках данный урл с 1 слешем..

zapret.pl

extfilter-maker

extfilter

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


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

как правильно добавить в iptables

В цепочку FORWARD. Что-то типа iptables -A FORWARD -d IP -j DROP

Если таких записей будет несколько сотен, сколько ж времени они будут добавляться в iptables и не помрет ли сервак при этом?

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


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

Join the conversation

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

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

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

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

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

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

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