Nmap (Network Mapper) — это стандартный инструмент для сканирования сетей, обнаружения хостов, открытых портов, версий служб и операционных систем. Он незаменим для аудита безопасности (проверка открытых портов), тестирования фаерволов, инвентаризации сети и даже для поиска устройств в локальной сети. Главные сложности для новичка: нужно понимать разницу между APT-версией (стабильна, но может быть старой) и сборкой из исходников (свежая, с новыми NSE-скриптами, но требует компиляции). Также некоторые типы сканирования (SYN-сканирование, определение ОС) требуют прав root.
💡 В этом руководстве вы установите Nmap на Debian двумя способами: через APT (рекомендованный) и сборкой из исходников (если нужна последняя версия). Вы также узнаете основы работы с Nmap, как интерпретировать результаты и решать типичные проблемы.
В этой статье вы узнаете:
- Как установить Nmap через APT (рекомендовано)
- Как собрать Nmap из исходников (актуальная версия с проверкой SHA256)
- Как создать скрипт для обновления source-сборки (с обработкой Debian 11)
- Основные команды Nmap: сканирование портов, определение служб, ОС
- Как интерпретировать состояния портов (open, closed, filtered)
- Как решить типичные проблемы: permission denied, команда не найдена, ошибки зависимостей
Для кого: системные администраторы, специалисты по безопасности, разработчики, а также все, кто хочет изучить свою сеть на Debian 11, 12 или 13.
1. 🔧 Предварительные требования
Перед установкой убедитесь, что:
- У вас установлена Debian 11, 12 или 13
- Подключение к интернету стабильно
- У вас есть права sudo
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.
Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.
✅ Если выводит root — всё в порядке, можете продолжать.
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
1.1 Обновление системы
Перед установкой всегда обновляйте список пакетов:
sudo apt update && sudo apt upgrade -y
Что делает:
sudo— права суперпользователяapt update— обновляет список доступных пакетов из репозиториев&&— выполняет следующую команду только если предыдущая успешнаapt upgrade -y— обновляет все установленные пакеты до последних версий
Зачем: Это стандартная практика безопасности перед установкой нового ПО.
2. 📊 Сравнение способов установки Nmap
В Debian есть два основных способа установки Nmap. Вот их сравнение:
| Метод | Откуда | Версия | Обновления | Плюсы | Минусы |
|---|---|---|---|---|---|
| APT рекомендовано | Репозитории Debian | Debian 13: 7.95, Debian 12: 7.93, Debian 11: 7.80 | Автоматически через apt upgrade | Простота, безопасность, минимум усилий | Версия может быть старой, особенно на Debian 11 |
| Сборка из исходников | Nmap.org | Последняя стабильная | Вручную (скрипт с проверкой SHA256) | Максимальная свежесть, новые NSE-скрипты | Требует установки инструментов сборки, ручное обновление |
💡 Рекомендация: Для большинства пользователей подойдёт APT. Сборку из исходников выбирайте, если вам нужна самая свежая версия Nmap или новые NSE-скрипты, которых нет в репозитории.
3. 📦 Способ 1: Установка Nmap через APT (рекомендованный)
Этот способ подходит для большинства пользователей. Вы получаете стабильную версию, протестированную для вашего выпуска Debian.
3.1 Установка пакетов
sudo apt install nmap -y
Что делает: Устанавливает Nmap из официальных репозиториев Debian.
Дополнительные инструменты (опционально):
sudo apt install ncat ndiff -y
Что делает: ncat — это улучшенная версия nc (netcat), а ndiff — инструмент для сравнения результатов сканирования.
3.2 Проверка версии
nmap --version
✅ Ожидаемый вывод в терминале (Debian 13):
Nmap version 7.95 ( https://nmap.org )
Какие версии в разных Debian:
| Версия Debian | Версия Nmap |
|---|---|
| Debian 13 (Trixie) | 7.95 |
| Debian 12 (Bookworm) | 7.93 |
| Debian 11 (Bullseye) | 7.80 |
3.3 Проверка, что Nmap в PATH
command -v nmap
✅ Ожидаемый вывод: /usr/bin/nmap
4. 🔧 Способ 2: Сборка Nmap из исходников (актуальная версия)
Этот способ подходит, если вам нужна самая свежая версия Nmap (с новыми NSE-скриптами).
4.1 Установка инструментов сборки и зависимостей
sudo apt install build-essential libssh2-1-dev libssl-dev libpcre2-dev wget ca-certificates curl bzip2 -y
Что делает: Устанавливает компилятор, утилиты и библиотеки для поддержки SSH, SSL, PCRE и других функций.
4.2 Определение последней версии, скачивание и проверка SHA256
cd /tmp
NMAP_ARCHIVE=$(curl -fsSL https://nmap.org/download.html | grep -Eo 'nmap-[0-9]+\.[0-9]+\.tar\.bz2' | sort -V | tail -n 1)
NMAP_VER=${NMAP_ARCHIVE#nmap-}
NMAP_VER=${NMAP_VER%.tar.bz2}
echo "Последняя версия: $NMAP_VER"
curl -fLO "https://nmap.org/dist/$NMAP_ARCHIVE"
curl -fLo "$NMAP_ARCHIVE.digest.txt" "https://nmap.org/dist/sigs/$NMAP_ARCHIVE.digest.txt"
NMAP_SHA256=$(awk '
/SHA256 =/ {
sub(/^.*SHA256 = /, "")
gsub(/[[:space:]]/, "")
hash = $0
getline
gsub(/[[:space:]]/, "")
hash = hash $0
print tolower(hash)
exit
}
' "$NMAP_ARCHIVE.digest.txt")
printf '%s %s\n' "$NMAP_SHA256" "$NMAP_ARCHIVE" | sha256sum -c -
✅ Ожидаемый вывод: nmap-7.99.tar.bz2: OK
Что делает: Проверяет целостность скачанного архива. Если контрольная сумма не совпадает — файл повреждён.
4.3 Распаковка и конфигурация с учётом версии Debian
tar -xjf "$NMAP_ARCHIVE"
cd "nmap-$NMAP_VER"
CONFIGURE_FLAGS=(--with-localdirs)
. /etc/os-release
if [ "${ID:-}" = "debian" ] && [ "${VERSION_ID%%.*}" = "11" ]; then
echo "Debian 11 detected: compiling without OpenSSL support"
CONFIGURE_FLAGS+=(--without-openssl)
fi
./configure "${CONFIGURE_FLAGS[@]}"
Что делает: Настраивает сборку. Для Debian 11 отключает OpenSSL (из-за проблем совместимости с Nmap 7.99).
4.4 Компиляция и установка
make -j$(nproc)
sudo make install
Что делает: Компилирует Nmap (используя все ядра) и устанавливает в систему.
4.5 Проверка установки
command -v nmap
nmap --version
✅ Ожидаемый вывод: /usr/local/bin/nmap и версия (например, 7.99).
4.6 Создание скрипта для обновления source-сборки (с проверкой SHA256 и поддержкой Debian 11)
sudo tee /usr/local/bin/update-nmap > /dev/null << 'EOF'
#!/bin/bash
set -euo pipefail
if [ "${EUID:-$(id -u)}" -ne 0 ]; then
echo "Запускайте скрипт с sudo: sudo update-nmap"
exit 1
fi
for cmd in curl wget tar make sha256sum grep awk; do
if ! command -v "$cmd" >/dev/null 2>&1; then
echo "Ошибка: $cmd не установлен."
exit 1
fi
done
CONFIGURE_FLAGS=(--with-localdirs)
if [ -r /etc/os-release ]; then
. /etc/os-release
if [ "${ID:-}" = "debian" ] && [ "${VERSION_ID%%.*}" = "11" ]; then
echo "Debian 11 detected: compiling without OpenSSL support"
CONFIGURE_FLAGS+=(--without-openssl)
fi
fi
NMAP_ARCHIVE=$(curl -fsSL https://nmap.org/download.html | grep -Eo 'nmap-[0-9]+\.[0-9]+\.tar\.bz2' | sort -V | tail -n 1)
if [ -z "$NMAP_ARCHIVE" ]; then
echo "Ошибка: не удалось определить последнюю версию."
exit 1
fi
NMAP_VER=${NMAP_ARCHIVE#nmap-}
NMAP_VER=${NMAP_VER%.tar.bz2}
CURRENT_VER=$({ /usr/local/bin/nmap --version 2>/dev/null || true; } | awk '/^Nmap version / {print $3; exit}')
CURRENT_VER=${CURRENT_VER:-0}
echo "Текущая версия: $CURRENT_VER"
echo "Последняя версия: $NMAP_VER"
if [ "$CURRENT_VER" = "$NMAP_VER" ]; then
echo "Nmap уже последней версии."
exit 0
fi
BUILD_DIR=$(mktemp -d)
trap 'rm -rf "$BUILD_DIR"' EXIT
cd "$BUILD_DIR"
curl -fLO "https://nmap.org/dist/$NMAP_ARCHIVE"
curl -fLo "$NMAP_ARCHIVE.digest.txt" "https://nmap.org/dist/sigs/$NMAP_ARCHIVE.digest.txt"
NMAP_SHA256=$(awk '
/SHA256 =/ {
sub(/^.*SHA256 = /, "")
gsub(/[[:space:]]/, "")
hash = $0
getline
gsub(/[[:space:]]/, "")
hash = hash $0
print tolower(hash)
exit
}
' "$NMAP_ARCHIVE.digest.txt")
if [ -z "$NMAP_SHA256" ]; then
echo "Ошибка: не удалось извлечь SHA256 из файла контрольной суммы."
exit 1
fi
echo "Проверка контрольной суммы..."
printf '%s %s\n' "$NMAP_SHA256" "$NMAP_ARCHIVE" | sha256sum -c -
tar -xjf "$NMAP_ARCHIVE"
cd "nmap-$NMAP_VER"
./configure "${CONFIGURE_FLAGS[@]}"
make -j"$(nproc)"
make install
echo "Обновление завершено!"
/usr/local/bin/nmap --version
EOF
sudo chmod 0755 /usr/local/bin/update-nmap
Запуск обновления:
sudo update-nmap
5. 📡 Основные команды Nmap
5.1 Сканирование одного хоста
nmap 192.168.1.1
5.2 Сканирование диапазона портов
nmap -p 80,443,8080 192.168.1.1
nmap -p 1-1000 192.168.1.1
5.3 Определение версий служб
nmap -sV 192.168.1.1
5.4 Определение операционной системы (требует sudo)
sudo nmap -O 192.168.1.1
5.5 SYN-сканирование (быстрое, требует sudo)
sudo nmap -sS 192.168.1.1
5.6 Сканирование всей локальной сети
nmap 192.168.1.0/24
6. 📖 Понимание состояний портов
| Состояние | Значение |
|---|---|
open | Порт открыт, приложение принимает соединения |
closed | Порт доступен, но ничего не слушает |
filtered | Порт отфильтрован фаерволом (Nmap не получил ответ) |
unfiltered | Порт доступен, но Nmap не может определить, открыт он или закрыт |
7. ⚠️ Решение типичных проблем
7.1 Ошибка: nmap: command not found
Симптом: Команда nmap не найдена.
Причина: Nmap не установлен.
Решение: Установите через APT (раздел 3) или соберите из исходников.
7.2 Ошибка: Permission denied при использовании -O или -sS
Симптом: nmap -O 192.168.1.1 выдаёт Operation not permitted.
Причина: SYN-сканирование и определение ОС требуют raw-сокетов.
Решение: Используйте sudo:
sudo nmap -O 192.168.1.1
7.3 Ошибка компиляции: missing libssl-dev или libpcap-dev
Симптом: ./configure выдаёт ошибку о недостающей библиотеке.
Решение:
sudo apt install libssl-dev libpcap-dev -y
./configure
7.4 Ошибка компиляции на Debian 11 (OpenSSL)
Симптом: Сборка Nmap 7.99 на Debian 11 падает с ошибкой в nse_ssl_cert.cc.
Причина: Nmap 7.99 не компилируется с OpenSSL на Debian 11.
Решение: Скрипт из раздела 4.6 автоматически определит Debian 11 и добавит флаг --without-openssl. Если вы собираете вручную, используйте:
./configure --with-localdirs --without-openssl
7.5 Nmap установлен, но команда не найдена
Симптом: nmap --version не работает, но sudo /usr/local/bin/nmap --version работает.
Причина: Директория /usr/local/bin не добавлена в PATH (редко, но бывает).
Решение: Временно:
export PATH=/usr/local/bin:$PATH
Постоянно: добавьте в ~/.bashrc:
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
8. ❌ Удаление Nmap
Удаление APT-версии
sudo apt remove --purge nmap ncat ndiff -y
sudo apt autoremove -y
Удаление source-сборки
sudo rm -f /usr/local/bin/nmap /usr/local/bin/ncat /usr/local/bin/nping
sudo rm -f /usr/local/bin/update-nmap
sudo rm -rf /usr/local/share/nmap
Проверка удаления
command -v nmap
✅ Ожидаемый вывод: Пустая строка.
9. 📝 Чек-лист: всё готово к работе
- [ ] Система обновлена (
sudo apt update && sudo apt upgrade -y) - [ ] Выбран и выполнен один из способов установки (APT / Source)
- [ ]
nmap --versionпоказывает ожидаемую версию - [ ]
command -v nmapпоказывает правильный путь (/usr/bin/nmapдля APT,/usr/local/bin/nmapдля Source) - [ ]
nmap localhostвыполняется без ошибок - [ ]
sudo nmap -O localhostработает (определяет ОС) - [ ] (Для source-сборки) Скрипт обновления работает (
sudo update-nmap)
Заключение
Вы установили Nmap на Debian. Если вы выбрали APT — получили стабильную, проверенную версию, которая будет обновляться вместе с системой. Если собрали из исходников — получили самую свежую версию с новыми NSE-скриптами и проверкой SHA256, которую можно обновлять скриптом из раздела 4.6. На Debian 11 сборка из исходников автоматически отключает OpenSSL для совместимости. Nmap — это мощный инструмент для исследования сетей, аудита безопасности и диагностики. Главное, что нужно запомнить: для SYN-сканирования и определения ОС требуются права root, а для проверки целостности source-сборки всегда используйте SHA256.
Что дальше:
- Изучите официальную документацию Nmap
- Попробуйте NSE-скрипты:
nmap --script vuln 192.168.1.1(сканирование уязвимостей) - Используйте Nmap для проверки своего фаервола
- Совместите с Wireshark для анализа трафика и с Chkrootkit для проверки безопасности
Связанные статьи: