package infosecmodules import ( "rubric/utils" ) var NetsecModule = Module{ Key: "netsec", Aliases: []string{"ns", "network", "сетьбез"}, Title: "Сетевая безопасность", Description: "Сканирование, анализ трафика, IDS/IPS, VPN, сегментация сети", Run: showNetsec, } func showNetsec() { utils.Header("InfoSec — Сетевая безопасность") utils.Section("Сетевая разведка и сканирование") utils.Code(`# nmap — сетевой сканер: nmap 192.168.1.1 # базовое сканирование nmap 192.168.1.0/24 # сканировать подсеть nmap -sV 192.168.1.1 # определить версии сервисов nmap -sV -sC 192.168.1.1 # + скрипты по умолчанию nmap -p 22,80,443 192.168.1.1 # конкретные порты nmap -p 1-1000 192.168.1.1 # диапазон портов nmap -p- 192.168.1.1 # все 65535 портов nmap -A 192.168.1.1 # OS, версии, скрипты, traceroute nmap -O 192.168.1.1 # определить ОС nmap -sn 192.168.1.0/24 # только ping sweep (без портов) nmap -sS 192.168.1.1 # SYN scan (stealth, нужен root) nmap -sU -p 53,161 192.168.1.1 # UDP сканирование nmap -Pn 192.168.1.1 # не пинговать перед сканом nmap --script vuln 192.168.1.1 # проверка уязвимостей nmap -oA results 192.168.1.1 # сохранить в 3 форматах # masscan — очень быстрое сканирование: masscan -p80,443 192.168.0.0/16 --rate=10000 # rustscan — быстрый сканер на Rust: rustscan -a 192.168.1.1 -- -sV -sC`) utils.Section("Анализ трафика") utils.Code(`# tcpdump — захват пакетов в CLI: tcpdump -i eth0 # всё с интерфейса tcpdump -i eth0 port 80 # только HTTP tcpdump -i eth0 host 192.168.1.10 # к/от хоста tcpdump -i eth0 'tcp and port 443' # HTTPS tcpdump -i eth0 -w capture.pcap # сохранить в файл tcpdump -r capture.pcap # читать файл tcpdump -i eth0 -n -A port 80 # без разрешения имён, ASCII tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0' # SYN пакеты # Фильтры BPF (Berkeley Packet Filter): host 10.0.0.1 # хост net 192.168.1.0/24 # подсеть port 22 # порт tcp / udp / icmp # протокол src host 10.0.0.1 # только источник dst port 80 # только назначение not port 22 # исключить SSH`) utils.Println(utils.ColorBold + "Wireshark — GUI анализ:" + utils.ColorReset) utils.Code(`# Фильтры дисплея Wireshark: ip.addr == 192.168.1.1 # IP tcp.port == 80 # порт http # только HTTP http.request.method == "POST" # POST запросы tls.handshake # TLS handshake !(arp or dns) # исключить ARP и DNS tcp.flags.syn == 1 # SYN пакеты frame contains "password" # строка в пакете tcp.analysis.retransmission # ретрансмиссии # Tshark — CLI версия Wireshark: tshark -i eth0 -f "port 80" -w output.pcap tshark -r capture.pcap -T fields -e ip.src -e http.host`) utils.Section("IDS/IPS — системы обнаружения вторжений") utils.Code(`IDS (Intrusion Detection System) — обнаруживает, уведомляет IPS (Intrusion Prevention System) — обнаруживает И блокирует Типы: NIDS — сетевой (анализирует трафик) HIDS — хостовый (файлы, логи, процессы) Signature-based — сравнение с известными паттернами Anomaly-based — отклонение от нормы (ML) Snort — популярный NIDS/IPS: snort -i eth0 -c /etc/snort/snort.conf snort -r capture.pcap -c /etc/snort/snort.conf # Правило Snort: alert tcp any any -> $HOME_NET 22 ( msg:"Brute force SSH"; flow:to_server; threshold:type both, track by_src, count 5, seconds 60; sid:1000001; rev:1; ) Suricata — современная замена Snort: Многопоточный, поддерживает Lua-скрипты, YAML-конфиг OSSEC / Wazuh — HIDS: Анализ логов, мониторинг файловой системы (FIM), мониторинг реестра Windows, активный ответ`) utils.Section("Брандмауэры и сегментация") utils.Code(`Типы файрволов: Packet Filter — фильтрация по IP/порту/протоколу (L3-L4) Stateful — отслеживает состояние соединений Application (L7) — анализирует контент приложений WAF — Web Application Firewall (HTTP/HTTPS) NGFW — Next-Gen FW (IPS + AppID + SSL inspection) Сегментация сети: DMZ — демилитаризованная зона (веб-серверы, доступные снаружи) Разделение на VLAN по функции: серверная, управление, пользователи Micro-segmentation — в облаке и K8s (Network Policy) # iptables (Linux): # Разрешить входящий SSH: iptables -A INPUT -p tcp --dport 22 -j ACCEPT # Разрешить установленные соединения: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Заблокировать всё остальное входящее: iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # Сохранить правила: iptables-save > /etc/iptables/rules.v4 # nftables (современная замена iptables): nft add table ip filter nft add chain ip filter input { type filter hook input priority 0 \; policy drop \; } nft add rule ip filter input tcp dport 22 accept nft add rule ip filter input ct state established,related accept # Kubernetes Network Policy: apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-all spec: podSelector: {} policyTypes: [Ingress, Egress] --- apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-api spec: podSelector: matchLabels: app: api ingress: - from: - podSelector: matchLabels: app: frontend ports: - port: 8000`) utils.Section("VPN — виртуальные частные сети") utils.Code(`Типы VPN: Remote Access VPN — подключение удалённых пользователей Site-to-Site VPN — соединение офисов Split Tunneling — часть трафика через VPN, остальное напрямую Протоколы: WireGuard — современный, быстрый, простой (рекомендуется) OpenVPN — популярный, гибкий, на TLS IPsec — стандарт, сложная настройка L2TP/IPsec — устаревает PPTP — СЛОМАН, не использовать # WireGuard — быстрая настройка: # Установка: apt install wireguard # Генерация ключей: wg genkey | tee privatekey | wg pubkey > publickey # /etc/wireguard/wg0.conf (сервер): [Interface] PrivateKey = Address = 10.0.0.1/24 ListenPort = 51820 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] PublicKey = AllowedIPs = 10.0.0.2/32 # /etc/wireguard/wg0.conf (клиент): [Interface] PrivateKey = Address = 10.0.0.2/24 DNS = 1.1.1.1 [Peer] PublicKey = Endpoint = server_ip:51820 AllowedIPs = 0.0.0.0/0 # весь трафик через VPN PersistentKeepalive = 25 # Запуск: wg-quick up wg0 systemctl enable wg-quick@wg0`) utils.Section("Сетевые атаки и защита") utils.Code(`ARP Spoofing / MITM: Атака: отправка ложных ARP-ответов → перехват трафика Защита: Dynamic ARP Inspection (DAI) на коммутаторе DNS Spoofing / Cache Poisoning: Атака: подмена DNS-ответов Защита: DNSSEC, DNS over HTTPS (DoH), DNS over TLS (DoT) DDoS — Distributed Denial of Service: Volumetric — переполнение канала (UDP flood, DNS amplification) Protocol — исчерпание ресурсов (SYN flood, Ping of Death) Application — L7 атаки (HTTP flood, Slowloris) Защита: CDN (Cloudflare), rate limiting, scrubbing centers SYN Flood: Атака: отправка SYN без ACK → очередь half-open соединений Защита: SYN cookies (sysctl net.ipv4.tcp_syncookies=1) Man-in-the-Middle (MITM): Перехват и изменение трафика Защита: TLS с пиннингом сертификата, HSTS, HPKP Защита от сканирования: fail2ban — блокировка после N неудачных попыток Port knocking — последовательность "стуков" для открытия порта Honeypots — приманки для обнаружения злоумышленников`) utils.Footer() }