Stop CTRL + C Exing Local Script What Running tcpdump in Remote Machine

Я заметил, что после удаления динамического ipv6 из файла ipse.conf туннель открыт !

1
03.02.2019, 08:02
1 ответ

Предлагаю несколько улучшений для скрипта удаленного захвата трафика:

  1. предотвращение CTRC + C от уничтожения вашего скрипта:

    Это можно сделать с помощью ловушки для поимки SIGINT. Обычно вы размещаете его в начале вашего сценария. См. этот пример:

    trap "pkill ssh" INT
    

    Очевидно, что фильтр для получения только того ssh, который вам нужен, можно улучшить.

  2. Фильтрация связи с удаленным компьютером из этогоtcpdump

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

    Таким образом, вашему tcpdumpможет потребоваться отфильтровать связь между локальным и удаленным компьютером. Используйте что-то похожее на:

    /usr/bin/tcpdump -i eth5.1 -s 0 -n -v -U -w - "not port 22"
    

    или:

    /usr/bin/tcpdump -i eth5.1 -s 0 -n -v -U -w - "not my_local_host"
    

    Это может уменьшить медлительность и нестабильность, поэтому сценарий будет работать лучше. См. также ниже пункт об использовании nc.

  3. Ограничение количества пакетов в tcpdump, чтобы избежать постоянного использования CTRC + C .

    Если вы хотите захватить только небольшой набор трафика, вам следует ограничить количество tcpdumpпакетов, захватываемых tcpdump.

    Например, для захвата 100 пакетов и возврата:

    tcpdump -c 100 -w -
    
  4. Ограничение tcpdumpпо времени, чтобы избежать постоянного использования CTRC + C .

    Если вы хотите захватить 5 минут (300 секунд )трафика, используйте команду timeoutна удаленной стороне.Как и в:

    ssh "timeout 300 tcpdump -w -"
    
  5. Бросить эту оболочку

    Вы используете оболочку, потому что вам нужна $PATH для вызова tcpdump. Вместо этого вызовите полный путь tcpdump.

    Как в:

    sshpass -p $password ssh -T $username@$ip_address -p 30007 "/usr/bin/tcpdump -i eth5.1 -s 0 -n -v -U -w -"
    
  6. разбуферизацияtcpdump

    Выход с

    tcpdumpпо tcpdumpпо stdoutбуферизуется. Чтобы отменить буферизацию, чтобы быстрее получать данные с удаленного хоста и меньше терять данные при прерывании, используйте-l:

    /usr/bin/tcpdump -i eth5.1 -s 0 -n -v -U -l -w -
    

    Это может быть полезным или бесполезным в вашем случае, проведите несколько тестов. Он обязательно оставит вам больше данных, если вы прервете его с помощью CTRL -C.

  7. SSH не используется для получения дампов трафика. Вместо этого используйте netcat.

    Если у вас нет таких строгих требований к безопасности, например. захват внутри вашей собственной сети, и если брандмауэр (с )блокирует порты на пути между двумя хостами, отбросьте этот SSH для получения обратно tcpdumpвывода. Это протокол с большим объемом вычислений, и он будет мешать, если вам нужно захватить больший объем удаленного трафика. Вместо этого используйте nc, чтобы получить данные tcpdump.

    Как на локальной машине:

    nc -l -p 20000 > capture.dump &
    

    Удаленная машина:

    ssh remote "/usr/bin/tcpdump -w - | nc IP_local_machine 20000" > /dev/null
    
  8. Бросить этоsshpass

    Используйте ключи ssh для аутентификации вместо пароля.

  9. Наконец, если делать это более профессионально, рассмотрите возможность использования агента + профессиональные услуги.

    Вы можете сделать это с помощью cshark.

    Capture traffic and upload it directly to CloudShark for analysis. Use the CloudShark service at https://www.cloudshark.org or your own CloudShark appliance.

1
27.01.2020, 23:42

Теги

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