Просмотреть открытые порты можно двумя способами. Менее надёжный способ — опросить сетевой стек с помощью команды
netstat -an
или
lsof -i
Этот способ не очень надёжен, так как эти программы не подключаются к компьютеру по сети, а просто определяют, что происходит в системе. По этой причине, эти приложения часто подменяются нападающими. Таким способом взломщики пытаются скрыть свои следы, если они незаконно открыли порты.
Другим более надёжным способом проверки открытых портов является использование сканера портов, например Nmap.
Следующая команда, запущенная с консоли, определяет, какие порты ждут TCP-соединений из сети:
nmap -sT -O localhost
Эта команда выводит примерно следующие результаты:
Starting nmap 3.55 ( http://www.insecure.org/nmap/ ) at 2004-09-24 13:49 EDT
Interesting ports on localhost.localdomain (127.0.0.1):
: closed)
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111
(The 1653 ports scanned but not shown below are in stat
e/tcp open rpcbind
113/tcp open auth
631/tcp open ipp
834/tcp open unknown
2601/tcp open zebra
details: Linux 2.5.25 - 2.6.3
32774/tcp open sometimes-rpc11
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS or Gentoo 1.2 Linux 2.4.19 rc1-rc7)
Uptime 12.857 days (since Sat Sep 11 17:16:20 2004)
Nmap run completed -- 1 IP address (1 host up) scanned in 5,190 seconds
Здесь видно, что работает portmap, так как запущена служба sunrpc. Однако есть и некая таинственная служба, открывшая порт 834. Чтобы проверить, не связан ли этот порт с какой-либо известной службой, введите:
cat /etc/services | grep 834
Эта команда не возвращает результата. Это означает, что хотя порт находится в зарезервированном диапазоне (от 0 до 1023) и для его открытия нужны права root, он не связан ни с одной известной службой.
Затем проверьте, что о нём сообщит команда netstat
или lsof
. Чтобы проверить порт 834 с помощью netstat
, выполните следующую команду:
netstat -anp | grep 834
Команда возвращает следующий результат:
tcp 0 0 0.0.0.0:834 0.0.0.0:* LISTEN 653/ypbind
То, что команда netstat показала этот порт, успокаивает, так как злоумышленник, открывший порт на взломанном компьютере, скорее всего, не захочет, чтобы эта команда его вывела. Кроме этого, параметр [p]
показывает код процесса (PID) службы, открывшей порт. В данном случае открытый порт принадлежит RPC-службе ypbind (NIS), работающей совместно со службой portmap.
Команда lsof
показывает похожие сведения, так как она также может связать открытые порты со службами:
lsof -i | grep 834
Ниже приведена значимая часть результатов команды:
ypbind 653 0 7u IPv4 1319 TCP *:834 (LISTEN)
ypbind 655 0 7u IPv4 1319 TCP *:834 (LISTEN)
ypbind 657 0 7u IPv4 1319 TCP *:834 (LISTEN)
ypbind 656 0 7u IPv4 1319 TCP *:834 (LISTEN)
Эти инструменты позволяют узнать о состоянии работающих на компьютере служб многое. Они очень гибки и могут предоставить массу информации о сетевых службах и их конфигурации. Поэтому очень рекомендуется обратиться к страницам man
, посвящённым lsof
, netstat
, nmap
и services
.