nginx: Tüm başlıklar için istek / cevap tamamlandı mı?


44

Bazen takılan bir uygulama sunucumuz var. Bir müşteriden gelen kötü bir istekten kaynaklandığından şüpheleniyoruz.

Nginx, tüm isteği / yanıtı (kemancı yakalamaları gibi) dosyalara kaydedebilir mi, böylece askıda kalmadan önce gönderilen istekleri görebiliriz?

(Muhtemelen pcap ve bu yaklaşımı önlemek ve hepsini nginx içinde yapmak gerekir)

Nginx bunun için doğru araç değilse, ne olabilir (bir ağ analizörü dışında)?


1
ters proxy modunda mitmproxy aradığınızı yapmalıdır.
Vivek Thomas

@VivekThomas bu bir nginx sorusu .... biz zaten nginx kullanıyoruz ve değişmeyecek.
samsmith,

3
@ samsmith Eski soru, ama belki bu başkasına yardımcı olur: nginx'den vazgeçmek zorunda değilsiniz . Koşullara bağlı olarak, mitmproksinin trafiği engellemesine ve hata ayıklamayı desteklemesine izin vermek için nginx'i geçici olarak başka bir bağlantı noktasına yeniden yönlendirebilirsiniz. Ardından, tamamlandıktan sonra, nginx'i orijinal bağlantı noktasına yeniden yönlendirebilir ve mitmproksi'yi kapatabilirsiniz.
Lundberg'de

1
Tüm istekleri / yanıtları kaydedebilen modsecurity
Willem

Yanıtlar:


44

İstek gövdesinin ziyaretçiler tarafından gönderilmesini sağlamak için, günlük biçimine client_body_in_file_only on;değişken ekleyerek günlüklere yazdığı "geçici" dosyayı kullanın ve günlüğe kaydedin $request_body_file. "Geçici" dosyalar varsayılan olarak client_temp dizininde bulunur.

İstek başlıklarını $http_<header>da günlüğe kaydedebilir ve başlıklarla birlikte gönderebilirsiniz $sent_http_<header>.

Talep organınız ve başlarınız varsa, onu tekrar izleyebilmeli ve ziyaretçinizin yanıtını alabilmelisiniz.

Ayrıca böyle bir şey gor sen nginx onları tasfiye olmaz (üretimde IO sorunlarına neden olmadan bu geçici dosyaları yazmak nginx izin nerede bir diğer çevre üzerindeki trafiği yeniden böylece yüksek düşünülmelidir ono kadar da "geçici" neden yıllardan bu değerle bu durumda).


1
@jwadsack Cevabı dikkatlice okuyunuz.
Xavier Lucas,

4
@XavierLucas İki farklı yaklaşım sunduğunuzu sanıyordum. İkisini de söylediğini client_body_in_file_onlyve $http_<header>ihtiyacın olacağını bilmiyordum . Şimdi anlıyorum.
jwadsack

5
Lütfen daha kesin bir kod paylaşır mısınız?
Velkan

3
Şüphesiz $ http <header> yalnızca tüm başlık adlarını önceden biliyorsanız, kullanışlıdır
Ed Randall

2
Birisi nginx config'in asıl bir parçasını paylaşabilir mi, lütfen?
Nowaker,

17

mitmproxy , istediğinizi yapmak için doğru araç gibi görünüyor.

mitmproxy, HTTP için konsol arayüzlü, etkileşimli, SSL özellikli bir erkektir.

mitmdump, mitmproxy'nin komut satırı sürümüdür. HTTP için tcpdump'ı düşünün.

Özellikleri

  • HTTP isteklerini ve yanıtlarını durdurun ve anında değiştirin.
  • Daha sonra tekrarlama ve analiz için eksiksiz HTTP konuşmalarını kaydedin.
  • Bir HTTP görüşmesinin istemci tarafını tekrar oynatın. Önceden kaydedilmiş bir sunucunun HTTP yanıtlarını tekrarlayın.
  • Trafiği belirtilen bir sunucuya iletmek için proxy modunu ters çevirin.
  • OSX ve Linux'ta saydam proxy modu.
  • Python'u kullanarak HTTP trafiğinde kodlanmış değişiklikler yapın.
  • Anında müdahale için SSL sertifikaları oluşturulur.

Ters proxy modu, Fiddler’in yaptığı gibi isteği ve yanıtı yakalamanıza izin verir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.