Для поиска процессов связанных с номерами портов вы можете использовать следующие программы:
-
netstat - консольный инструмент отображающий сетевые соединения, таблицы маршрутизации и много статистических данных сетевых интерфейсов. -
fuser - утилита, идентифицирующая процессы, которые используют указанные файлы или сокеты. -
lsof - утилита, служащая для вывода информации о том, какие файлы используются теми или иными процессами в Linux / UNIX. - Файловая система /proc/$pid/ - В Linux /proc включает в себя каталог для каждого запущенного процесса (включая процессы ядра) в /proc/PID, содержащий информацию о этих процессах, в частности включает имя процесса, открывшего порт.
Пример netstat
Введите следующую команду:
# netstat -tulpn
Примерный вывод:
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1138/mysqld tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 850/portmap tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1607/apache2 tcp 0 0 0.0.0.0:55091 0.0.0.0:* LISTEN 910/rpc.statd tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1467/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 992/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1565/cupsd tcp 0 0 0.0.0.0:7000 0.0.0.0:* LISTEN 3813/transmission tcp6 0 0 :::22 :::* LISTEN 992/sshd tcp6 0 0 ::1:631 :::* LISTEN 1565/cupsd tcp6 0 0 :::7000 :::* LISTEN 3813/transmission udp 0 0 0.0.0.0:111 0.0.0.0:* 850/portmap udp 0 0 0.0.0.0:662 0.0.0.0:* 910/rpc.statd udp 0 0 192.168.122.1:53 0.0.0.0:* 1467/dnsmasq udp 0 0 0.0.0.0:67 0.0.0.0:* 1467/dnsmasq udp 0 0 0.0.0.0:68 0.0.0.0:* 3697/dhclient udp 0 0 0.0.0.0:7000 0.0.0.0:* 3813/transmission udp 0 0 0.0.0.0:54746 0.0.0.0:* 910/rpc.statd
TCP port 3306 открыт процессом mysqld имеющий PID # 1138. Вы можете проверить это используя /proc, введя:
# ls -l /proc/1138/exe
Примерный вывод:
lrwxrwxrwx 1 root root 0 2010-10-29 10:20 /proc/1138/exe -> /usr/sbin/mysqld
Для фильтрации выводимой информации вы можете использовать команду grep:
# netstat -tulpn | grep :80
Пример вывода:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1607/apache2
Команда fuser
Чтобы найти PID процессов открывших 7000-й tcp порт, введите:
# fuser 7000/tcp
Пример вывода:
7000/tcp: 3813
Наконец, найдём имя процесса ассоциированного с PID # 3813, введя:
# ls -l /proc/3813/exe
Пример вывода:
lrwxrwxrwx 1 vivek vivek 0 2010-10-29 11:00 /proc/3813/exe -> /usr/bin/transmission
/usr/bin/transmission это bittorrent-клиент, введите:
# man transmission
или
# whatis transmission
Пример вывода:
transmission (1) - a bittorrent client
Задача: найти текущий рабочий каталог процесса
Найти текущий рабочий каталог процесса bittorrent или pid 3813 можно введя:
# ls -l /proc/3813/cwd
Пример вывода:
lrwxrwxrwx 1 vivek vivek 0 2010-10-29 12:04 /proc/3813/cwd -> /home/vivek
Или используя команду pwdx, ввести:
# pwdx 3813
Пример вывода:
3813: /home/vivek
Задача: узнать владельца процесса:
Чтобы узнать владельца процесса с PID 3813 используйте следующую команду:
# ps aux | grep 3813
Или
# [URL=http://www.cyberciti.biz/tips/grepping-ps-output-without-getting-grep.html]ps aux | grep '[3]813'[/URL]
Пример вывода:
vivek 3813 1.9 0.3 188372 26628 ? Sl 10:58 2:27 transmission
Или попытайтесь с ps следующей командой:
# ps -eo pid,user,group,args,etime,lstart | grep '[3]813'
Пример вывода:
3813 vivek vivek transmission 02:44:05 Fri Oct 29 10:58:40 2010
Другая опция это /proc/$PID/environ, введите:
# cat /proc/3813/environ
Или
# grep --color -w -a USER /proc/3813/environ
Пример вывода (не забудьте опцию --colour):
Примеры с командой lsof
Введите команду следующим образом:
lsof -i :portNumber lsof -i tcp:portNumber lsof -i udp:portNumber lsof -i :80 lsof -i :80 | [COLOR=purple]grep[/COLOR] LISTEN
Пример выводов:
apache2 1607 root 3u IPv4 6472 0t0 TCP *:www (LISTEN) apache2 1616 www-data 3u IPv4 6472 0t0 TCP *:www (LISTEN) apache2 1617 www-data 3u IPv4 6472 0t0 TCP *:www (LISTEN) apache2 1618 www-data 3u IPv4 6472 0t0 TCP *:www (LISTEN) apache2 1619 www-data 3u IPv4 6472 0t0 TCP *:www (LISTEN) apache2 1620 www-data 3u IPv4 6472 0t0 TCP *:www (LISTEN)
Теперь получите больше информации о pid # 1607 или 1616 и так далее:
# ps aux | grep '[1]616'
Пример вывода:
www-data 1616 0.0 0.0 35816 3880 ? S 10:20 0:00 /usr/sbin/apache2 -k start
Я рекомендую следующую команду для получения информации о pid # 1616:
# ps -eo pid,user,group,args,etime,lstart | grep '[1]616'
Пример вывода:
1616 www-data www-data /usr/sbin/apache2 -k start 03:16:22 Fri Oct 29 10:20:17 2010
Где
-
1616 : PID -
www-date : Имя пользователя (владелец - EUID) -
www-date : Название группы (группа - EGID) -
/usr/sbin/apache2 -k start : Название команды и её аргументы -
03:16:22 : Время прошедшее с момента запуска процесса в форме [[dd-]hh:]mm:ss. -
Fri Oct 29 10:20:17 2010 : Время запуска команды.
Для обслуживания сервисами нумерации портов и протоколов используются файл /etc/services. Попытаемся сопоставить номера портов:
$ grep port /etc/services $ grep 443 /etc/services
Пример вывода:
https 443/tcp # http protocol over TLS/SSL https 443/udp
Проверка на руткиты
Я строго рекомендую узнать вам, какие процессы действительно запущены, особенно на серверах с доступом по высокоскоростному интернету. Вы можете искать rootkit, который является программой, разработанной, чтобы взять на себя фундаментальное управление компьютерной системы Вы можете искать руткиты, которые разработаны, чтобы взять фундаментальный контроль (полномочия "root" в Linux / UNIX, в Windows полномочия "Администратора") над компьютерной системой, без авторизации владельцем системы и законными менеджерами. Смотрите как обнаружить и проверять наличие руткитов в Linux.
Следите за своими графиками пропускной способности сети
Как правило заражённые руткитами сервера используются для отправки большого количества спама или вредоносного программного обеспечения (malware), или DoS атак на другие компьютеры.
Смотрите также:
Смотрите следующие страницы руководств для более подробной информации:
$ man ps $ man grep $ man lsof $ man netstat $ man fuser
копипаста годной статьи http://my.opera.com/avm-xandry/blog/2010/11/12/linux
Немає коментарів:
Дописати коментар
Не обязательно регистрироваться, вы наверняка уже зарегистрированы в одном из сервисов, который предоставляет OpenId, предлагаю воспользоваться им. Подробнее: http://openid.net/what/