Suricata шлюз не декодирует протокол HTTP

У меня есть такой тест:

Мой env:

ОС: Debian 8

A:172.20.0.1 (gateway  suricata v3.2 )

B:172.20.0.2  (App Server)

C:172.20.0.3  (Client)

Моя сеть:

client(C)  ----> gateway suricata A (ids)  -----> AppServer B

Моя информация о сборке suricata:

wget https://github.com/inliniac/suricata/archive/suricata-3.2.zip
unar suricata-3.2.zip
cd suricata-3.2
git clone https://github.com/OISF/libhtp.git
./configure --enable-nfqueue --enable-pfring --enable-hiredis --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
make install
make install-conf
make install-rules

И загрузить только тестовое правило:

alert http any any -> any any (msg:"http test"; content:"GET";) #no.1
alert tcp any any -> any any (msg:"tcp test"; content:"GET";) #no.2
alert tcp any any -> any any (msg:"tcp http test"; content:"GET";http_method;) #no.3

A: 172.20.0.1 (шлюз suricata) Информация об ОС:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -F
iptables -A FORWARD -j ACCEPT

Клиент отправляет запрос как

 'http://172.20.0.2/test'

Хвост Фаст.лог. Только правило № № 2 соответствует

Я попытался открыть nat с iptables, как:

iptables -t nat -A POSTROUTING -j MASQUERADE

И на этот раз правила № № 1 № № 2 № № 3 совпали

Но, Nat был открыт, что appserver не получил правильный ip клиента

адрес.

А теперь я хочу использовать 7-слойный протокол с такими параметрами, как http_uri, http_method и так далее. Нац должен быть закрыт.

Я хочу правильный путь ~ ~ ~ Спасибо!

1 ответ

Решение

Я нашел способ, который:

iptables -A INPUT -i eth0 -p tcp -m tcp --sport 80 -j TEE --gateway 172.20.8.147
iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -j TEE --gateway 172.20.8.147

и NAT это слишком плохо,

тема закрыта

Другие вопросы по тегам