Ну что ж, давай разберёмся, что у тебя там в системе лишнего залипает на портах, потому что кто его знает, быть может там уже бэкдор, а ты и не в курсе.... Особенно на нестандартных портах, чтобы потом не было:
"Ой, это не я слушаю на 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
Ты увидишь:
Понимаешь? Кто реально активен, а не просто валяется в /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, который ничего не слушает