linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Команды/cmd-nmap

kb/commands ── Команды ── intermediate

nmap - сканирование портов и хостов

nmap - сетевой сканер: discover хостов (-sn), TCP/UDP-порты (-sS/-sU), версии сервисов (-sV), ОС (-O), NSE-скрипты. Только в своей сети или с явным разрешением - сканировать чужое запрещено.

view as markdownaka: nmap, port-scanner, network-mapper

Когда применять

  • Discover - какие хосты живут в подсети
  • Inventory - какие порты открыты, какие сервисы крутятся
  • Security audit - проверить что firewall закрыл то, что должен
  • Troubleshoot - почему клиент не подключается к порту?

Юридическое: сканирование чужих сетей в большинстве юрисдикций незаконно. Сканируй только свою инфраструктуру или с письменным разрешением (red team engagement).

Базовые типы сканирования

Host discovery (-sn)

Без сканирования портов - только пинг кто живой:

bash
sudo nmap -sn 192.168.1.0/24
Nmap scan report for 192.168.1.1
Host is up (0.0011s latency).
Nmap scan report for 192.168.1.42
Host is up (0.052s latency).

Шлёт ICMP echo + TCP SYN на 80/443 + ARP в локалке. ARP надёжен на L2, ICMP может быть зафильтрован.

TCP SYN scan (-sS)

Самый быстрый и стандартный. Шлёт [[tcp-handshake|SYN]], получает SYN-ACK = open, RST = closed, нет ответа = filtered:

bash
sudo nmap -sS 192.168.1.42
PORT     STATE    SERVICE
22/tcp   open     ssh
80/tcp   open     http
443/tcp  filtered https
  • open - сервис принимает соединения
  • closed - порт доступен, но никто не слушает (RST)
  • filtered - firewall дропает (нет ответа)

Нужны root-права (raw sockets).

TCP connect scan (-sT)

Без root - использует обычный connect():

bash
nmap -sT 192.168.1.42

Медленнее, шумнее в логах (полный handshake), зато из user-space.

UDP scan (-sU)

bash
sudo nmap -sU -p 53,123,161 192.168.1.42

Проблема UDP-сканирования: «нет ответа» = либо open, либо filtered. Закрытый порт шлёт ICMP unreachable, но rate-limited. Поэтому UDP-scan долгий - часто час на /24.

Service version (-sV)

bash
nmap -sV -p 80,22,443 example.com
PORT    STATE  SERVICE  VERSION
22/tcp  open   ssh      OpenSSH 9.6 (protocol 2.0)
80/tcp  open   http     nginx 1.24.0
443/tcp open   ssl/http nginx 1.24.0

Шлёт пробы и парсит ответ для определения версии. Полезно для vulnerability assessment.

OS detection (-O)

bash
sudo nmap -O 192.168.1.42
Running: Linux 5.X
OS details: Linux 5.4 - 6.5

Анализ TCP-стэка - размеры окон, опции, behaviour. Не 100% точно.

Полезные опции

ОпцияЧто
-p 22,80,443конкретные порты
-p-все 65535 портов
-p 1-1024диапазон
-T0..T5timing - 0 paranoid, 5 insane
-Aaggressive: -O + -sV + traceroute + scripts
-Pnне пинговать перед сканом (если ICMP блокирован)
-nбез DNS
-oA resultдамп в XML/grep/normal формат
--openтолько открытые порты в выводе
--top-ports 100100 самых популярных портов
-iL hosts.txtсписок целей из файла
--reasonпочему порт классифицирован (SYN-ACK, RST, no-response)

NSE - Nmap Scripting Engine

Сотни скриптов для глубокой проверки. Категории:

  • safe - не вредят
  • default - базовая проверка
  • vuln - известные уязвимости
  • auth - аутентификация / brute force
  • discovery - сбор информации
bash
nmap --script=default 192.168.1.42
nmap --script=vuln 192.168.1.42
nmap --script=ssl-enum-ciphers -p 443 example.com
nmap --script=http-title -p 80 192.168.1.0/24

