Добавить в корзинуПозвонить
Найти в Дзене
ИТ разнообразно

Прекратите использовать Telnet для тестирования портов. Часть 4.

Используем Netcat Netcat — ещё одна универсальная программа, которая может использовать прокси для подключения к другим машинам. Она также имеет несколько реализаций. Например, предположим, что вы хотите проверить, открыт ли порт 22 на хосте raspberrypi.home: $ nc -z -v -w 5 raspberrypi 22 Ncat: Version 7.93 ( https://nmap.org/ncat ) Ncat: Connected to fd22:4e39:e630:1:dea6:32ff:fef9:4748:22. Ncat: 0 bytes sent, 0 bytes received in 0.06 seconds. # Trying a closed port like 222 $ nc -z -v -w 5 raspberrypi 222 Ncat: Version 7.93 ( https://nmap.org/ncat ) Ncat: Connection to fd22:4e39:e630:1:dea6:32ff:fef9:4748 failed: Connection refused. Ncat: Trying next address... Ncat: Connection refused. Имея это в виду, вы можете автоматизировать сканирование группы хостов, используя обёртку Netcat: # Port check with Netcat # Author: Jose Vicente Nunez <@josevnz@fosstodon.org> if [ -n "$1" ] && [ -f "$1" ]; then while read -r line; do machine=$(echo "$line"| /bin/cut -d' ' -f1)|| exit 100

Используем Netcat

Netcat — ещё одна универсальная программа, которая может использовать прокси для подключения к другим машинам. Она также имеет несколько реализаций.

Например, предположим, что вы хотите проверить, открыт ли порт 22 на хосте raspberrypi.home:

$ nc -z -v -w 5 raspberrypi 22
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Connected to fd22:4e39:e630:1:dea6:32ff:fef9:4748:22.
Ncat: 0 bytes sent, 0 bytes received in 0.06 seconds.
# Trying a closed port like 222
$ nc -z -v -w 5 raspberrypi 222
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Connection to fd22:4e39:e630:1:dea6:32ff:fef9:4748 failed:
Connection refused.
Ncat: Trying next address...
Ncat: Connection refused.

Имея это в виду, вы можете автоматизировать сканирование группы хостов, используя обёртку Netcat:

# Port check with Netcat
# Author: Jose Vicente Nunez <@josevnz@fosstodon.org>
if [ -n "$1" ] && [ -f "$1" ]; then
while read -r line; do
machine=$(echo "$line"| /bin/cut -d' ' -f1)|| exit 100
ports=$(echo "$line"| /bin/cut -d' ' -f2)|| exit 101
OLD_IFS=$OLD_IFS
IFS=","
for port in $ports; do
if /usr/bin/nc -z -v -w 5 "$machine" "$port" > /dev/null 2>&1; then
echo "OK: $machine -> $port"
else
echo "ERROR: $machine -> $port"
fi
done
IFS=$OLD_IFS
done < "$1"
else
echo "ERROR: Invalid or missing data file!"
exit 103
fi

Зачем вам использовать nc вместо предыдущего скрипта, написанного на Bash? Существует несколько причин. Во-первых, вы можете использовать SOCKS-прокси (secure socket) для сканирования серверов с ключом -x. Например, запускаем SOCKS-прокси на порту 2080 следующим образом:

josevnz@raspberrypi:~$ ssh -f -g -D 2080 -C -q -N josevnz@192.168.1.27

Затем получаем доступ к серверам за вашим брандмауэром через прокси следующим образом:

$ nc --proxy 192.168.1.27:2080 --proxy-type socks5 -z -v -w 5 redhat.com 80
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Connected to proxy 192.168.1.27:2080
Ncat: No authentication needed.
Ncat: Host redhat.com will be resolved by the proxy.
Ncat: connection succeeded.
Ncat: 0 bytes sent, 0 bytes received in 0.12 seconds.

Вы также можете использовать Netcat для запуска сервера, чтобы помочь вам проверить базовое соединение, если у вас нет под рукой доступного сервера.

На принимающей стороне запускаем сервер:

josevnz@raspberrypi:~$ nc -l 2080

Затем на клиенте вводим:

$ nc --verbose 192.168.1.27 2080
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.1.27:2080.
Hello
Hi

Теперь вы можете писать и получать сообщения с обеих сторон, как в двунаправленном чате. Существуют и другие особенности и варианты использования nc; почитайте документацию, чтобы узнать больше.

Продолжение следует...

Перевод с некоторыми авторскими заголовками.

Автор оригинала: Jose Vicente Nunez (Sudoer).