LINUX.ORG.RU
ФорумAdmin

Отправить клиенту TCP RST

 , , , ,


1

1

Имеем набор правил для Suricata:

pass tcp any any <> any any (content: "GET /d/247048.html";content: "Host: memo.ru"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x2/0xffffffff; sid:10;)
pass tcp any any <> any any (content: "GET /d/247048.html";content: "Host: www.memo.ru"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x2/0xffffffff; sid:11;)

pass tcp any any <> any any (content: "GET /news/286782/rossiya_ustroila_ocherednuyu_provokatsiyu_na_granitse_s_ukrainoyi_mid";content: "Host: censor.net.ua"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x2/0xffffffff; sid:12;)
pass tcp any any <> any any (content: "GET /news/286782/rossiya_ustroila_ocherednuyu_provokatsiyu_na_granitse_s_ukrainoyi_mid";content: "Host: www.censor.net.ua"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x2/0xffffffff; sid:13;)


pass tcp any any <> any any (content: "GET http://memo.ru/d/247048.html";content: "Host: memo.ru"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x2/0xffffffff; sid:20;)
pass tcp any any <> any any (content: "GET http://www.memo.ru/d/247048.html";content: "Host: www.memo.ru"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x2/0xffffffff; sid:21;)

pass tcp any any <> any any (content: "GET http://censor.net.ua/news/286782/rossiya_ustroila_ocherednuyu_provokatsiyu_na_granitse_s_ukrainoyi_mid";content: "Host: censor.net.ua"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x2/0xffffffff; sid:22;)
pass tcp any any <> any any (content: "GET http://www.censor.net.ua/news/286782/rossiya_ustroila_ocherednuyu_provokatsiyu_na_granitse_s_ukrainoyi_mid";content: "Host: www.censor.net.ua"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x2/0xffffffff; sid:23;)


#pass tcp any any <> any any (content: "Firefox/40.0";replace: "Firefox/35.0"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x6/0xffffffff; sid:10202;)
#pass tcp any any <> any any (content: "GET http://";content: "Host: ";content: "HTTP"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x2/0xffffffff; sid:10200;)
pass tcp any any <> any any (pcre: "/\n/i"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x8/0xffffffff; sid:10208;)
#pass tcp any any <> any any (content: "CONNECT ";content: "HTTP"; msg: "PROXY_METHOD_GET"; nfq_set_mark:0x2/0xffffffff; sid:10204;)
root@debian:/home/admin# 

iptables:

root@debian:/home/admin# iptables -t mangle -L -v
Chain PREROUTING (policy ACCEPT 457K packets, 595M bytes)
 pkts bytes target     prot opt in     out     source               destination         
 621K  627M NFQ_DV     all  --  any    any     anywhere             anywhere            
 500K  604M REMARK_BL  all  --  any    any     anywhere             anywhere            

