it-swarm-ru.tech

Как определить, какой процесс имеет определенный порт, открытый в Linux?

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

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

32
jnman

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

lsof -i :<port number>

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

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

57
bjtitus

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

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

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

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

Game over man, game over.

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

23
Avery Payne
Sudo netstat -lnp  

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

14
Joe

netstat -anp

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

netstat -anp | Греп "СПИСОК"

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

4
sysadmin1138

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

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

Вы можете проверить руткит с помощью нескольких автоматизированных инструментов. '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. Просто найдите пакет или загрузите его со своей страницы.


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

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

4
chmeee

Чтобы разъяснить ответ @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 - это процесс, но на самом деле это мой 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.

0
ErebusBat