Определение открытых портов
5.8. Определение открытых портов
После настройки сетевых служб важно обратить внимание на порты, принимающие подключения на сетевых интерфейсах. Любые открытые порты могут быть доказательством вторжения.
Просмотреть открытые порты можно двумя способами. Менее надёжный способ — опросить сетевой стек с помощью команды 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): (The 1653 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 111/tcp open rpcbind 113/tcp open auth 631/tcp open ipp 834/tcp open unknown 2601/tcp open zebra 32774/tcp open sometimes-rpc11 Device type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.5.25 - 2.6.3 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 656 0 7u IPv4 1319 TCP *:834 (LISTEN) ypbind 657 0 7u IPv4 1319 TCP *:834 (LISTEN) |
Эти инструменты позволяют узнать о состоянии работающих на компьютере служб многое. Они очень гибки и могут предоставить массу информации о сетевых службах и их конфигурации. Поэтому очень рекомендуется обратиться к страницам man, посвящённым lsof, netstat, nmap и services.