Назад | Перейти на главную страницу

Как узнать, для какого процесса открыт конкретный порт в Linux?

Я запустил nmap на своем сервере и обнаружил, что странный порт открыт. Я пытаюсь выяснить, есть ли способ сопоставить этот порт с конкретным процессом, но понятия не имею, есть ли такой инструмент.

Какие-либо предложения?

Как и Netstat, упомянутый в других сообщениях, команда lsof должна прекрасно справиться с этим. Просто используйте это:

lsof -i :<port number>

и должны появиться все процессы. Я довольно часто использую его в OS X.

Статья администрирования Debian для lsof

Предупреждение: ваша система взломана.

Вам нужен инструмент lsof, в котором будут перечислены файлы (а также сокеты и порты). Скорее всего, он установлен, и это, скорее всего, версия злоумышленника, а значит, будет ложь тебе.

Это действительно руткит. Я видел такое поведение раньше, и это всегда руткит. Ваша система скомпрометирована, и нельзя доверять любым используемым вами инструментам, созданным с той же машины. Загрузитесь с Live CD (который имеет доверенные двоичные файлы только для чтения) и используйте его для извлечения ваших данных, настроек и т. Д. Любые программы, которые у вас были, любые скрипты, которые у вас были, оставь их. Не приноси их. Относитесь к ним и к системе, как к проказе, потому что они делать.

Как только вы закончите, сбить его с орбиты.

Сделайте это как можно скорее. Да, и отключите сетевое соединение - запретите доступ злоумышленнику.

sudo netstat -lnp  

Перечисляет порты, которые прослушивают входящие соединения, и связанный процесс, у которого порт открыт.

netstat -anp

"-P" указывает ему, что нужно перечислить ID процесса, у которого открыт порт. Параметр -an указывает ему перечислить порты прослушивания и не разрешать имена. В загруженных системах это может значительно увеличить скорость возврата.

netstat -anp | grep "СПИСОК"

Это просто даст вам открытые порты.

Если вы не видите порт, открытый средствами операционной системы, и подозреваете вторжение, возможно, был установлен руткит.

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

Вы можете проверить наличие руткита с помощью нескольких автоматизированных инструментов. 'apt-cache search rootkit' в Ubuntu показывает следующее:

chkrootkit - rootkit detector
rkhunter - rootkit, backdoor, sniffer and exploit scanner
unhide - Forensic tool to find hidden processes and ports

Если у вас есть руткит, вы можете вернуть «измененное» к вашей системе, но я рекомендую вам выяснить, как было совершено вторжение, и укрепить систему, чтобы оно не повторялось.


Они не являются эксклюзивными для Ubuntu, вы также можете использовать их в CentOS. Просто найдите пакет или загрузите его со своей страницы.


Судя по выходным данным этого порта, похоже, что вы действительно используете pcanywhere: «�Ы� <Enter>» очень похоже на «Пожалуйста, нажмите <Enter>», которое является приветственным сообщением pcanywhere. Я не знаю, почему процесс не отображается в списке процессов. Вы root?

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

Чтобы объяснить ответ @bjtitus, вы можете получить очень подробную информацию, например:

$ lsof -i :8000
COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
squid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)

$ ps -fp 1289
UID        PID  PPID  C STIME TTY          TIME CMD
proxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf

Я сразу вижу, что кальмар - это процесс, но на самом деле это мой squid-deb-proxy что занимает порт.

Еще один хороший пример Java-приложения:

$ lsof -i :4242
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)

$ ps -fp 3075
UID        PID  PPID  C STIME TTY          TIME CMD
root      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl

Вы можете видеть в lsof (LiSt Open Files), что это java, что бесполезно. Запуск ps с PID сразу видно, что это CrashPlan.