Этот вопрос похож на Сетевой порт открыт, но процесс не подключен? и netstat показывает порт прослушивания без pid, а lsof - нет
Я пробовал все, что могу (как root: netstat, lsof, ls -al / proc / * / fd и т. Д.), Но не могу найти pid.
В любом случае, мне нужно закрыть или освободить порт без pid, потому что мой процесс хочет его прослушивать. В любом случае это сделать?
Я не хочу перезагружать сервер. Поскольку в моей системе есть процесс, он обновит файлы bin на всех моих серверах, а затем автоматически развернет все серверы. Развертывание завершится неудачно, если будет прослушиваться 7123 или другие порты.
Спасибо.
В этой ситуации есть три сервера, все они являются серверами Rackspace, и весь «плохой порт» - это порт udp 7123.
Перезагрузка может решить эту проблему, я пробовал ее на одном из этих трех серверов. Но я не хочу перезагружать сервер.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 213120 0 134.213.205.214:7123 0.0.0.0:* -
Результат Nmap показывает, что этот порт не закрыт. (@ Enzo)
root@auto:~# nmap 134.213.205.214 -p 7123 -sU
Starting Nmap 6.40 ( http://nmap.org ) at 2018-04-16 12:01 UTC
Nmap scan report for auto (134.213.205.214)
Host is up.
PORT STATE SERVICE
7123/udp open|filtered unknown
Nmap done: 1 IP address (1 host up) scanned in 2.12 seconds
На данный момент перезагрузка - единственный способ закрыть / освободить этот порт. Но перезагрузка - плохая идея, она останавливает службу.
Возможно, ваша система работает в несогласованном состоянии. Я бы начал с базовой диагностики.
Проверьте сокет UDP и его процесс.
Бегать sudo netstat -lunp
или sudo ss -lunp
чтобы узнать, занят ли этот UDP-сокет (порт 7123). sudo
необходим для нормальный пользователь, чтобы повысить привилегии и увидеть PID и имя процесса, который "слушание"в этом порту. Без sudo
там будет -
вместо PID и имени процесса. Обратите внимание на PID. Если ничего не указано в списке, вы можете начать думать, что ваша система была скомпрометирована, поскольку процесс способен скрывать свое имя, манипулируя внутренними структурами ядра для процессов!
Если вы не видите PID с высокими привилегиями, вам лучше изолировать этот сервер, поскольку он, вероятно, был скомпрометирован и взломан.
Проверьте, идет ли процесс прослушивания "говорящий"
Я предлагаю использовать Nmap или более общий netcat инструмент. С участием nmap
вы можете попробовать эту команду:
sudo nmap -sV -v -Pn -sU -p U:7123 134.213.205.214
Он пытается понять протокол, используемый для порта UDP: 7123. sudo
требуется для конкретного типа сканирования (сканирование службы UDP). Если вы видите данные, которые не соответствуют тому, что вы ожидаете, то, вероятно, процесс либо не работает, либо находится в несогласованном состоянии. Или он был заменен другим (вредоносным?) Кодом.
С участием netcat
вам потребуется ручное вмешательство для генерации трафика на сервер:
netcat -u 134.213.205.214 7123
Все, что вы наберете, будет отправлено в ваше приложение через порт UDP: 7123. Вы также можете передать некоторые случайные данные (но не ожидайте значимого результата) с помощью:
cat /dev/urandom | netcat -u 134.213.205.214 7123
Проверьте журналы системы и приложений (если есть)
Первые обычно хранятся в /var/log/
каталог. Журнал приложений может быть где угодно. Инструмент lsof
может помочь, если вы проверите PID во втором столбце. Я буду следить за этими журналами во время последующих действий.
Проверьте таблицу процессов для этого PID
Команда ps
может предоставить много деталей о процессах. Мой личный фаворит:
PS_FORMAT="ruser,pid,ppid,s,%cpu,rss,cmd" ps ax --sort=pid
Во втором столбце вы можете увидеть PID, который вы ищете, а также реальный идентификатор пользователя (рузер, 1-й столбец), родительский PID (ppid, 3-й столбец), положение дел (s, 4-й), % Использование процессора (% cpu, 5-й), размер резидентского набора (rss, 6th) и командная строка с аргументами (cmd, 7-й). На мой взгляд, именно в этом случае ключевыми значениями являются статус процесса (это одна буква) и процент использования процессора, а также командная строка.
Проверить на страница руководства для всех деталей для ps
и для точной настройки вывода.
Проверьте двоичные файлы
Если у вас есть другая машина с такой же архитектурой и ОС и тот же процесс, работающий ожидаемым образом, вы можете проверить, соответствуют ли двоичные файлы побайтно. Если это не так, вам лучше переустановить эти двоичные файлы из известного безопасного источника.
Предположим, программа /usr/local/bin/myserver
.
Рассчитайте и запишите его контрольную сумму. Что-то вроде этого:
sha512sum /usr/local/bin/myserver
Если программа была скомпилирована для использования динамических библиотек, вы также должны проверить их. Список используемых динамических библиотек получается с помощью:
ldd /usr/local/bin/myserver
Будьте осторожны: вывод может быть довольно длинным, но для каждой строки вы должны вычислить и записать контрольную сумму для сравнения.
В случае обнаружения каких-либо несоответствий с эталонной доверенной системой я предлагаю переустановить всю систему и приложения. Это радикальный подход, но я считаю, что целевой системе больше нельзя доверять.
Убейте и перезапустите процесс
Я бы попытался убить мошеннический процесс (при условии, что вы знаете его PID) и перезапустить его, чтобы проверить, сохраняется ли мошенническое поведение. Чтобы убить процесс с учетом его PID, вы можете запустить:
sudo kill -s SIGKILL <PID>
Я должен вас предупредить, что есть ряд случаев, когда процесс не умирает или умирает позже, чем ожидалось. Это в основном зависит от статуса процесса, отображаемого ps
команда, запущенная ранее. На указанной странице руководства содержится некоторая информация о столбце состояния процесса в параграфе «КОДЫ СОСТОЯНИЯ ПРОЦЕССА».
Используйте команду ps
чтобы еще раз проверить статус процесса. Обычно он должен быть удален в течение нескольких секунд и исчез из списка процессов.
После того, как процесс был остановлен, вы можете попробовать перезапустить его и посмотреть, повторяется ли мошенническое поведение.
Как правило, если вы ничего не меняете в системе, поведение тоже не изменится. То есть простая перезагрузка приложения или системы вряд ли решит проблему: она просто будет продвинута вперед во времени.