- Linux Find Out Which Process Is Listening Upon a Port
- Linux Find Out Which Process Is Listening Upon a Port
- Linux netstat command find out which process is listing upon a port
- A note about ss command
- Video demo
- fuser command
- Find Out Current Working Directory Of a Process
- Find Out Owner Of a Process on Linux
- lsof Command Example
- Help: I Discover an Open Port Which I Don’t Recognize At All
- Check For rootkit
- Keep an Eye On Your Bandwidth Graphs
- Conlcusion
- Сетевые интерфейсы, протоколы и сетевые сокеты Linux
- Драйверы сетевых устройств
- Сетевые интерфейсы (UNIX ifconfig)
- Сетевые интерфейсы (Linux ip)
- Драйверы сетевых протоколов
- Сетевые сокеты (UNIX netstat)
- Сетевые сокеты (Linux ss)
Linux Find Out Which Process Is Listening Upon a Port
Linux Find Out Which Process Is Listening Upon a Port
You can the following programs to find out about port numbers and its associated process:
- netstat command or ss command – a command-line tool that displays network connections, routing tables, and a number of network interface statistics.
- fuser command – a command line tool to identify processes using files or sockets.
- lsof command – a command line tool to list open files under Linux / UNIX to report a list of all open files and the processes that opened them.
- /proc/$pid/ file system – Under Linux /proc includes a directory for each running process (including kernel processes) at /proc/PID, containing information about that process, notably including the processes name that opened port.
You must run above command(s) as the root user.
Linux netstat command find out which process is listing upon a port
Type the following command:
# netstat -tulpn
Sample outputs:
TCP port 3306 was opened by mysqld process having PID # 1138. You can verify this using /proc, enter:
# ls -l /proc/1138/exe
Sample outputs:
You can use grep command or egrep command to filter out information:
# netstat -tulpn | grep :80
Sample outputs:
A note about ss command
Some Linux distro considered the nestat command as deprecated and therefore should be phased out in favor of more modern replacements such as ss command. The syntax is:
$ sudo ss -tulpn
$ sudo ss -tulpn | grep :3306
Click to enlarge image
Video demo
fuser command
Find out the processes PID that opened tcp port 7000, enter:
# fuser 7000/tcp
Sample outputs:
Finally, find out process name associated with PID # 3813, enter:
# ls -l /proc/3813/exe
Sample outputs:
/usr/bin/transmission is a bittorrent client, enter:
# man transmission
OR
# whatis transmission
Sample outputs:
Find Out Current Working Directory Of a Process
To find out current working directory of a process called bittorrent or pid 3813, enter:
# ls -l /proc/3813/cwd
Sample outputs:
OR use pwdx command, enter:
# pwdx 3813
Sample outputs:
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Find Out Owner Of a Process on Linux
Use the following command to find out the owner of a process PID called 3813:
# ps aux | grep 3813
OR
# ps aux | grep ‘[3]813’
Sample outputs:
OR try the following ps command:
# ps -eo pid,user,group,args,etime,lstart | grep ‘[3]813’
Sample outputs:
Another option is /proc/$PID/environ, enter:
# cat /proc/3813/environ
OR
# grep —color -w -a USER /proc/3813/environ
Sample outputs (note –colour option):
Fig.01: grep output
lsof Command Example
Type the command as follows:
Now, you get more information about pid # 1607 or 1616 and so on:
# ps aux | grep ‘[1]616’
Sample outputs:
www-data 1616 0.0 0.0 35816 3880 ? S 10:20 0:00 /usr/sbin/apache2 -k start
I recommend the following command to grab info about pid # 1616:
# ps -eo pid,user,group,args,etime,lstart | grep ‘[1]616’
Sample outputs:
- 1616 : PID
- www-date : User name (owner – EUID)
- www-date : Group name (group – EGID)
- /usr/sbin/apache2 -k start : The command name and its args
- 03:16:22 : Elapsed time since the process was started, in the form [[dd-]hh:]mm:ss.
- Fri Oct 29 10:20:17 2010 : Time the command started.
Help: I Discover an Open Port Which I Don’t Recognize At All
The file /etc/services is used to map port numbers and protocols to service names. Try matching port numbers:
$ grep port /etc/services
$ grep 443 /etc/services
Sample outputs:
Check For rootkit
I strongly recommend that you find out which processes are really running, especially servers connected to the high speed Internet access. You can look for rootkit which is a program designed to take fundamental control (in Linux / UNIX terms “root” access, in Windows terms “Administrator” access) of a computer system, without authorization by the system’s owners and legitimate managers. See how to detecting / checking rootkits under Linux.
Keep an Eye On Your Bandwidth Graphs
Usually, rooted servers are used to send a large number of spam or malware or DoS style attacks on other computers.
Conlcusion
You learned various Linux commands to find information about running process and their ports. See the following man pages for more information:
$ man ps
$ man grep
$ man lsof
$ man netstat
$ man fuser
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
Сетевые интерфейсы, протоколы и сетевые сокеты Linux
Сетевая подсистема Linux организует сетевой обмен пользовательских приложений и, как следствие, сетевое взаимодействие самих пользователей.
Часть сетевой подсистемы, выполняющаяся в режиме ядра, естественным образом ответственна за управление сетевыми устройствами ввода-вывода, но кроме этого на нее также возложены задачи маршрутизации и транспортировки пересылаемых данных, которые решаются при помощи соответствующих Сетевых протоколов. Таким образом, именно ядерная часть сетевой подсистемы обеспечивает процессы средствами сетевого межпроцессного взаимодействия (network IPC).
Внеядерная часть сетевой подсистемы отвечает за реализацию сетевых служб, предоставляющих пользователям прикладные сетевые услуги, такие как передача файлов, обмен почтовыми сообщениями, удаленный доступ и т. д.
Непосредственное, физическое взаимодействие сетевых узлов через каналы связи между ними реализуется аппаратурой сетевых адаптеров. Сетевые адаптеры, как и любые другие устройства ввода-вывода, управляются соответствующими драйверами, реализующимися в большинстве случаев в виде динамических модулей ядра.
Драйверы сетевых устройств
$ lspci
01:00.0 Network controller: Intel Corporation Centrlno Wireless-N 130 (rev 34)
02:60.0 Ethernet controller: …, Ltd. RTL8111/8168B PCI Express … Ethernet controller …
$ lspci -ks 01:00.0
01:00.0 Network controller: Intel Corporation Centrlno Wireless-N 130 (rev 34)
Subsystem Intel Corporation Centrino Wireless-N 130 BGN
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
02:00.0 Ethernet controller: …, Ltd. RTL8111/8168B PCI Express … Ethernet controller …
Subsystem: Samsung Electronics Co Ltd Device c0b6
Kernel driver in use: r8169
$ modinfo iwlwifi r8169 | grep ^description
description: Intel(R) Wireless WiFi driver for Linux
description: RealTek RTL-8169 Gigabit Ethernet driver
В отличие от несетевых устройств, большинство которых имеют специальный файл в каталоге /dev, сетевые устройства представляются в системе своими интерфейсами. Список доступных интерфейсов, их параметры и статистику можно получить при помощи «классической» UNIX-команды ifconfig или специфичной для Linux команды ip.
Сетевые интерфейсы (UNIX ifconfig)
eth0 Link encap:Ethernet HWaddr e8:03:9a:0a:73:40
UP BROADCAST MULTICAST MTU: 1500 Metric: 1
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
wlan0 Link encap:Ethernet HWaddr b8:03:05:a2:28:4e
inet addr:192.168.100.5 Bcast: 192.168.100.255 Mask-.255.255.255.0
inet6 addr: fe80::ba03:5ff:fea2:284e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
$ ifconfig wlanO
wlanO Link encap:Ethernet HWaddr b8:03:05:a2:28:4e
inet addr-.192.168.100.5 Beast: 192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80: :ba03:5ff:fea2:284e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets:23103842 errors:0 dropped:0 overruns:0 frame:0
TX packets-.15591575 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2010967763 (2.0 GB) TX bytes:2828583098 (2.8 GB)
Сетевые интерфейсы (Linux ip)
$ ip link show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 link/ether e8:03:9a:0a:73:40 brd ff:ff:ff:ff:ff:ff
3: wlan0: «BROADCAST,MULTICAST,UP,L0WER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether b8:03:05:а2:28:4е brd ff:ff:ff:ff:ff:ff
$ ip -s link show dev wlanO
3: wlan0: «BROADCAST,MULTICAST,UP, LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether b8:03:05:a2:28:4e brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
2026956879 23261031 0 0 0 0
TX: bytes packets errors dropped carrier collsns
3118714118 15863377 0 0 0 0
[email protected]:
$ ip addr show dev wlanO
3: wlan0: «BROADCAST,MULTICAST,UP,L0WER_UP> mtu 1500 qdisc nq state UP qlen 1000
link/ether b8:03:05:a2:28:4e brd ff:ff:ff:ff:ff:ff
inet 192.168.100.5/24 brd 192.168.100.255 scope global wlan0
valid_lft forever preferred_lft forever
inet6 fe80::ba03:5ff: fea2:284e/64 scope link
valid_lft forever preferred_lft forever
За логическое взаимодействие (адресацию, маршрутизацию, обеспечение надежной доставки и пр.) отвечают сетевые протоколы, тоже в большинстве случаев реализующиеся соответствующими модулями ядра.
Нужно отметить, что в примере из листинга ниже показан список динамически загруженных модулей, среди которых присутствует «нестандартный» TCP vegas, но нет IP, TCP, UDP и прочих «стандартных» протоколов стека TCP/IP.
На текущий момент времени сложно вообразить применение Linux без подключения к IP-сети, поэтому модули стандартных протоколов TCP/IP стека скомпонованы в ядро статически и являются частью «стартового» модуля.
Драйверы сетевых протоколов
$ lsmod
Module Size Used by
tcp_vegas 13603 0
esp4 12868 0
ah4 12866 0
xfm_algo 14869 2 esp4,ah4
bnep 19167 2
bluetooth 356727 24 bnep,rf com,btusb
mac80211 564463 1 iwldvm
$ nodinfo tcp_vegas bnep mac86211 | grep ‘^description
description: TCP Vegas
description: Bluetooth BNEP ver 1.3
description: IEEE 862.11 subsystem
Доступ процессов к услугам ядерной части сетевой подсистемы реализует интерфейс сетевых сокетов socket, являющихся основным (и единственным) средством сетевого взаимодействия процессов в Linux.
Разные семейства (address family) сокетов соответствуют различным стекам сетевых протоколов. Например, стек TCP/IP v4 представлен семейством AFJNET, см. ip, стек TCP/IP v6 — семейством AF_INET6, см. ipv6, и даже локальные (файловые) сокеты имеют собственное семейство — AF_L0CAL, см. unix.
Для просмотра статистики по использованию сетевых сокетов применяют «классическую» UNIX-команду netstat или специфичную для Linux команду ss. В листингах ниже иллюстрируется использование этих команд для вывода информации обо всех (-a, all) сокетах протоколов (-u, udp) UDP и (-t, tcp) TCP стека TCP/IP v4 (-4), порты и адреса которых выведены в числовом (-n, numeric) виде, а также изображены процессы (-p, process), их открывшие.
Сетевые сокеты (UNIX netstat)
$ sudo netstat -4autpn
Активные соединения с интернетом (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0:0.0.0:5900 0.0.0:0:* LISTEN 28880/vino-server
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 5999/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 655/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1064/cupsd
tcp 0 0 192.168.100.5:22 192.168.100.3:57929 ESTABLISHED 15841/sshd: …
udp 0 0 0.0.0.0:5353 0.0.0.0:* 15094/avahi-daemon:
udp 0 0 0.0.0.0546347 0.0.0.0:* 15094/avahi-daemon:
udp 0 0 127.0.0.1:53 0.0.0.0:* 5999/dnsmasq
udp 0 0 0.0.0.0:68 0.0.0.0:* 5995/dhclient
Сетевые сокеты идентифицируются парой адресов (собственным, local, и чужим (адрес удаленного приложения, с которым установлено соединение), foreign), принятыми в их семействе. Например, для семейства TCP/IP адрес сокета состоит из (сетевого) IP-адреса и (транспортного) номера порта, причем нули имеют специальное — «неопределенное» значение.
Так для прослушивающего (LISTEN) сокета 0.0.00 в собственном IP-адресе означает, что он принимает соединения, направленные на любой адрес любого сетевого интерфейса, а 0.0.0.0 в чужом адресе указывает на то, что взаимодействие еще не установлено. Прослушивающие сокеты используются «серверными» приложениями, пассивно ожидающими входящие соединения с ними.
Для сокетов с установленным (ESTABLISHED) взаимодействием оба адреса имеют конкретные значения, определяющие участников взаимодействия, например 192.168.100.5:22 и 192.168.100.3:57929.
Сетевые сокеты (Linux ss)
$ sudo ss -4atupn
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:5353 *:* users: ((«avahi-daemon»,15094,13))
udp UNCONN 0 0 *:46347 *:* users: ((«avahi-daemon»,15094,15))
udp UNCONN 0 0 127.0.0.1:53 *:* users: ((«dnsmasq»,5999,4))
udp UNCONN 0 0 *:68 *:* users: ((«dhcltent”,5995,6))
udp UNCONN 0 0 *:5900 *:* users: ((«vino-server»,28880,14))
udp UNCONN 0 0 127.0.0.1:53 *:* users: ((«dnsmasq»,5999,5))
udp UNCONN 0 0 *:22 *:* users: ((«sshd»,655,4))
udp UNCONN 0 0 127.0.0.1:631 *:* users: ((«cupsd»,1064,10))
udp UNCONN 0 0 127.0.0.1:25 *:* users: ((«master»,2021,12))
Из примеров листингов выше видны 5 «слушающих» (LISTEN) сокетов TCP и 4«несоелииеиных» (UNCONN) сокета UDP, открытых разными службами операционной системы. Например, 22 порт TCP открыл сервер sshd, PID = 655 службы удаленного доступа W:[SSH], а 5900 порт TCP — сервер vino-server, PID = 28880 службы удаленного доступа к рабочему столу пользователя W:[VNC].
Сетевая подсистема ОС Linux чрезвычайно развита на всех ее уровнях — от сетевых интерфейсов и протоколов до прикладных сетевых служб. На сегодняшний день колоссальное количество сетевых устройств работают под управлением Linux — маршрутизаторы, сетевые хранилища, медиаплееры, TV-боксы, планшеты, смартфоны и прочие «встраиваемые» и мобильные устройства.
К сожалению, рассмотреть весь пласт сетевых возможностей в рамках этой статьи, не представляется возможным, т. к. потребует от читателя серьезного понимания устройства и функционирования самих сетевых протоколов стека TCP/IP, что не является предметом настоящего рассмотрения.
Основополагающим результатом должно стать понимание принципов организации сетевого взаимодействия в Linux, необходимое и достаточное в качестве базы для последующего самостоятельного расширенного и углубленного изучения. Не менее полезными в практике администратора и программиста будут навыки использования инструментов трассировки и мониторинга сетевых сокетов, а в особенно «непонятных» ситуациях навыки применения анализаторов пакетов.
Исключительное место (эдакий «швейцарский нож») среди прочих сетевых инструментов Linux займет служба SSH, при распределенном использовании оконной системы X Window System, являющейся основой современного графического интерфейса пользователя.
Источник