Настя и сборник весёлых историй
Оглавление:
- Что такое открытый порт
- Проверьте открытые порты с
nmap
- Проверьте открытые порты с
netcat
- Проверьте открытые порты с помощью Bash Pseudo Device
- Вывод
Независимо от того, решаете ли вы проблемы с сетевым подключением или настраиваете брандмауэр, в первую очередь необходимо проверить, какие порты действительно открыты в вашей системе.
В этой статье описывается несколько подходов, чтобы узнать, какие порты открыты снаружи в вашей системе Linux.
Что такое открытый порт
Порт прослушивания - это сетевой порт, который прослушивает приложение. Вы можете получить список прослушивающих портов в вашей системе, запросив сетевой стек с помощью таких команд, как
ss
,
netstat
или
lsof
. Каждый порт прослушивания может быть открыт или закрыт (отфильтрован) с помощью брандмауэра.
В общих чертах, открытый порт - это сетевой порт, который принимает входящие пакеты из удаленных мест.
Например, если вы используете веб-сервер, который прослушивает порты
80
и
443
и эти порты открыты на вашем брандмауэре, любой (кроме заблокированных ips) сможет получить доступ к веб-сайтам, размещенным на вашем веб-сервере, с помощью своего браузера. В этом случае и
80
и
443
являются открытыми портами.
Открытые порты могут представлять угрозу безопасности, так как каждый открытый порт может использоваться злоумышленниками для использования уязвимости или выполнения любых других типов атак. Вы должны выставить только порты, необходимые для функциональности вашего приложения и закрыть все другие порты.
Проверьте открытые порты с
nmap
Nmap - это мощный инструмент сетевого сканирования, который может сканировать отдельные узлы и большие сети. Он в основном используется для аудита безопасности и тестирования на проникновение.
Если доступно,
nmap
должен быть вашим первым инструментом, когда дело доходит до сканирования портов. Помимо сканирования портов,
nmap
также может определять Mac-адрес, тип ОС, версии ядра и многое другое.
Следующая команда из консоли определяет, какие порты прослушивают TCP-соединения из сети:
sudo nmap -sT -p- 10.10.8.8
-sT
указывает
nmap
сканировать TCP-порты и
-p-
сканировать все 65535 портов. Если
-p-
не используется,
nmap
будет сканировать только 1000 портов.
Starting Nmap 7.60 (https://nmap.org) at 2019-07-09 23:10 CEST Nmap scan report for 10.10.8.8 Host is up (0.0012s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http MAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds
Вывод выше показывает, что только порты
22
,
80
и
8069
открыты в целевой системе.
Для сканирования портов UDP используйте
-sU
вместо
-sT
:
sudo nmap -sU -p- 10.10.8.8
Для получения дополнительной информации посетите страницу руководства nmap и прочитайте обо всех других мощных опциях этого инструмента.
Проверьте открытые порты с
netcat
Netcat (или
nc
) - это инструмент командной строки, который может читать и записывать данные через сетевые подключения, используя протоколы TCP или UDP.
С
netcat
вы можете сканировать один порт или диапазон портов.
Например, для поиска открытых портов TCP на удаленной машине с IP-адресом
10.10.8.8
в диапазоне
20-80
вы должны использовать следующую команду:
nc -z -v 10.10.8.8 20-80
Опция
-z
указывает
nc
сканировать только открытые порты без отправки каких-либо данных, а
-v
- для более подробной информации.
Вывод будет выглядеть примерно так:
nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded!… Connection to 10.10.8.8 80 port succeeded!
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!
Для сканирования портов UDP передайте опцию
-u
команде
nc
:
nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded
Проверьте открытые порты с помощью Bash Pseudo Device
Другой способ проверить, является ли определенный порт открытым или закрытым, - использовать псевдоустройство оболочки Bash
/dev/tcp/..
или
/dev/udp/..
При выполнении команды на псевдоустройстве
/dev/$PROTOCOL/$HOST/$IP
Bash открывает TCP или UDP-соединение с указанным хостом на указанном порту.
Следующий оператор if..else проверит, открыт ли порт
443
на
kernel.org
:
if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi
if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi
Port is open
Как работает приведенный выше код?
Время ожидания по умолчанию при подключении к порту с использованием псевдоустройства очень велико, поэтому мы используем команду
timeout
для уничтожения команды test через 5 секунд. Если соединение установлено с портом
443
kernel.org
команда test вернет true.
Вы также можете использовать цикл for для проверки диапазона портов:
for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done
for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done
Вывод будет выглядеть примерно так:
port 22 is open port 80 is open
Вывод
Мы показали вам несколько инструментов, которые вы можете использовать для поиска открытых портов. Есть также другие утилиты и методы для проверки открытых портов, например, вы можете использовать модуль
socket
Python,
curl
,
telnet
или
wget
.
Meru приносит виртуальные порты Wi-Fi
Meru объявила в понедельник, что она подключает виртуальные порты к Wi-Fi.
Как сохранить все открытые вкладки в виде закладок в браузере Chrome, Firefox, IE
Хотите закладок Все вкладки все раз? Вы можете сохранить все открытые вкладки или страницы в виде Закладок или Избранное в браузерах Chrome, Firefox и Internet Explorer, выполнив следующие шаги.
Как проверить порты прослушивания в Linux (используемые порты)
В этой статье объясняется, как выяснить используемые порты и какие службы прослушивают, какие порты используют команды netstat, ss и lsof. Инструкции применимы для всех операционных систем на основе Linux и Unix, таких как macOS.