아파치로 전체 HTTP 요청을 덤프하는 방법


27

아파치로 전체 HTTP 요청을 덤프 할 수 있습니까? 들어오는 요청의 모든 HTTP 헤더를 추적해야합니다. 그렇게하는 방법?

답변:


30

Apache 대신 원하는 것이 패킷 스니퍼라고도 하는 패킷 분석기 일 수 있다고 생각합니다 . 가장 인기있는 것 중 두 가지는 TCPDumpWireshark 일 것입니다. 둘 다 무료이며 Windows 및 * nix 운영 체제 용 버전이 있습니다. 여기에는 Apache가 보는 것뿐만 아니라 인터페이스에서 들어오는 모든 트래픽이 표시됩니다. 그러나 필터를 사용하여 http의 경우 80과 같은 지정된 포트로 제한 할 수 있습니다.

tcpdump :
서버에서 다음 명령을 실행하면 포트 80으로 향하는 모든 패킷이 표시됩니다.

sudo tcpdump -s 0 -X 'tcp dst port 80'

대문자 X 스위치는 페이로드를 16 진 및 ASCII로 덤프합니다. s 스위치가 0이면 전체 패킷을 얻는다는 의미입니다. 'tcp dst port 80'은 tcp 헤더에서 포트 80으로 향하는 패킷 만 필터링하고 표시하는 것을 의미합니다.

Wireshark :
보다 사용자 친화적 인 버전의 경우 GUI를 실행중인 경우 wireshark (공식적으로 미묘한)를 고려하십시오.


1
감사합니다 Kyle, tcpdump의 uoutput에서 HTTP 헤더 정보를 어떻게 추출합니까?
Alex

1
알렉스 : Wireshark가 그 점을 훨씬 쉽게 해줄 것입니다. -r 파일 이름 을 사용하여 덤프를 파일 에 저장 한 다음 데스크탑의 wireshark로 파일을 열 수 있습니다.
Kyle Brandt

답글을 원하면 'dst'를 삭제하십시오.
Kyle Brandt

1
-A텍스트 전용 (16 진수 덤프 없음) :sudo tcpdump -A -s 0 'tcp dst port 80'
Brent Faust

12

쿠키 덤핑 ? 그렇지 않으면 -mod_dumpio보십시오 .


1
mod_dumpio가 멋지게 들립니다! 아마도 SSL을 사용하면 정보를 덤프하는 가장 쉬운 방법 일 것입니다 (wirehsark도 그렇게 할 수 있음). +1 :-)
Kyle Brandt

8

기본 패킷 스니핑은 ngrep과 tcpdump 및 grep의 하이브리드를 사용하면 쉽습니다. 특정 시나리오에서 웹 브라우저가 웹 서버와 통신하는 방법을보고 HTTP 헤더를 검사하려는 경우.
이 예제에서는 다음과 같이 웹 서버에서 ngrep을 실행하십시오.

$ ngrep port 80

다음과 같이 http 요청을 "GET /"요청으로 포트 80으로 필터링하도록 선택할 수도 있습니다.

$ ngrep -q '^GET .* HTTP/1.[01]'

클라이언트 측에는 Tamper Data라는 유용한 도구가 있습니다.이 도구는 나가는 HTTP 요청을보고 기록하고 수정할 수있는 기능을 제공하는 Firefox 확장입니다.
자세한 내용은 여기를 참조 하십시오


7

tcpdump 또는 wireshark를 사용하는 대신 tcpflow를 사용하십시오. tcpdump의 대체품이지만 모든 연결의 각 측면에 파일을 생성하므로 스트림을 직접 디코딩하지 않아도됩니다.


고마워 나는 mod_negotiate를 사용하고 있으며 curl ()은 브라우저가 .php를 찾은 동안 .php보다 .bak 파일을 선택했습니다. 딱딱한 너트.
mckenzm

0

아파치는 그 기능을 내장하고있다. 로그 수준trace7또는로 늘리십시오 trace8.

LogLevel trace8

이것은 많은 데이터를 덤프합니다 . 경고를 받았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.