
Я смотрел на netstat
вывод на MacBook. Я заметил, что некоторые приложения позволяют вам указать, какой порт они используют. Например, utorrent
позволяет вам сделать это. Я выбрал порт 55743, затем запустил netstat | grep 55743
, и вывод был следующим.
udp6 0 0 *.55743 *.*
udp4 0 0 *.55743 *.*
Когда я выхожу, utorrent
порт освобождается. Но если я не знаю номер порта, то как я могу узнать, какое приложение использует какой порт? И возможно ли, что некоторые приложения тайно используют порты для связи с внешними серверами-устройствами?
решение1
Как Дэвид Хоуд упомянул, lsof -i
ваш друг дает вам снимок текущих соединений/операций сокетов. К сожалению, на OS X netstat
эта функция не поддерживается.
Другие варианты включают в себя:
Activity Monitor.app
позволяет вам видеть файлы и порты, открытые приложением. Это можно сделать, дважды щелкнув по процессу и открыв вкладку «Открытые файлы и порты».
Dtrace - проверитьsoconnectскрипт, который предоставляет вам постоянную информацию о сетевых операциях, пока вы не выйдете (control+c). Пример вывода:
sudo /tmp/soconnect.d
PID PROCESS FAM ADDRESS PORT LAT(us) RESULT
8211 X-Lite 2 192.168.1.109 5060 25 Success
4112 Google Chrome 2 173.194.34.134 443 53 In progress
8211 X-Lite 2 192.168.1.109 5060 30 Success
Одно приложение, которое мне лично очень нравится, это little snitch, но оно, как оказалось, является коммерческим программным обеспечением. Хотя это программное обеспечение для настольного брандмауэра, у него есть ряд функций, которые могут быть вам интересны:
- сетевой монитор, который сообщает, какие приложения куда подключаются (в некотором роде похоже на вывод soconnect.d)
- захват сетевого трафика для каждого приложения (т.е. аналогично Wireshark, вы можете наблюдать за сетевым трафиком, но ограничить его только определенным приложением)
Отвечая на ваш второй вопрос - да, в традиционных операционных системах (например, OS X, Windows) приложения имеют возможность подключаться к сторонним системам различными способами и отправлять что угодно. Ряд настольных брандмауэров пытаются решить эту проблему, позволяя вам указать, куда каждое приложение может подключаться, таким образом, имея своего рода белый список. Как и все остальное в безопасности, этот подход не лишен своих подводных камней.
ps. Я не имею никаких связей с поставщиками программного обеспечения для настольных брандмауэров :)
решение2
Этого можно добиться с помощью дополнительных аргументов netstat или с помощью lsof:
netstat -lp
lsof -i udp:55743