Найти в Дзене
Сисадмин

Ищем запущенные сервисы в Linux Debian / Ubuntu и их порты

Оглавление
Ищем запущенные сервисы в Linux Debian / Ubuntu и их порты
Ищем запущенные сервисы в Linux Debian / Ubuntu и их порты

Ну что ж, давай разберёмся, что у тебя там в системе лишнего залипает на портах, потому что кто его знает, быть может там уже бэкдор, а ты и не в курсе.... Особенно на нестандартных портах, чтобы потом не было:

"Ой, это не я слушаю на 8080, это какой-то другой процесс..."

Так вот — сейчас мы их всех выведем на чистую воду.

Порт за портом. Демон за демоном.

Способ №1: ss — старший брат netstat, который ест гвозди

sudo ss -tulpen

Что это делает:

  • t — tcp
  • u — udp
  • l — listening (чтоб не ловить рандомные коннекты)
  • p — покажи, какая тварь сидит на порту
  • e — extended info (для маньяков)
  • n — не пытайся переводить порты в имена (нам надо 80, а не "http-alt")

Пример вывода:

Netid State Local Address:Port PID/Program name
tcp LISTEN 0.0.0.0:22 678/sshd
tcp LISTEN 0.0.0.0:3306 1011/mysqld
tcp LISTEN 0.0.0.0:8080 9999/java

Вот тебе сразу список: кто, на чём, под каким PID-ом, и что он задумал.

Способ №2: lsof — лорд всех открытых файлов

sudo lsof -i -P -n | grep LISTEN

Объясняю как в школе:

  • -i — покажи мне, кто работает с сетью
  • -P — покажи номера портов, а не вот это вот "ssh", "mysql"
  • -n — не пытайся резолвить IP в DNS (мы не на экскурсии)
  • grep LISTEN — мне не интересны входящие соединения, покажи только слушающих

Пример:

sshd 678 root 3u IPv4 1234 TCP *:22 (LISTEN)
mysqld 1011 mysql 7u IPv4 5678 TCP *:3306 (LISTEN)

Ты такой: АХА! Вот ты где, MySQL! Сидишь на 3306 и делаешь вид, что не при делах!

Способ №3: netstat — олдскул, но могёт

Если ты такой:

“я ещё с RHEL 5 начинал, не надо ваших ss и lsof, дайте мне netstat!”

Пожалуйста:

sudo netstat -tulpen

Да, он старый. Да, он не всегда установлен. Но если есть — работает как старый УАЗик: шумно, медленно, но едет.

А какие вообще сервисы у тебя в системе бегают?

Чтобы посмотреть, какие systemd-сервисы активны — запускаем:

systemctl list-units --type=service --state=running

Ты увидишь:

systemctl list-units --type=service --state=running
systemctl list-units --type=service --state=running

Понимаешь? Кто реально активен, а не просто валяется в /etc/init.d, делая вид, что работает.

Хочешь и порты, и процессы, и файлы, и чтобы всё было красиво?

Врубай htop, нажми F4, впиши LISTEN — и кайфуй.

Или поставь
glances — он тебе вообще скажет, если у тебя CPU перегревается, пока ты ищешь кто на 80 порту сидит.

Бонус: ты подозреваешь, что кто-то крадёт порт?

Проверка на крыс в сети:

sudo fuser -n tcp 80

Если выведет PID — значит, там кто-то сидит и хрустит твоими байтами.

Ультимативная команда для ленивых богов DevOps’а

sudo ss -tulpen | awk '{print $5, $7}' | grep -v '^$' | sort | uniq

Выдаст тебе порт и процесс. Минимализм, Zen и страдания демонов.

Что запомнить:

  • ss — это твой бинокль в мир портов
  • lsof — покажет, кто за что отвечает
  • systemctl — раскроет список активных служб
  • fuser — палит на месте преступления
  • никогда не доверяй nginx, который ничего не слушает