Вопрос или проблема
Я хотел бы узнать, какие порты открыты на моем компьютере, например, на каких портах моя машина слушает. Например, порт 80, если я установил веб-сервер, и так далее.
Существует ли какая-либо команда для этого?
Я всегда использовал это:
sudo netstat -ntlp
Если команда netstat
недоступна, установите ее с помощью:
sudo apt install net-tools
nmap (установить)
Nmap (“Network Mapper”) — это бесплатная и открытая утилита для сетевого исследования или аудита безопасности.
Используйте nmap 192.168.1.33
для локального ПК или nmap внешний IP-адрес
.
Больше информации man nmap
.
Zenmap — это официальный графический интерфейс.
Другие хорошие способы узнать, какие порты слушают и каковы правила вашего брандмауэра:
-
sudo netstat -tulpn
-
sudo ufw status
Чтобы перечислить открытые порты, используйте команду netstat
.
Например:
$ sudo netstat -tulpn | grep LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 5452/dnsmasq
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1037/cupsd
tcp6 0 0 ::1:631 :::* LISTEN 1037/cupsd
В приведенном выше примере три службы связаны с адресом обратной связи.
Сервисы IPv4, связанные с адресом обратной связи “127.0.0.1”, доступны только на локальной машине. Эквивалентный адрес обратной связи для IPv6 — “::1”. IPv4-адрес “0.0.0.0” означает “любой IP-адрес”, что подразумевает, что другие машины могут потенциально подключиться к любому из локально сконфигурированных сетевых интерфейсов на указанном порту.
Другой метод — использовать команду lsof
:
$ sudo lsof -nP -i | grep LISTEN
cupsd 1037 root 9u IPv6 11276 0t0 TCP [::1]:631 (LISTEN)
cupsd 1037 root 10u IPv4 11277 0t0 TCP 127.0.0.1:631 (LISTEN)
dnsmasq 5452 nobody 5u IPv4 212707 0t0 TCP 127.0.0.1:53 (LISTEN)
Для получения дополнительных сведений смотрите man netstat
или man lsof
.
Этого достаточно, чтобы показать, что есть процесс, который слушает на IP-адресе 0.0.0.0
(необходим, чтобы он мог отвечать на любой запрос) на порту 80 (стандартный номер порта веб-сервера). В моем случае это веб-сервер lighttpd
$ sudo netstat -ntlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2495/lighttpd
Если позже вы хотите убедиться, что единственное, что вы разрешаете через свой брандмауэр — это порт 80, я часто использую ShieldsUp с www.grc.com для проверки брандмауэра.
sudo iptables -L
отобразит правила портов для вашего ПК. Обратите внимание, что если вы используете брандмауэры ufw или shorewall, вывод может быть труден для чтения. В этом случае лучше использовать, например, sudo ufw status
.
Это не очень полезно само по себе, так как даже если порт открыт, доступ все равно будет ограничен, если на этом порту нет процесса, который слушает.
Если вы ищете непрерывный мониторинг портов для серверных машин или локальных, я думаю, вы также можете использовать графическую версию nmap, то есть Zenmap для более подробной версии.
Zenmap — это официальный графический пользовательский интерфейс (GUI) для сканера безопасности Nmap.
Поддерживаемые системы (Linux, Windows, Mac OS X, BSD и т. д.)
Посмотрите на этот инструмент:
В последних дистрибутивах Linux, скорее всего, вы больше не найдете команду netstat
.
$ netstat
Команда 'netstat' не найдена, но ее можно установить с помощью:
sudo apt install net-tools
$
Тем не менее, если вы хотите использовать ее, можете установить с помощью sudo apt install net-tools
.
Для вашей информации, netstat устарел (смотрите страницу man), поэтому вам следует использовать ss
вместо netstat
.
Эта программа устарела. Замена для netstat — ss.
Замена для netstat -r — это ip route. Замена для netstat
-i — это ip -s link. Замена для netstat -g — это ip maddr.
Например.
$ ss -lnt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 5 127.0.1.1:53 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 128 ::1:631 :::*
Описание
ss = другая утилита для исследования сокетов
-l, –listening
Отображать только прослушивающие сокеты (по умолчанию они опускаются).-n, –numeric
Не пытаться разрешать имена служб.-t, –tcp
Отображать TCP-сокеты.
ss:
Печать:
сетевые соединения
таблицы маршрутизации
статистика интерфейса
маскарадные соединения
мультикастные подписки
Установка:
sudo apt install net-tools
Пример:
~$ ss -ntlp | grep LISTEN
>
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 5 127.0.0.1:631 0.0.0.0:*
LISTEN 0 5 [::1]:631 [::]:*
LISTEN 0 50 [::ffff:127.0.0.1]:9614 *:*
если вы хотите проверить порт 3000:
netstat -na | grep 3000
Вы можете использовать PortsInfo для этого.
Он показывает вам все порты и приложения, прослушивающие их.
Раскрытие информации: я разрабатываю это приложение.
Ответ или решение
Для проверки открытых портов на вашем компьютере существует несколько эффективных инструментов и команд. Открытые порты могут указывать на запущенные службы, такие как веб-серверы, базы данных и другие приложения, которые ожидают входящих соединений. Ниже приведены наиболее распространенные методы и команды, которые помогут вам получить эту информацию.
1. Использование команды netstat
Команда netstat
позволяет просмотреть сетевые соединения и открытую деятельность на вашем компьютере. Важно заметить, что в новых дистрибутивах Linux команда netstat
может быть устаревшей, и вместо неё рекомендуется использовать ss
.
Пример использования netstat
:
sudo netstat -tulpn | grep LISTEN
-t
— отображает TCP-соединения.-u
— отображает UDP-соединения.-l
— показывает только прослушивающие порты.-p
— показывает идентификатор процесса и имя программы, исполняющей каждое соединение.-n
— отображает адреса и номера портов в числовом формате.
Если команда netstat
недоступна, вы можете установить ее с помощью:
sudo apt install net-tools
2. Альтернативный метод с помощью команды ss
Команда ss
считается более современным и быстрым средством для анализа сокетов и сетевых соединений.
Пример использования ss
:
sudo ss -tulpn
-t
— для TCP.-u
— для UDP.-l
— чтобы показать только прослушивающие сокеты.-p
— для отображения информации о процессе.
3. Использование lsof
Команда lsof
(list open files) может также быть использована для просмотра открытых портов. Она предоставляет информацию о файлах, которые открыты процессами, включая сетевые сокеты.
Пример использования lsof
:
sudo lsof -nP -i | grep LISTEN
-n
— угроза разрешения адресов.-P
— угрозы разрешения портов.
4. Проверка правил брандмауэра с помощью ufw
Если вы используете ufw
(Uncomplicated Firewall), вы можете легко просмотреть его состояние и открытые порты:
sudo ufw status
Эта команда выдаст информацию обо всех разрешенных и заблокированных соединениях.
5. Использование nmap
Если вам нужно проверить открытые порты на локальном или удаленном компьютере, вы можете воспользоваться утилитой nmap
, которая является мощным инструментом для сетевого сканирования.
Пример использования nmap
:
nmap 192.168.1.33
или для внешнего IP:
nmap <внешний_IP>
Заключение
Каждый из вышеуказанных инструментов и команд предоставляет различные способы для мониторинга открытых портов на вашем компьютере. Независимо от того, используете ли вы netstat
, ss
, lsof
или nmap
, важно учитывать, что открытые порты могут быть уязвимыми местами для атак, поэтому регулярная проверка и обновление системы безопасности будут полезны в вашей практике управления сетью. Содержите ваш брандмауэр в актуальном состоянии и будьте внимательны к службам, которые вы открываете для внешнего мира.