7.1 DNS
Проблема: как запомнить IP-адреса?
Людям сложно запоминать IP-адреса (например, 93.184.216.34). Гораздо проще запомнить доменное имя (например, example.com). DNS (Domain Name System) — это "телефонная книга интернета", которая переводит доменные имена в IP-адреса.
Аналогия: DNS — это как телефонный справочник: вы знаете имя (доменное имя), а система находит номер (IP-адрес).
Как работает DNS?
Процесс разрешения имени (DNS lookup):
- Запрос: Браузер хочет открыть сайт "example.com"
- Локальный кэш: Проверяется локальный кэш DNS (на компьютере)
- Рекурсивный резолвер: Если не найдено, запрос идет к DNS-серверу провайдера (рекурсивный резолвер)
- Корневой сервер: Резолвер спрашивает корневой DNS-сервер: "Где находится .com?"
- TLD-сервер: Корневой сервер направляет к серверу домена .com
- Авторитативный сервер: Сервер .com направляет к авторитативному серверу example.com
- Ответ: Авторитативный сервер возвращает IP-адрес example.com
- Кэширование: Ответ сохраняется в кэше для ускорения следующих запросов
Иерархия DNS
Структура доменных имен:
- Корневая зона (.) — верхний уровень иерархии
- TLD (Top-Level Domain) — домены верхнего уровня (.com, .org, .ru, .net)
- Домены второго уровня — example.com, google.com
- Поддомены — www.example.com, mail.example.com
Пример: В имени "www.example.com" — "com" это TLD, "example" это домен второго уровня, "www" это поддомен.
Типы DNS-записей
Основные типы записей:
- A — IPv4-адрес домена (например, example.com → 93.184.216.34)
- AAAA — IPv6-адрес домена
- CNAME — алиас (каноническое имя), указывает на другое доменное имя (например, www → example.com)
- MX — почтовый сервер для домена (для email)
- NS — серверы имен, которые отвечают за домен
- TXT — произвольный текст (используется для SPF, DKIM и других целей)
- SRV — информация о службах (например, для VoIP, XMPP)
TTL: время жизни записей
TTL (Time To Live) — время, в течение которого DNS-запись считается действительной и хранится в кэше. После истечения TTL запрос повторяется.
Пример: Если TTL = 3600 секунд (1 час), то DNS-резолвер будет использовать кэшированное значение в течение часа, затем запросит обновление.
Безопасность DNS
Методы защиты:
- DNSSEC — криптографическая подпись записей, защищает от подмены (spoofing)
- DoT (DNS over TLS) — шифрование DNS-запросов через TLS
- DoH (DNS over HTTPS) — DNS-запросы через HTTPS, скрывает их от провайдера
# Диагностика DNS
# Windows
nslookup example.com
nslookup -type=MX example.com
# Linux/macOS
dig example.com
dig example.com MX
dig example.com ANY
# Быстрый запрос
dig example.com +short
Резюме
Ключевые моменты:
- DNS — система перевода доменных имен в IP-адреса
- Иерархия: Корневая зона → TLD → домены второго уровня → поддомены
- Процесс: Локальный кэш → рекурсивный резолвер → корневой сервер → TLD → авторитативный сервер
- Записи: A/AAAA (IP-адреса), CNAME (алиасы), MX (почта), NS (серверы имен)
- TTL — время жизни записей в кэше
- Безопасность: DNSSEC, DoT, DoH для защиты от подмены
Цель: Обеспечить удобный способ доступа к ресурсам интернета по понятным именам вместо числовых IP-адресов.
7.2 HTTP/HTTPS
HTTP — протокол прикладного уровня с моделью запрос/ответ. HTTPS добавляет шифрование и аутентификацию через TLS. Базовые методы: GET/POST/PUT/PATCH/DELETE; коды статуса: 1xx–5xx.
Ключевые аспекты HTTPS/TLS
- TLS рукопожатие: выбор параметров, обмен ключами, проверка сертификата.
- Сертификаты X.509: цепочка доверия, CA/Intermediate, проверки CN/SAN, OCSP/CRL.
- HTTP/2 и HTTP/3: мультиплексирование потоков, сжатие заголовков (HPACK/QPACK), на базе TLS/QUIC.
- Идемпотентность: GET/PUT/DELETE — идемпотентны; POST — нет. Это влияет на ретраи и прокси.
- Кэширование: Cache‑Control/ETag/Last‑Modified управляют валидностью; Vary влияет на ключи кэша.
7.3 DHCP
Проблема: ручная настройка IP-адресов
В больших сетях настраивать IP-адреса вручную на каждом устройстве неэффективно и подвержено ошибкам. DHCP (Dynamic Host Configuration Protocol) автоматически выдает IP-адреса и другие параметры сети устройствам.
Аналогия: DHCP — это как "автоматическая выдача номеров" в гостинице. Вы приезжаете, и вам автоматически выдают номер (IP-адрес) и ключ (параметры сети).
Как работает DHCP?
Процесс получения IP-адреса называется DORA (по первым буквам этапов):
Процесс DORA:
- Discover — устройство отправляет broadcast-запрос: "Есть ли DHCP-сервер?"
- Offer — DHCP-сервер отвечает: "Да, вот тебе IP-адрес и параметры"
- Request — устройство подтверждает: "Хорошо, я принимаю этот адрес"
- Acknowledge — сервер подтверждает: "Адрес зарезервирован за тобой"
Что выдает DHCP?
Параметры, выдаваемые DHCP:
- IP-адрес — уникальный адрес устройства
- Маска подсети — определяет размер сети
- Шлюз по умолчанию — маршрутизатор для выхода в другие сети
- DNS-серверы — адреса серверов для разрешения имен
- Дополнительные опции — домен поиска, время аренды и т.д.
Аренда адресов
DHCP выдает адреса не навсегда, а на определенное время — аренду (lease). Это позволяет эффективно использовать ограниченное количество адресов.
Процесс аренды:
- Выдача: Сервер выдает адрес на определенное время (например, 24 часа)
- Обновление: За 50% времени аренды устройство запрашивает продление
- Освобождение: Если устройство отключается, адрес возвращается в пул
- Преимущество: Адреса не "застревают" у отключенных устройств
Резервирование адресов
Для важных устройств (серверы, принтеры) можно зарезервировать постоянный IP-адрес на основе их MAC-адреса.
Пример: Сервер с MAC-адресом AA:BB:CC:DD:EE:FF всегда получит IP 192.168.1.100, даже если перезагрузится.
DHCP-опции
Стандартные опции:
- Опция 3 — шлюз по умолчанию (Router)
- Опция 6 — DNS-серверы
- Опция 15 — домен поиска
- Опция 51 — время аренды адреса
APIPA: автоматический IP без DHCP
APIPA (Automatic Private IP Addressing) — это механизм, который позволяет устройству автоматически назначить себе IP-адрес, если DHCP-сервер недоступен. Это часть стандарта Microsoft (начиная с Windows 98) и используется в Windows, macOS и некоторых других системах.
Как работает APIPA:
- Попытка получить адрес через DHCP: Устройство отправляет DHCP Discover и ждет ответа
- Таймаут: Если DHCP-сервер не отвечает в течение определенного времени, запускается APIPA
- Генерация адреса: Устройство случайным образом выбирает адрес из диапазона 169.254.0.0/16 (169.254.1.0 — 169.254.254.255)
- Проверка уникальности: Устройство отправляет ARP-запрос для проверки, не используется ли этот адрес другим устройством
- Назначение: Если адрес свободен, устройство назначает его себе
- Повторные попытки: Устройство продолжает периодически искать DHCP-сервер в фоновом режиме
Характеристики APIPA:
- Диапазон адресов: 169.254.0.0/16 (169.254.1.0 — 169.254.254.255)
- Маска подсети: 255.255.0.0 (/16)
- Шлюз по умолчанию: Не назначается (нет выхода за пределы локальной сети)
- DNS-серверы: Не назначаются
- Использование: Только для связи внутри локальной сети (link-local)
Когда появляется APIPA: Если вы видите адрес 169.254.x.x на вашем устройстве, это значит, что DHCP-сервер недоступен. Возможные причины: сервер не работает, сетевой кабель не подключен, проблемы с коммутатором или настройками сети.
Отличия от приватных адресов:
- 169.254.0.0/16 (APIPA) — автоматически назначается при отсутствии DHCP, только для локальной связи
- 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12 — приватные адреса для внутренних сетей, могут маршрутизироваться через NAT
Диагностика: Если устройство получило APIPA-адрес, проверьте:
- Работает ли DHCP-сервер?
- Подключен ли сетевой кабель?
- Правильно ли настроен порт коммутатора (VLAN)?
- Достаточно ли адресов в пуле DHCP?
# Проверка APIPA-адреса
# Windows
ipconfig /all
# Если видите адрес 169.254.x.x — это APIPA
# Освобождение и обновление DHCP
ipconfig /release
ipconfig /renew
# Linux/macOS
ip addr show
# Если видите адрес 169.254.x.x — это APIPA (или link-local в IPv6)
# Освобождение и обновление DHCP
sudo dhclient -r # release
sudo dhclient # renew
IPv6 эквивалент: В IPv6 существует аналогичный механизм — Link-Local адреса (fe80::/10). Они автоматически назначаются всем устройствам и используются для связи внутри локального сегмента сети.
Резюме
Ключевые моменты:
- DHCP — автоматическая выдача IP-адресов и параметров сети
- Процесс DORA: Discover → Offer → Request → Acknowledge
- Выдает: IP-адрес, маску, шлюз, DNS-серверы
- Аренда: Адреса выдаются на время, затем обновляются или освобождаются
- Резервирование: Постоянные адреса для важных устройств
Цель: Упростить настройку сетей, автоматизировать выдачу адресов и уменьшить количество ошибок конфигурации.
7.4 Почтовые протоколы
Отправка — SMTP; получение — IMAP/POP3. Для защиты транспорта используются STARTTLS/TLS. Аутентикация домена и защита от подмены — через SPF/DKIM/DMARC.
Практические моменты почты
- SMTP submission порт 587 с аутентификацией; MTA‑to‑MTA — 25 порт.
- IMAPS/POP3S: 993/995; IMAP предпочтителен благодаря синхронизации состояния.
- SPF/DKIM/DMARC: публикация записей, выравнивание доменов, политика reject/quarantine.
7.5 VoIP и SIP
VoIP переносит голос по IP. SIP управляет сигнализацией (создание/изменение/завершение сессии), а медиа передаются по RTP/SRTP.
Базовые элементы
- Регистрация: UA регистрируется на SIP‑сервере (Registrar/Proxy).
- Сессия: INVITE/200 OK/ACK, параметры медиа в SDP (кодеки, порты).
- NAT‑траверс: STUN/TURN/ICE для установления медиапути через NAT.
Качество и кодеки
- Кодеки: G.711 (простой, высокая полоса), Opus (адаптивный), G.729 (низкая полоса).
- Буфер джиттера: сглаживает вариации задержки, компромисс с задержкой.
- MOS: метрика субъективного качества; важны задержка/джиттер/потери.
Безопасность: используйте TLS для SIP и SRTP для медиа; сегментация голосового трафика (VLAN/QoS) снижает взаимное влияние.
7.6 Протоколы удаленного доступа
Зачем нужен удаленный доступ?
Администраторам и пользователям часто нужно управлять удаленными системами: настраивать серверы, управлять сетевым оборудованием, работать на удаленных компьютерах. Для этого используются протоколы удаленного доступа.
Задачи протоколов удаленного доступа:
- Управление сетевым оборудованием (коммутаторы, маршрутизаторы)
- Администрирование серверов
- Удаленная работа на рабочих станциях
- Техническая поддержка пользователей
SSH — защищенный протокол управления
SSH (Secure Shell) — криптографический сетевой протокол для безопасного удаленного управления системами и передачи данных. SSH шифрует весь трафик, включая пароли, что делает его стандартом для удаленного администрирования.
Ключевые особенности SSH:
- Шифрование: Все данные передаются в зашифрованном виде
- Аутентификация: Поддержка паролей и ключей (публичный/приватный)
- Порт: 22 (TCP)
- Целостность: Защита от подмены данных через HMAC
- Туннелирование: Возможность создавать защищенные туннели для других протоколов (port forwarding)
Процесс установления SSH-соединения:
- Рукопожатие: Клиент и сервер договариваются об алгоритмах шифрования
- Обмен ключами: Генерируется общий сеансовый ключ (Diffie-Hellman)
- Проверка хоста: Клиент проверяет fingerprint сервера
- Аутентификация: Пользователь вводит пароль или использует SSH-ключ
- Сессия: Устанавливается защищенное соединение для команд
# Подключение к удаленному хосту
ssh username@192.168.1.10
ssh username@server.example.com
# Подключение на нестандартный порт
ssh -p 2222 username@192.168.1.10
# Подключение с использованием приватного ключа
ssh -i ~/.ssh/id_rsa username@192.168.1.10
# Копирование файлов через SSH (SCP)
scp file.txt username@192.168.1.10:/home/username/
scp username@192.168.1.10:/var/log/app.log ./
# SFTP — защищенная передача файлов
sftp username@192.168.1.10
# Port Forwarding (туннелирование)
# Локальное: локальный порт 8080 → удаленный 80
ssh -L 8080:localhost:80 username@192.168.1.10
# Удаленное: удаленный порт 8080 → локальный 80
ssh -R 8080:localhost:80 username@192.168.1.10
# Динамическое (SOCKS-прокси)
ssh -D 1080 username@192.168.1.10
SSH-ключи vs пароли:
- Пароли: Просто, но уязвимы к перебору и фишингу
- SSH-ключи: Пара ключей (публичный/приватный), намного безопаснее
- Публичный ключ размещается на сервере (~/.ssh/authorized_keys)
- Приватный ключ хранится на клиенте (никогда не передается по сети)
- Опционально защищен паролем (passphrase)
- Невозможно подобрать или перехватить
# Генерация SSH-ключей
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-keygen -t ed25519 -C "your_email@example.com" # Современный алгоритм
# Копирование публичного ключа на сервер
ssh-copy-id username@192.168.1.10
# Настройка SSH-сервера (файл /etc/ssh/sshd_config)
Port 22 # Порт SSH
PermitRootLogin no # Запретить вход под root
PasswordAuthentication no # Отключить аутентификацию по паролю (только ключи)
PubkeyAuthentication yes # Разрешить аутентификацию по ключам
MaxAuthTries 3 # Максимум попыток входа
ClientAliveInterval 300 # Таймаут неактивности
ClientAliveCountMax 2 # Количество проверок перед отключением
Telnet — незащищенный предшественник SSH
Telnet — протокол для удаленного управления, который передает данные в открытом виде, включая пароли. Исторический протокол, сейчас считается небезопасным.
Характеристики Telnet:
- Порт: 23 (TCP)
- Шифрование: Отсутствует — все данные передаются открытым текстом
- Аутентификация: Простая (логин/пароль в открытом виде)
- Безопасность: Крайне низкая — легко перехватить пароли
- Применение сегодня: Только для тестирования или в изолированных сетях
# Подключение через Telnet
telnet 192.168.1.10
telnet 192.168.1.10 23
# Telnet для проверки доступности порта (диагностика)
telnet google.com 80
telnet smtp.example.com 25
# Пример использования Telnet для проверки HTTP
telnet google.com 80
GET / HTTP/1.1
Host: google.com
# (Enter дважды)
Важно: Telnet НЕ следует использовать для управления в продакшене! Используйте SSH. Telnet можно применять только для диагностики (проверка доступности порта) в доверенных сетях.
RDP — удаленный рабочий стол Windows
RDP (Remote Desktop Protocol) — протокол Microsoft для удаленного доступа к графическому рабочему столу Windows. Позволяет полностью управлять удаленным компьютером как будто вы сидите за ним.
Характеристики RDP:
- Порт: 3389 (TCP/UDP)
- Шифрование: TLS 1.2+ (в современных версиях)
- Графический интерфейс: Полная передача рабочего стола
- Функции: Буфер обмена, принтеры, диски, аудио, USB-устройства
- Оптимизация: Сжатие данных, кэширование, адаптация к пропускной способности
- Multi-session: Поддержка одновременных сессий (Windows Server)
# Подключение через RDP
# Windows: встроенный клиент
mstsc.exe # Графический интерфейс
mstsc /v:192.168.1.10 # Прямое подключение
mstsc /v:192.168.1.10:3390 # Нестандартный порт
# Linux: клиент rdesktop или freerdp
rdesktop 192.168.1.10
xfreerdp /v:192.168.1.10 /u:username /p:password /cert:ignore
# macOS: Microsoft Remote Desktop (из App Store)
# Настройка RDP на Windows (PowerShell)
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
# Проверка доступности RDP
Test-NetConnection -ComputerName 192.168.1.10 -Port 3389
Безопасность RDP:
- NLA (Network Level Authentication): Аутентификация до установки сессии
- Сильные пароли: Обязательны для защиты от перебора
- Ограничение доступа: Firewall, белые списки IP
- VPN: Используйте RDP только через VPN, не из интернета напрямую
- Multi-factor: Двухфакторная аутентификация
- Обновления: Регулярные патчи (уязвимости типа BlueKeep)
VNC — кроссплатформенный удаленный рабочий стол
VNC (Virtual Network Computing) — открытый протокол для удаленного доступа к графическому интерфейсу. Работает на всех платформах (Windows, Linux, macOS).
Характеристики VNC:
- Порт: 5900+ (5900, 5901, 5902... для разных дисплеев)
- Протокол: RFB (Remote Frame Buffer)
- Шифрование: По умолчанию нет (нужно через SSH-туннель или VNC + TLS)
- Кроссплатформенность: Работает везде
- Легковесность: Меньше функций, чем RDP, но проще
- Варианты: TightVNC, RealVNC, TigerVNC, UltraVNC
# Запуск VNC-сервера (Linux)
vncserver :1 # Запуск на дисплее :1 (порт 5901)
vncserver -kill :1 # Остановка
# Подключение к VNC-серверу
vncviewer 192.168.1.10:1 # Дисплей :1 (порт 5901)
vncviewer 192.168.1.10:5901 # Прямое указание порта
# VNC через SSH-туннель (безопасно!)
ssh -L 5901:localhost:5901 username@192.168.1.10
vncviewer localhost:1
# Настройка VNC с паролем
vncpasswd # Установка пароля VNC
# Windows: UltraVNC, TightVNC
# macOS: встроенный "Screen Sharing" или клиенты VNC
Безопасность VNC: Базовый VNC не шифрует трафик! Обязательно используйте SSH-туннель или VNC с TLS для защиты. Никогда не открывайте VNC напрямую в интернет.
Сравнение протоколов
| Протокол | Порт | Шифрование | Применение | Безопасность |
|---|---|---|---|---|
| SSH | 22 | ✅ Да (обязательно) | Управление CLI, передача файлов | 🟢 Высокая |
| Telnet | 23 | ❌ Нет | Устаревший, только для тестов | 🔴 Крайне низкая |
| RDP | 3389 | ✅ TLS (современный) | Удаленный рабочий стол Windows | 🟡 Средняя (с NLA) |
| VNC | 5900+ | ⚠️ Опционально (через SSH) | Кроссплатформенный рабочий стол | 🟡 Средняя (с туннелем) |
Лучшие практики безопасности
Общие рекомендации:
- SSH-ключи вместо паролей: Для SSH всегда используйте ключи
- Отключить Telnet: Никогда не используйте в продакшене
- VPN для графических протоколов: RDP и VNC только через VPN
- Нестандартные порты: Измените порты по умолчанию (security through obscurity — не основная защита, но помогает)
- Firewall: Ограничьте доступ по IP-адресам
- Fail2Ban: Автоматическая блокировка после неудачных попыток входа
- Мониторинг: Логируйте все попытки доступа
- Multi-factor: Двухфакторная аутентификация где возможно
- Обновления: Своевременные патчи безопасности
# Настройка Fail2Ban для SSH (Linux)
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3 # Максимум попыток
bantime = 3600 # Время блокировки (секунды)
findtime = 600 # Окно для подсчета попыток
# Проверка заблокированных IP
fail2ban-client status sshd
# Firewall: разрешить SSH только с определенной подсети
# iptables (Linux)
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
# Windows Firewall
New-NetFirewallRule -DisplayName "RDP from LAN only" -Direction Inbound -LocalPort 3389 -Protocol TCP -RemoteAddress 192.168.1.0/24 -Action Allow
Практические сценарии
Когда использовать:
- SSH: Управление Linux/Unix серверами, сетевым оборудованием, автоматизация через скрипты
- Telnet: Только для диагностики портов (telnet host port) в доверенных сетях
- RDP: Администрирование Windows серверов, удаленная работа на Windows
- VNC: Управление Linux GUI, кроссплатформенный доступ, техподдержка
Jump Host (Bastion): В продакшене часто используется архитектура с "прыжковым хостом" — специальный защищенный сервер, через который проходит весь удаленный доступ. Это добавляет дополнительный уровень безопасности и централизованный аудит.
Резюме
Ключевые моменты:
- SSH (порт 22) — защищенное управление через командную строку, стандарт для администрирования
- Telnet (порт 23) — незащищенный, устаревший, только для диагностики
- RDP (порт 3389) — удаленный рабочий стол Windows с шифрованием
- VNC (порт 5900+) — кроссплатформенный графический доступ, требует SSH-туннель
- SSH-ключи — предпочтительный метод аутентификации вместо паролей
- VPN — обязателен для графических протоколов из интернета
- Firewall + Fail2Ban — защита от атак перебора
- Jump Host — дополнительный уровень безопасности для критичных систем
Цель: Обеспечить безопасный и эффективный удаленный доступ для администрирования систем и удаленной работы.