Полезные скрипты:

  • ssl-enum-ciphers - какие cipher suites сервер поддерживает
  • http-title - заголовок страницы
  • smb-os-discovery - версия Windows / Samba
  • dns-zone-transfer - проверка AXFR
  • vuln-cve2021-XXXX - конкретные CVE

Сканирование от хоста к хосту в локалке

ARP-scan быстрее всего:

bash
sudo nmap -sn -PR 192.168.1.0/24    # ARP discovery

За ~3 секунды на /24 в localnet.

Stealth и обход

-T - timing

  • -T0 (paranoid) - один пакет в 5 минут (для IDS-обхода)
  • -T2 (polite) - 0.4с между пробами
  • -T3 (default) - норма
  • -T4 (aggressive) - быстрее, может терять пакеты на плохой сети
  • -T5 (insane) - максимум, годится для локалки

-f - фрагментация

Делит TCP-пакет на 8-байтовые фрагменты. Старые firewall'ы могут пропустить.

--source-port - фейковый source

bash
sudo nmap --source-port 53 192.168.1.42

Эмулирует ответ DNS-сервера - может пройти firewall.

Когда что-то пошло не так

  • Все порты filtered - firewall дропает SYN; попробуй -Pn если хост не отвечает на ICMP, или другой подход (-sA ACK scan)
  • Сканирование зависает - часто на UDP. Снизь количество портов или используй -T4
  • Ложные «open» - load balancer перед сервисом отвечает SYN-ACK на любой запрос, потом RST. -sV дисквалифицирует
  • Тебя забанили - агрессивный скан → IDS заблокировал. Используй -T2 и таргетируй

Полезные комбинации

bash
# Быстрая ревизия открытых портов в подсети
sudo nmap -sS --top-ports 100 --open -T4 -n 192.168.1.0/24
# Полный аудит одного хоста
sudo nmap -A -p- -T4 192.168.1.42
# SSL-аудит
nmap --script=ssl-enum-ciphers -p 443 example.com
# Сравнить два скана (изменилось что?)
ndiff before.xml after.xml

§ команды

bash
sudo nmap -sn 192.168.1.0/24

Discover - кто живой в подсети, без сканирования портов

bash
sudo nmap -sS --top-ports 100 192.168.1.42

Быстрый SYN-скан 100 популярных портов одного хоста

bash
nmap -sV -p 22,80,443 example.com

Версии сервисов на конкретных портах

bash
nmap --script=ssl-enum-ciphers -p 443 example.com

Какие cipher suites поддерживает HTTPS-сервер

bash
sudo nmap -A -p- 192.168.1.42

Полный скан: все 65535 портов + версии + OS + NSE-скрипты. Долго!

§ см. также

  • portПорт - как несколько сервисов делят один IP16-битное число (0-65535), идентифицирует **процесс-получатель** на хосте. IP говорит куда (хост), порт - кому (процессу). 80 - HTTP, 443 - HTTPS, 22 - SSH.
  • tcp-handshakeTCP three-way handshakeTCP-соединение открывается тремя пакетами: SYN от клиента, SYN-ACK от сервера, ACK от клиента. После - соединение Established, можно слать данные.
  • udp-basicsUDP - User Datagram ProtocolUDP - простой протокол доставки датаграмм без установки соединения, без ретрансмитов, без гарантии порядка. Заголовок 8 байт. Применение: DNS, DHCP, QUIC, VoIP, любой случай когда задержка важнее надёжности.
  • ipv4-addressingIPv4-адресация и CIDRIP-адрес = 32 бита, обычно как `a.b.c.d`. **/N** в конце - длина префикса сети: `/24` = первые 24 бита фиксированы, последние 8 - host'ы (256 адресов).
  • conntrackConntrack - память Linux о всех сетевых соединенияхПодсистема ядра Linux, которая помнит каждое активное соединение. Без неё NAT не развернёт ответ на нужный приватный IP, а фаервол не отличит «новый коннект» от «уже установленного». Видна в `/proc/net/nf_conntrack`.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки