Я заметил, что после удаления динамического ipv6 из файла ipse.conf туннель открыт !
Предлагаю несколько улучшений для скрипта удаленного захвата трафика:
предотвращение CTRC + C от уничтожения вашего скрипта:
Это можно сделать с помощью ловушки для поимки SIGINT
. Обычно вы размещаете его в начале вашего сценария. См. этот пример:
trap "pkill ssh" INT
Очевидно, что фильтр для получения только того ssh, который вам нужен, можно улучшить.
Фильтрация связи с удаленным компьютером из этого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
.
Ограничение количества пакетов в tcpdump
, чтобы избежать постоянного использования CTRC + C .
Если вы хотите захватить только небольшой набор трафика, вам следует ограничить количество tcpdump
пакетов, захватываемых tcpdump
.
Например, для захвата 100 пакетов и возврата:
tcpdump -c 100 -w -
Ограничение tcpdump
по времени, чтобы избежать постоянного использования CTRC + C .
Если вы хотите захватить 5 минут (300 секунд )трафика, используйте команду timeout
на удаленной стороне.Как и в:
ssh "timeout 300 tcpdump -w -"
Бросить эту оболочку
Вы используете оболочку, потому что вам нужна $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 -"
разбуферизацияtcpdump
tcpdump
по tcpdump
по stdout
буферизуется. Чтобы отменить буферизацию, чтобы быстрее получать данные с удаленного хоста и меньше терять данные при прерывании, используйте-l
:
/usr/bin/tcpdump -i eth5.1 -s 0 -n -v -U -l -w -
Это может быть полезным или бесполезным в вашем случае, проведите несколько тестов. Он обязательно оставит вам больше данных, если вы прервете его с помощью CTRL -C.
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
Бросить этоsshpass
Используйте ключи ssh для аутентификации вместо пароля.
Наконец, если делать это более профессионально, рассмотрите возможность использования агента + профессиональные услуги.
Вы можете сделать это с помощью 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.