Chain INPUT (policy ACCEPT 2228 packets, 152K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 454K packets, 595M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 2751 packets, 369K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 457K packets, 595M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain NFQ_DV (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 392K  582M RETURN     all  --  any    any     anywhere             anywhere             connbytes 1000000 connbytes mode bytes connbytes direction both
 121K   24M NFQUEUE    all  --  any    any     anywhere             anywhere             mark match ! 0x1/0x1 NFQUEUE num 0 bypass

Chain REMARK_BL (1 references)
 pkts bytes target     prot opt in     out     source               destination         
  154 46929 CONNMARK   all  --  any    any     anywhere             anywhere             mark match 0x2/0xfe CONNMARK save
   19 16502 CONNMARK   all  --  any    any     anywhere             anywhere             mark match 0x8/0xfe connmark match  0x2/0xfe CONNMARK xset 0x98/0xfe
  238 70850 LOG        all  --  any    any     anywhere             anywhere             connmark match  0x2/0xfe LOG level warning prefix "DPI MARK 0x2/0xfe"
  238 70850 CONNMARK   all  --  any    any     anywhere             anywhere             connmark match  0x2/0xfe CONNMARK restore
root@debian:/home/admin# 


root@debian:/home/admin# iptables -L -v
Chain INPUT (policy ACCEPT 701 packets, 42762 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 443K packets, 637M bytes)
 pkts bytes target     prot opt in     out     source               destination         
   61 61851 REJECT     tcp  --  any    any     anywhere             anywhere             connmark match  0x98/0xfe reject-with tcp-reset

Chain OUTPUT (policy ACCEPT 943 packets, 128K bytes)
 pkts bytes target     prot opt in     out     source               destination         
root@debian:/home/admin#

Если попытаться перейти на сайт, указанный в Suricata,то соединение начинает висеть на Ожидании ответа (браузер не получает синволы). Я провирял, если сервер пытается отправить ответ, ему отдают RST. Задача: отправить клиенту RST или поддельный ответ средствами iptables.

★★★★★

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

На «обычном» оборудовании с сетевушками ценой в 1 килобакс за порт. Не говори того, чего не знаешь. Попробуй на встроенной сетевушке хотя бы гигабит прокачать. Сурикатой я буду только красить трафик (устанавливать DSCP) а саму приоритезацию будет делать шейпер.

Dimonyga
()
Ответ на: Re от zevs5

При зеркалировании должна быть еще одна сетевушка, ее роль - инжектор. при обнаружении пакета попадающего под правило - она отправляет rst. В таком случае правило должно начинаться с reset - сбросить источника resetdst - сбросить назначение resetboth - сбросить всех

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

Сурикатой я буду только красить трафик (устанавливать DSCP) а саму приоритезацию будет делать шейпер.

А suricata это поддерживает?

А как ты будешь сбрасывать DSCP, который ты установишь через импровизированный DPI с трафика, который уходит в мир.

Не забанит тебя провайдер? У меня интернет идёт через VPS. Там в правилах у меня прописанно, что запрещено устанавливать DSCP и TOS

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

Кхм, я работаю у провайдера, устроит такой ответ ? Никаких VPS итд нету, устанавливаю DSCP такой какой хочу. suricata это не поддерживает, но я немного программист, костылями но сделать смогу. Сейчас всё красится BRAS ом, но там правила не такие гибкие как у сурикаты.

Dimonyga
()
Ответ на: комментарий от Dimonyga
12/1/2016 -- 02:31:14 - <Error> - [ERRCODE: SC_ERR_ACTION_ORDER(3)] - action-order, invalid action: "rejectboth". Please, use "pass","drop","alert","reject". You have to specify all of them, without quotes and without capital letters

что я делая не так

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

у меня af-packet работает странно:

почимуто с rejectboth часть сайта загружается, с reject блокировка вобще не работает

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

Dimonyga, подробнее о своём севрере:
Версия ядра
Модель сетивой платы
и тд
Я пытался сделать по твоему шаблону, но у меня почиму-то не работает так как надо. Вот моё железо:

root@servl:~# lspci
00:00.0 RAM memory: NVIDIA Corporation MCP61 Memory Controller (rev a1)
00:01.0 ISA bridge: NVIDIA Corporation MCP61 LPC Bridge (rev a2)
00:01.1 SMBus: NVIDIA Corporation MCP61 SMBus (rev a2)
00:01.2 RAM memory: NVIDIA Corporation MCP61 Memory Controller (rev a2)
00:02.0 USB controller: NVIDIA Corporation MCP61 USB 1.1 Controller (rev a3)
00:02.1 USB controller: NVIDIA Corporation MCP61 USB 2.0 Controller (rev a3)
00:04.0 PCI bridge: NVIDIA Corporation MCP61 PCI bridge (rev a1)
00:05.0 Audio device: NVIDIA Corporation MCP61 High Definition Audio (rev a2)
00:06.0 IDE interface: NVIDIA Corporation MCP61 IDE (rev a2)
00:07.0 Bridge: NVIDIA Corporation MCP61 Ethernet (rev a2)
00:08.0 IDE interface: NVIDIA Corporation MCP61 SATA Controller (rev a2)
00:09.0 PCI bridge: NVIDIA Corporation MCP61 PCI Express bridge (rev a2)
00:0b.0 PCI bridge: NVIDIA Corporation MCP61 PCI Express bridge (rev a2)
00:0c.0 PCI bridge: NVIDIA Corporation MCP61 PCI Express bridge (rev a2)
00:0d.0 VGA compatible controller: NVIDIA Corporation C61 [GeForce 6100 nForce 405] (rev a2)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
01:09.0 Ethernet controller: VIA Technologies, Inc. VT6105/VT6106S [Rhine-III] (rev 8b)
01:0a.0 Network controller: Qualcomm Atheros AR9227 Wireless Network Adapter (rev 01)

root@servl:~# lsusb
Bus 001 Device 002: ID 054c:05b8 Sony Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
root@servl:~# 
root@servl:~# ifconfig
br0       Link encap:Ethernet  HWaddr f8:1a:67:99:db:9b  
          inet addr:10.250.2.1  Bcast:10.250.2.255  Mask:255.255.255.0
          inet6 addr: fe80::1038:22ff:feca:c8b9/64 Scope:Link
          inet6 addr: fd00:1002:1288:2::/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:164918 errors:0 dropped:0 overruns:0 frame:0
          TX packets:308957 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:12855075 (12.2 MiB)  TX bytes:437807423 (417.5 MiB)

eth0      Link encap:Ethernet  HWaddr 00:1d:92:29:aa:15  
          inet addr:10.250.0.1  Bcast:10.250.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21d:92ff:fe29:aa15/64 Scope:Link
          inet6 addr: fd00:1002:1288:1::1/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:23891 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27046 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1852591 (1.7 MiB)  TX bytes:27835392 (26.5 MiB)

eth1      Link encap:Ethernet  HWaddr 1c:af:f7:6f:86:16  
          inet addr:[forbidden]  Bcast:[forbidden]  Mask:255.255.255.255
          inet6 addr: fe80::1eaf:f7ff:fe6f:8616/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:354175 errors:0 dropped:0 overruns:0 frame:0
          TX packets:208863 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:472121246 (450.2 MiB)  TX bytes:20509448 (19.5 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:34988 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34988 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:8113419 (7.7 MiB)  TX bytes:8113419 (7.7 MiB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.255.0.2  P-t-P:10.255.0.1  Mask:255.255.255.255
          inet6 addr: [forbidden]/128 Scope:Global
          inet6 addr: fd00:1002:1288:fd::2/126 Scope:Global
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:2141 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2069 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:800652 (781.8 KiB)  TX bytes:169637 (165.6 KiB)

vlan100   Link encap:Ethernet  HWaddr 00:1d:92:29:aa:15  
          inet addr:10.255.1.1  Bcast:10.255.1.255  Mask:255.255.255.0
          inet6 addr: fd00:1002:1289:10::1/64 Scope:Global
          inet6 addr: fe80::21d:92ff:fe29:aa15/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1538 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:79354 (77.4 KiB)

wlan0     Link encap:Ethernet  HWaddr f8:1a:67:99:db:9b  
          inet addr:169.254.225.211  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:164912 errors:0 dropped:0 overruns:0 frame:0
          TX packets:309399 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15163807 (14.4 MiB)  TX bytes:444058369 (423.4 MiB)

root@servl:~# 
root@servl:~# cat /proc/cpuinfo 
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 15
model		: 75
model name	: AMD Athlon(tm) 64 X2 Dual Core Processor 4600+
stepping	: 2
microcode	: 0x62
cpu MHz		: 2411.021
cache size	: 512 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch vmmcall
bugs		: apic_c1e fxsave_leak sysret_ss_attrs
bogomips	: 4822.04
TLB size	: 1024 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: ts fid vid ttp tm stc

processor	: 1
vendor_id	: AuthenticAMD
cpu family	: 15
model		: 75
model name	: AMD Athlon(tm) 64 X2 Dual Core Processor 4600+
stepping	: 2
microcode	: 0x62
cpu MHz		: 2411.021
cache size	: 512 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 1
initial apicid	: 1
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch vmmcall
bugs		: apic_c1e fxsave_leak sysret_ss_attrs
bogomips	: 4821.96
TLB size	: 1024 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: ts fid vid ttp tm stc

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

в action-order нужно указывать только «pass»,«drop»,«alert»,«reject» rejectboth это подмножество команд reject, пишется только в правило.

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

cpuinfo и lsusb вообще очень «нужны» .... Приложи конфиг и параметры запуска. И расскажи откуда и куда ты пытаешься прокачать трафик

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

конфиг:
http://paste.debian.net/365528/
параметры запуска:

suricata -c /etc/suricata/suricata.yaml --af-packet

я патаюсь прокачать трафик через встроенную сетевую плату.

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

Конфиг примерно такой же, но у меня сетевушки broadcom(tg3), хочу поменять на intel(ixgbe) но пока справляются и те что есть. Единственное что - у меня на сетевушках нет vlan и айпишников, совсем, и туннелей никаких тоже нет.

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

vlan для виртуалок. Я пробывал не своём компьютере - тоже самое

ne-vlezay ★★★★★
() автор топика
14 февраля 2016 г.
Ответ на: комментарий от Dimonyga

cast: vel Dimonyga mky

Кстати, есть очень интересный perl скрипт:

#!/usr/bin/perl

use strict;
use Net::Pcap;
use NetPacket::Ethernet qw(:strip);
use NetPacket::IP qw(:strip);
use NetPacket::TCP;
use Net::RawIP;

$|=1;
my $dev='eth1';
my $filter_str='dst port 80';

my @URL = ("hospital-vrn.ru",);
my %URL_ARR = ();
foreach (@URL) {
    $URL_ARR{$_} = 1;
}

print "Filter: $filter_str\n";

my $pcap_t = Net::RawIP->pcapinit($dev, $filter_str, 1500, 250);
loop($pcap_t, -1, \&process_pkt,"0");

sub process_pkt {

my($pktuser, $hdr, $pkt) = @_;

my $ip_obj=NetPacket::IP->decode(eth_strip($pkt));
my $srcip=$ip_obj->{src_ip};
my $dstip=$ip_obj->{dest_ip};
my $proto=$ip_obj->{proto};
my ($tcp_obj, $srcport, $dstport, $dataset, $seqnum, $acknum);

if($proto==6){
        $tcp_obj=NetPacket::TCP->decode(ip_strip(eth_strip($pkt)));
        $srcport=$tcp_obj->{src_port};
        $dstport=$tcp_obj->{dest_port};
        $dataset=$tcp_obj->{data};
        $seqnum=$tcp_obj->{seqnum};
        $acknum=$tcp_obj->{acknum};

        http_handler($dataset, $srcip, $dstip, $srcport, $dstport, $seqnum, $acknum);
    }
}

sub http_handler {
my ($dataset, $srcip, $dstip, $srcport, $dstport, $seqnum, $acknum) = @_;
my ($dataportion, $query, $host);

$dataportion = unpack("A*", $dataset);
#    print "\nDEBUG\n" . unpack("A*",$dataset);
    if ($dataportion =~ s/^GET\s(.+)\sHTTP\/1\.\d\r\n//) {
        $query = unpack("A*",$1);
        $query =~ s/^\/$//;
        if ($dataportion =~ s/Host:\s(.+)\r\n//) {
            $host = unpack("A*",$1);
            if ($URL_ARR{$host . $query}) {
                print "Matched: $host$query ($srcip)\n";
                send_answer($srcip, $dstip, $srcport, $dstport, $seqnum, $acknum);
            }
        }
    }
}

sub send_answer {
my ($srcip, $dstip, $srcport, $dstport, $seqnum, $acknum) = @_;

my $header = "HTTP/1.1 301 Moved Permanently
Location: http://google.com
Connection: close
";

my  $packet = new Net::RawIP({ip =>
                {
                    saddr => $dstip,
                    daddr => $srcip
                },
                tcp =>
                {
                    source => $dstport,
                    dest => $srcport,
                    seq => $acknum,
                    ack_seq => $seqnum+1,
                    ack => 1,
                    data => $header
                }
                });
        $packet->send(0,1);
        exit 0;
}

Но внём есть косяки: 1. Блокируется только первый url, а остальные потом не блокируются, если не перезапустить скрипт 2. Как же сделать так, чтобы этот скрипт кешировал http пакеты, а потом анализировал их

P.S. Опыта работы с perl у меня пока нет.

От находится в: http://forum.nag.ru/forum/index.php?showtopic=79886&st=0

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

exit 0; - это временно. Я бы его убрал, но без него не почиму-то не отправляются пакеты при повторном совпадении с регулярным выражением

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

Тут не то что с perl'ом опыт работы нужен, а со библиотеками pcap и rawip. Там ведь есть http://forum.nag.ru/forum/index.php?showtopic=79886&st=40&p=771958&am... версия скрпита, где вместо ″Net::RawIP->pcapinit″ используют развёрнутый вызов начиная с ″Net::Pcap::open_live″. А с учётом того, что гуглится баг, где pcapinit вызывает сегфолт, возможно, вам это поможет.

Как же сделать так, чтобы этот скрипт кешировал http пакеты, а потом анализировал их

Сначала нужно бы хотя бы без exit() заставить работать. Задача анализа как-то непонятно сформулирована, как бы не место ей в скрипте, работающем по списку url'ов.

mky ★★★★★
()
19 апреля 2017 г.
Ответ на: комментарий от Dimonyga

Прошу поделиться опытом

как быть с запросами на https? вы их отбрасываете при обращении к DNS или же каким-то фильтруете?

lyyr
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.