На лету контролируя Запросы HTTP на сетевом интерфейсе?

Они очень похожи действительно, и использование одного или другого является больше делом вкуса. Журнал Linux имел эту дискуссию точки/контрапункта об этой точной теме здесь.

80
22.01.2011, 12:27
6 ответов

Попробовать tcpflow:

tcpflow -p -c -i eth0 port 80 | grep -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*'

Вывод похож на это:

GET /search?q=stack+exchange&btnI=I%27m+Feeling+Lucky HTTP/1.1
Host: www.google.com

Можно, очевидно, добавить дополнительные методы HTTP к grep оператору и использование sed объединить эти две строки в полный URL.

101
27.01.2020, 19:31
  • 1
    Преимущество tcpflow это, это уже доступно в репозиториях по умолчанию в Ubuntu 10.04 (justsniffer, httpry не). Информация о пакете указывает, что фрагменты IP не зарегистрированы правильно - не знают, если это имеет значение для этого варианта использования - возможно, justsniffer, может обработать их лучше. –  maxschlepzig 23.01.2011, 01:11
  • 2
    Так как Вы просто захватываете URL, не кажется, что это будет иметь значение. Tcpflow отобразит пакеты в порядке, они были получены в интерфейсе. Таким образом, если Вы пытались получить содержание файла, можно получить пакеты, которые прибывают не в порядке и произведут поврежденный файл. Но Ваш вариант использования перечислил в вопросе, я думаю, что это будет работать на Вас. Можно также расширить grep (или удалить-o) видеть больше пакетных данных для сортировки или этажерки позже. –  bahamat 23.01.2011, 02:01

Я думаю, что Wireshark способен к выполнению, что Вы хотите

Зато, это очень мощно, можно установить его через Кв. - добираются, и это идет с GUI.

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

Ввод слова 'http' в фильтр, вероятно, даст Вам, что Вы ищете (т.е. основной трафик, генерируемый пользователями).

1
27.01.2020, 19:31
  • 1
    Хотел бы знать, почему это было downvoted. Wireshark может считать интерфейс на лету и отфильтровать только к трафику HTTP. –  Kevin M 22.01.2011, 19:10
  • 2
    @Kevin M, ну, в общем, я не сделал downvote Ваш ответ. Но быть справедливым Ваш ответ является немного неполным и вне темы. 1) Это пропускает детали о том, как точно wireshark должен использоваться, т.е. что фильтр должен использоваться, точное выражение фильтра, и т.д. 2) это не допускает использование командной строки, любят коротко изложенный в вопросе - даже если я соглашаюсь с подходом GUI, дисплеи представления по умолчанию ПОЛУЧАЮТ запросы, где доменное имя не отображено рядом - с, не настолько удобно для коротко изложенного варианта использования. –  maxschlepzig 22.01.2011, 20:18
  • 3
    я имею в виду: ответ/Фобия s/your отвечает на/ –  maxschlepzig 22.01.2011, 20:27

Можно использовать httpry или Justniffer, чтобы сделать это.

httpry доступно, например, через хранилище пакетов Fedora.

Вызов в качестве примера:

# httpry -i em1

(где em1 обозначает название сетевого интерфейса),

Пример произвел:

2013-09-30 21:35:20    192.168.0.1     198.252.206.16    >    POST    unix.stackexchange.com    /posts/6281/editor-heartbeat/edit    HTTP/1.1
2013-09-30 21:35:20    198.252.206.16  192.168.0.1       < HTTP/1.1   200    OK
2013-09-30 21:35:49    192.168.0.1     198.252.206.16    >    POST    unix.stackexchange.com    /posts/validate-body                 HTTP/1.1
2013-09-30 21:35:49    198.252.206.16  192.168.0.1       < HTTP/1.1   200    OK
2013-09-30 21:33:33    192.168.0.1      92.197.129.26    >    GET     cdn4.spiegel.de    /images/image-551203-breitwandaufmacher-fgoe.jpg    HTTP/1.1

(вывод немного сокращен),

23
27.01.2020, 19:31
  • 1
    Как я могу показать заголовок или тело запроса или ответа? –  Mohammed Noureldin 07.01.2018, 12:42
[1186457] Есть также программа командной строки [1186956]urlsnarf[1186957], которая является частью пакета [1186958]dsniff[1186959] (который также упакован с e. g. Fedora 19).[12215]Пример:[12216](при просмотре сначала SE, а затем spiegel.de)[12217]Ограничения: dsnarf не поддерживает IPv6[1186961]. Я могу воспроизвести это сообщение об ошибке с 0.17 на Fedora 19. Также кажется, что он сломан под Ubuntu trusty atm (прекрасно работает под понятием).[1186464].
1
27.01.2020, 19:31

Для импорта закрытого ключа в командную строку необходимо добавить -импорт . Не требуется использовать флаг --allow-secret-key-import .

gpg --import private.key
-121--1866-

Обычно существует два варианта блокировки трафика, когда речь идет о iptables / firewalld security: DROP packet или REJECT it.

REJECT приводит к тому, что icmp-host-запрещенный пакет ICMP отправляется обратно клиенту, информируя его о том, что конечный хост отказал в подключении. Обычно приложение называет это «Соединение отклонено».

DROP приводит к тому, что конечный узел не отправляет ничего обратно в ответ на запрос TCP-соединения. Так как ничего не отправляется обратно, это кажется клиенту идентичным пакетам, которые только что были потеряны или отброшены каким-либо маршрутизатором. Поскольку клиенты обычно предпринимают несколько попыток установить соединение, это предполагает, что что-то не так с маршрутизацией в сети (что технически верно в данном случае) и сообщает о проблеме с маршрутизацией пакета по сети.

Таким образом, кажется, что брандмауэр просто отбрасывает пакеты, не выбирая отправку пакета ICMP, информирующего другой узел.

-121--86065-

Еще одним хорошим вариантом может быть nethogs

На fedora доступен среди основных пакетов, а на centos вы можете получить его через epel репо.

1
27.01.2020, 19:31

Я искал нечто подобное, но с дополнительным требованием, чтобы оно работало и для https .

Инструменты на основе pcap, такие как tcpflow httpry urlsnarf и другие tcpdump kung fu , хорошо работают для http, но с безопасными запросами вам не повезло.

Я придумал urldump , небольшую оболочку для mitmproxy .
iptables используется для перенаправления трафика на прокси, поэтому он работает прозрачно.

$ sudo urldump   
http://docs.mitmproxy.org/en/stable/certinstall.html
http://docs.mitmproxy.org/en/stable/_static/js/modernizr.min.js
https://media.readthedocs.org/css/sphinx_rtd_theme.css
https://media.readthedocs.org/css/readthedocs-doc-embed.css
https://media.readthedocs.org/javascript/readthedocs-doc-embed.js
...

См. README для получения дополнительной информации.

7
27.01.2020, 19:31

Теги

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