Как безопасно получить или копировать входящие запросы к веб-серверу

Rackable/SGI также делают настройки (чипсет, CPU, и т.д.) при упорядочивании тысяч из тех затем, это не должно быть проблемой - я говорил бы с ними об определенных потребностях.

1
задан 8 April 2013 в 12:18
3 ответа

Я бы использовал tcpdump или ngrep , было бы неплохо, чтобы порт на коммутаторе, подключенный к веб-серверу, был зеркальным, но в отсутствие из этого вы можете запустить ngrep или tcpdump на самом сервере.

Вам потребуется доступ суперпользователя для запуска любой из этих программ.

Вы захотите немного прочитать, так как вы, очевидно, знаете, что ищете в трафике, ngrep действительно позволяет вам выбирать трафик с помощью регулярного выражения, что может позволить вам выбирать пакеты с большей точностью.

ngrep -l -q -d eth0 "^ POST" tcp и порт 80 -O dump.file

Это даст вам любые HTTP-данные, отправленные на порт 80 на eth0. Возможно, вам удастся выбрать что-то более конкретное. Если вы собираетесь читать трафик прямо из файла, вы можете захотеть добавить -W byline , так как это делает пакеты более читаемыми, поскольку учитывает разрывы строк, так что вы можете видеть пакет, записанный более логично (для людей). -O dump.file запишет вывод захвата вашего пакета в файл. Вывод может быть настолько подробным, насколько вы хотите, чтобы воспроизвести пакеты, посмотрите tcpreplay

1
ответ дан 3 December 2019 в 18:56

Самый простой и безопасный способ перехвата - просто запустить анализатор пакетов, как вы предложили. Если вы просто выполните поиск в Интернете по запросу «воспроизвести HTTP-запросы», вы получите любое количество программ, которые могут захватывать, а затем воспроизводить ваши запросы. Для этого есть и профессиональные инструменты, например «LoadRunner», который я использую на работе.

Если вы не хотите устанавливать дополнительное программное обеспечение, вы можете использовать tcpdump -s0 -w / path / to / output.file для захвата трафика. Это даст вам файл, из которого вы можете читать, используя "tcpdump -A -r /path/to/output.file", предположительно с использованием таких фильтров, как "dst = ip.to.webserver". Но тогда вам понадобится что-то, чтобы воспроизвести это.

Вот пример того, как я использую tcpdump на localhost:

$ tcpdump -i lo0 -s0 -w /tmp/tcpdump.out

тем временем я захожу на веб-сайт на localhost из другого окна; как только это закончится, я нажму ctrl-c, чтобы остановить tcpdump

$ sudo tcpdump -r /tmp/tcpdump.out  -t -q -n -A 'tcp dst port 80 and  (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
reading from file /tmp/tcpdump.out, link-type EN10MB (Ethernet)
IP 127.0.0.1.57499 > 127.0.0.1.http: tcp 122
E.....@.@.P............P.zE................
.9...9..GET /~dyho01/ HTTP/1.0
User-Agent: Wget/1.11.4 Red Hat modified
Accept: */*
Host: localhost
Connection: Keep-Alive

Вы, вероятно, могли бы получить ту же информацию, открыв необработанный файл tcpdump в программе Windows, такой как wirehark.

1
ответ дан 3 December 2019 в 18:56

Опция сниффера пакетов хороша, пока в соединении не используется шифрование, тогда вы будете SOL. В этом случае вам понадобится модель прокси для захвата, где пользователи подключаются к прокси с помощью SSL, принимают сертификат прокси, а затем соединение с прокси снова выполняется по протоколу SSL на целевой хост. Инструменты тестирования, такие как LoadRunner, Jmeter или подобные, были бы хороши для записи разговора через прокси-сервер для одного пользователя, чтобы вы могли изучить структуру передаваемой информации, но были бы непрактичными для производственного использования несколькими пользователями.

Я бы посмотрел для пакета прокси-сервера, где вы можете настроить прокси для вывода запросов в журнал для целей анализа.

1
ответ дан 3 December 2019 в 18:56

Теги

Похожие вопросы