Nmap - отличный сканер портов, но иногда вам хочется чего-то более авторитетного. Вы можете спросить ядро, какие процессы имеют какие порты открывать, используя netstat
утилиту:
me @ myhost: ~ $ sudo netstat -tlnp
Активные интернет-соединения (только серверы)
Proto Recv-Q Send-Q Локальный адрес Внешний адрес Состояние PID / Название программы
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1004 / dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 380 / sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 822 / cupsd
tcp6 0 0 ::: 22 ::: * СЛУШАТЬ 380 / sshd
tcp6 0 0 :: 1: 631 ::: * LISTEN 822 / cupsd
Варианты, которые я дал:
-t
Только TCP
-l
Только прослушивающие порты
-n
Не ищите имена сервисов и хостов, просто отображайте номера
-p
Показать информацию о процессе (требуется привилегия root)
В этом случае мы можем видеть, что sshd
прослушивает любой 0.0.0.0
порт интерфейса ( ) 22 и cupsd
прослушивает 127.0.0.1
порт 631 loopback ( ). Ваш вывод может показать, что telnetd
имеет локальный адрес 192.168.1.1:23
, то есть он не будет отвечать на соединения на адаптере обратной связи (например, вы не можете telnet 127.0.0.1
).
Существуют и другие инструменты, которые отображают аналогичную информацию (например, lsof
или /proc
), но netstat является наиболее широко доступным. Это даже работает на Windows ( netstat -anb
). Netstat в BSD немного отличается: вам придется использовать sockstat (1) для получения информации о процессе.
Если у вас есть идентификатор процесса и имя программы, вы можете найти процесс и убить его, если хотите закрыть порт. Для более детального управления вы можете использовать брандмауэр (iptables в Linux), чтобы ограничить доступ только определенными адресами. Возможно, вам придется отключить запуск службы. Если PID в Linux означает «-», это, вероятно, процесс ядра (например, это характерно для NFS), так что удачи в выяснении, что это такое.
Примечание: я сказал «авторитетный», потому что вам не мешают условия сети и брандмауэры. Если вы доверяете своему компьютеру, это здорово. Однако, если вы подозреваете, что вас взломали, вы не сможете доверять инструментам на своем компьютере. Замена стандартных утилит (а иногда даже системных вызовов) на те, которые скрывают определенные процессы или порты (или руткиты), является стандартной практикой для злоумышленников. Лучше всего на этом этапе сделать криминалистическую копию вашего диска и восстановить ее из резервной копии; затем используйте копию, чтобы определить, как они вошли, и закройте ее.
localhost
осуществляется доступ кlo
интерфейсу (loopback). IP-адрес получает доступ к вашему реальному интерфейсу, возможно,eth0
илиwlan0
или как-то так.