Сетевым администраторам и специалистам по безопасности часто требуется сканирование портов для выявления открытых или закрытых служб и оценки безопасности сети.
Хотя для этих целей существуют такие надежные инструменты, как nmap, иногда может потребоваться создание собственного решения, отвечающего конкретным требованиям.
Например, отсутствие возможности скачать и установить nmap.
В этой статье мы рассмотрим, как создать скрипт Bash для сканирования ряда портов.
Основы сканирования портов
Сканирование портов – это систематическая проверка системы на наличие открытых портов.
Порт в данном контексте – это логическая конструкция, идентифицирующая определенный процесс или тип сетевого сервиса.
Номера портов варьируются от 0 до 65535, причем первые 1024 известны как “общеизвестные порты”, назначаемые для таких распространенных протоколов, как HTTP (порт 80) и FTP (порт 21).
Сканирование портов позволяет определить, какие службы запущены и прослушивают соединения, что может быть особенно полезно для обнаружения потенциальных уязвимостей в системе безопасности.
Скрипт Bash для сканирования портов
Bash (Bourne Again SHell) – это мощная оболочка, с помощью которой можно создавать скрипты для автоматизации задач в среде Linux.
Наш скрипт будет принимать два аргумента – IP-адрес для сканирования и диапазон портов для сканирования.
Вот простой скрипт на Bash, который сканирует ряд портов:
#!/bin/bash ip=$1 startport=$2 endport=$3 function portscan { for ((counter=$startport; counter<=$endport; counter++)) do (echo > /dev/tcp/$ip/$counter) > /dev/null 2>&1 && echo "$counter open" done } portscan
Принцип работы скрипта
Первая строка (#!/bin/bash): Эта строка известна как shebang.
Она сообщает системе, что данный скрипт должен быть выполнен с помощью оболочки Bash.
Строки 3-5: Сценарий принимает три аргумента. $1 – IP-адрес, $2 – номер начального порта и $3 – номер конечного порта.
Строки 7-12: Здесь определяется функция portscan, которая сканирует каждый порт в заданном диапазоне.
Она пытается перенаправить эхо-вывод на определенный порт по IP-адресу.
Если запись в port прошла успешно (значит, порт открыт), то выводится номер порта, за которым следует “open”.
Использование скрипта
Для использования необходимо предоставить ему права на выполнение и запустить его с IP-адресом и диапазоном портов для сканирования.
- Сохраните скрипт в файл, например portscan.sh
- Сделайте скрипт исполняемым: chmod +x portscan.sh
- Запустите скрипт с IP-адресом и диапазоном портов: ./portscan.sh 192.168.1.1 20 80
- Будет произведено сканирование портов с 20 по 80 на IP-адресе 192.168.1.1.
Заключение
Несмотря на то, что данный скрипт подходит для базового сканирования портов, в нем отсутствуют многие функции, присущие более продвинутым инструментам, таким как nmap, например, обнаружение служб, определение ОС и более продвинутые методы сканирования портов.
Однако он позволяет понять, как работает сканирование портов и как его можно выполнить с помощью простого скрипта Bash.
см. также:
- 👁️ Zenmap – графический интерфейс Nmap
- 🖧 Как просканировать цель с помощью Nmap?
- Как сканировать удаленный хост на открытые порты с помощью портативного сканера nmap