← Вернуться на главную
CyberSecurity & Social Engineering — главная страница
← English version

Хроники хардеринга системы: поиск конфигурации, устойчивой к целевой атаке

⚠️ Внимание! Статья находится в разработке. Уточнения и дополнения вносятся по мере получения новых данных об устойчивости новых конфигураций безопасности и активности хакера.
Последнее обновление контента: 11.04.2026

1. Вводная часть: анализ исходной конфигурации и предпосылки к хардерингу

1.1 Контекст и допущения

Атакующая сторона:
Предположительно, группа, обладающая опытом целевых атак не менее 20 лет. Опыт наработан на тысячах реальных объектов. Методы включают технологические, социотехнические и психологические векторы.

Моя исходная позиция:
— С августа 2022 года работы в охранном агентстве (физическая безопасность, не кибер).
— С марта 2025 целенаправленно изучаю кибербезопасность.
— Оборудование и конфигурации на момент начала атаки (февраль–март 2011) не были подготовлены к целевому противодействию.
— В июне 2011 была возможность получить безвозмездную настройку и базовое обучение от знакомого юриста — не использована.

Вывод по исходной конфигурации:
На начальном этапе система не обладала устойчивостью к целевой атаке. Ответственность за это принимаю на себя.

1.2 Природа атаки (наблюдаемая модель)

Атака сочетает:

Данная модель полностью соответствует классическому сценарию, описанному в sci-fi литературе:
отвлечение человека (группы людей) через оторванную от реальности метафизику + удар через технические и человеческие уязвимости за счет превосходства в научно-технических и психологических знаниях.

1.3 Эффективность научного подхода как контрмеры

В ходе анализа установлено:

Факт:
Попытки морального и психологического подавления усиливаются прямо пропорционально прогрессу в изучении ИИ, кибербезопасности, социальной инженерии и криминалистической психологии. Чем больше у жертвы спадает дымовая завеса метафизики и абстрактных концепций, тем больше враг проявляет свою обеспокоенность.

1.4 Текущая стратегия

Без эмоций. Без обиды. Без удивления.

Принята следующая линия:

Цель:
Достижение конфигурации, устойчивой к целевой атаке, с последующей публикацией всего наработанного материала под лицензией CC0.

2. Резюме (для технического отчета)

Параметр Значение
Исходная защищенность Низкая
Начало атаки Февраль–март 2011
Опыт атакующей стороны (оценка) ≥ 20 лет
Контрмера Научно-технический анализ, хардеринг, документирование
Признак эффективности Заметный или даже скачкообразный рост интенсивности атакующих воздействий
Долгосрочная цель Публикация устойчивой конфигурации под CC0

2. Непосредственно хроника хардеринга и атак

2.1 Описание прошлой конфигурации системы: КОНФИГУРАЦИЯ 1

Hardware

Процессор и архитектура:
Architecture: x86_64
Model name: AMD Athlon(tm) II X2 220 Processor

Оперативная память (на момент фиксации):
total used free shared buff/cache available
Mem: 5.8Gi 2.9Gi 809Mi 64Mi 2.5Gi 2.9Gi
Swap: 5.6Gi 256Ki 5.6Gi

Материнская плата:
SMBIOS 2.6 present.
Manufacturer: BIOSTAR Group
Product Name: N68S3B
Version: (не указано)
Serial Number: None
Type: Motherboard

Сетевая карта:
00:07.0 Bridge: NVIDIA Corporation MCP61 Ethernet (rev a2)
Subsystem: Biostar Microtech Int'l Corp Device 3407
Interrupt: pin A routed to IRQ 26
Capabilities: Power Management version 2, MSI (включено)

Software

Операционная система: Debian 12
Графическая оболочка: MATE
Ядро: 6.1.0-34-amd64

Сетевые и системные настройки:

Дата завершения формирования конфигурации 1: 01.08.2025

2.2 Факт атаки на конфигурацию 1

Дата атаки: 26.12.2026

Установленные возможности атакующего (постфактум):

Действие после атаки: старая система удалена, выполнена чистая установка новой конфигурации.


2.3 Конфигурация системы после атаки с усилением защиты: КОНФИГУРАЦИЯ 2

Hardware

Тот же системный блок (без изменений).

Software

Операционная система:
Distributor ID: Debian
Description: Debian GNU/Linux 13 (trixie)
Release: 13 (13.4)
Codename: trixie

Ядро:
Linux home 6.12.74+deb13+1-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.74-2 (2026-03-08) x86_64 GNU/Linux

Графическая подсистема:
Окружение: GNOME / Wayland
GNOME Shell 48.7
tty (запасной доступ)

nftables версия:
1.1.3 (Commodore Bullmoose #4)

Файл правил nftables (13.04.2026):

# Список правил nftables, конфигурация 2
# Получено: 13.04.2026

table inet filter {
	chain input {
		type filter hook input priority filter; policy accept;
		udp sport 53 queue flags bypass to 0
		iif "lo" accept
		ct state established,related accept
		ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept
		ip saddr 0.0.0.0/0 ct state new drop
		ip protocol icmp icmp type echo-request limit rate 1/second burst 5 packets accept
		ip protocol icmp icmp type echo-request log prefix "🔥 BAN: ICMP flood " flags all
		ip protocol icmp icmp type echo-request drop
		ip daddr 239.255.255.250 udp dport 1900 drop
		ip daddr 224.0.0.251 udp dport 5353 drop
		udp dport 137 drop
		udp dport 138 drop
		udp dport 5355 drop
		ip saddr { 45.9.20.0/24, 89.248.160.0/19, 185.107.56.0/24, 185.129.62.0/23, 185.220.100.0/22, 198.96.155.0/24 } log prefix "🔥 BAN: known bots " flags all
		ip saddr { 45.9.20.0/24, 89.248.160.0/19, 185.107.56.0/24, 185.129.62.0/23, 185.220.100.0/22, 198.96.155.0/24 } drop
		tcp flags ! fin,syn,rst,psh,ack,urg drop
		tcp flags & (fin | psh | urg) == fin | psh | urg drop
		tcp flags & (fin | syn) == fin | syn drop
		tcp flags & (fin | syn | rst) == fin | syn | rst drop
		tcp flags & (fin | syn | rst | psh | ack) == fin | syn | rst | ack drop
		ip frag-off & 0x1fff != 0x0 drop
		ip saddr 127.0.0.0/8 drop
		ip saddr 10.0.0.0/8 drop
		ip saddr 172.16.0.0/12 drop
		ip saddr 192.168.0.0/16 drop
		ip saddr 169.254.0.0/16 drop
		ip saddr 0.0.0.0/8 drop
		ip saddr 224.0.0.0/4 drop
		ip saddr 240.0.0.0/5 drop
	}

	chain forward {
		type filter hook forward priority filter; policy accept;
		tcp dport { 53, 80, 443, 873, 12043, 13000-13050 } accept
		udp dport { 53, 443, 3478-3481 } accept
		tcp dport { 21, 22, 23, 137, 138, 139, 445, 1080, 1234, 1337, 1433, 1434, 1900, 3128, 3306, 3389, 4444, 5555, 5900, 8000, 8080, 8888, 9001, 9200, 10000 } drop
		udp dport { 161, 162 } drop
		tcp dport { 1024-65535 } drop
		udp dport { 1024-65535 } drop
		ip saddr { 37.0.0.0/8, 77.0.0.0/8, 88.0.0.0/8, 91.0.0.0/8, 185.0.0.0/8 } drop
	}

	chain output {
		type filter hook output priority filter; policy accept;
		ip saddr 0.0.0.0/0 ct state new limit rate 25/second burst 50 packets accept
		ip saddr 0.0.0.0/0 ct state new drop
		ip protocol icmp icmp type echo-request limit rate 1/second burst 5 packets accept
		ip protocol icmp icmp type echo-request log prefix "🔥 BAN: ICMP flood " flags all
		ip protocol icmp icmp type echo-request drop
		ip protocol icmp icmp type { destination-unreachable, time-exceeded, parameter-problem } accept
		ip6 nexthdr ipv6-icmp icmpv6 type { destination-unreachable, packet-too-big, time-exceeded, parameter-problem } accept
		ip6 nexthdr ipv6-icmp icmpv6 type { nd-neighbor-solicit, nd-neighbor-advert } accept
		ip6 nexthdr ipv6-icmp icmpv6 type { nd-router-solicit, nd-router-advert } accept
		ip protocol icmp drop
		ip6 nexthdr ipv6-icmp drop
		meta l4proto sctp drop
		meta l4proto dccp drop
		tcp dport { 53, 80, 443, 873, 3000, 3306, 3478, 3690, 4443, 12043, 13000-13050 } accept
		udp dport { 443, 13000-13050 } accept
		tcp dport { 21, 22, 23, 137, 138, 139, 445, 1080, 1234, 1337, 1433, 1434, 1900, 3128, 3306, 3389, 4444, 5555, 5900, 8000, 8080, 8888, 9001, 9200, 10000 } drop
		udp dport { 161, 162 } drop
		tcp dport { 1-5999, 7000-7999, 9000-32767 } drop
		udp dport { 1024-4095, 8192-32767 } drop
		ip saddr { 37.0.0.0/8, 77.0.0.0/8, 88.0.0.0/8, 91.0.0.0/8, 185.0.0.0/8 } drop
	}
}
table inet nat {
	chain filter-prerouting {
		type filter hook prerouting priority filter; policy accept;
	}

	chain prerouting {
		type nat hook prerouting priority dstnat; policy accept;
	}

	chain postrouting {
		type nat hook postrouting priority srcnat; policy accept;
	}

	chain input {
		type nat hook input priority srcnat; policy accept;
	}

	chain output {
		type nat hook output priority 100; policy accept;
	}
}
table inet mangle {
	chain output {
		type filter hook output priority mangle; policy accept;
		icmp type { echo-reply, destination-unreachable, echo-request } accept
		udp dport 51820 accept
		meta l4proto != tcp ct state related,new queue flags bypass to 0
		tcp flags & (fin | syn | rst | ack) == syn queue flags bypass to 0
	}

	chain prerouting {
		type filter hook prerouting priority mangle; policy accept;
	}

	chain postrouting {
		type filter hook postrouting priority mangle; policy accept;
	}

	chain forward {
		type filter hook forward priority mangle; policy accept;
	}
}
# Warning: table ip nat is managed by iptables-nft, do not touch!
table ip nat {
	chain DOCKER {
		iifname "docker0" counter packets 0 bytes 0 return
	}

	chain POSTROUTING {
		type nat hook postrouting priority srcnat; policy accept;
		ip saddr 172.17.0.0/16 oifname != "docker0" counter packets 0 bytes 0 masquerade
	}

	chain PREROUTING {
		type nat hook prerouting priority dstnat; policy accept;
		fib daddr type local counter packets 0 bytes 0 jump DOCKER
	}

	chain OUTPUT {
		type nat hook output priority dstnat; policy accept;
		ip daddr != 127.0.0.0/8 fib daddr type local counter packets 0 bytes 0 jump DOCKER
	}
}
# Warning: table ip filter is managed by iptables-nft, do not touch!
table ip filter {
	chain DOCKER {
	}

	chain DOCKER-ISOLATION-STAGE-1 {
		iifname "docker0" oifname != "docker0" counter packets 0 bytes 0 jump DOCKER-ISOLATION-STAGE-2
		counter packets 0 bytes 0 return
	}

	chain DOCKER-ISOLATION-STAGE-2 {
		oifname "docker0" counter packets 0 bytes 0 drop
		counter packets 0 bytes 0 return
	}

	chain FORWARD {
		type filter hook forward priority filter; policy drop;
		counter packets 0 bytes 0 jump DOCKER-USER
		counter packets 0 bytes 0 jump DOCKER-ISOLATION-STAGE-1
		oifname "docker0" ct state related,established counter packets 0 bytes 0 accept
		oifname "docker0" counter packets 0 bytes 0 jump DOCKER
		iifname "docker0" oifname != "docker0" counter packets 0 bytes 0 accept
		iifname "docker0" oifname "docker0" counter packets 0 bytes 0 accept
	}

	chain DOCKER-USER {
		counter packets 0 bytes 0 return
	}
}


Конфигурация усиления защиты sysctl (2026-03-03):

# ============================================
# SYSTEM HARDENING CONFIG (Debian 13 / MATE)
# Version: 6.0 (final)
# Date: 2026-03-03 16:31
# ============================================
# Apply: sudo sysctl --system
# ============================================

# ========== CORE NETWORK ==========

net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.ip_forward = 0
net.ipv4.tcp_rfc1337 = 1
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 65536 4194304
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv4.tcp_synack_retries = 2

# ========== NETWORK HARDENING ==========

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.*.rp_filter = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_tw_reuse = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# ========== KERNEL HARDENING ==========

kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.randomize_va_space = 2
kernel.yama.ptrace_scope = 1
dev.tty.ldisc_autoload = 0
fs.protected_fifos = 2
kernel.sysrq = 0
net.core.bpf_jit_harden = 2
kernel.unprivileged_bpf_disabled = 1

# ========== END OF CONFIG ==========

AppArmor:
Версия парсера: 4.1.0

Flatpak:
Версия: 1.16.3

Установленные Flatpak-приложения:

OpenSnitch:
Версия GUI: 1.6.9
protobuf: 4.21.12
grpc: 1.51.1

Пользовательские правила OpenSnitch (фрагмент):

# ============================================
# ПОЛЬЗОВАТЕЛЬСКИЕ ПРАВИЛА OpenSnitch
# Дата создания: 2026-04-03 — 2026-04-08
# ============================================

# ========== БРАУЗЕРЫ (разрешены) ==========


# LibreWolf
{
  "name": "allow-librewolf",
  "action": "allow",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/app/lib/librewolf/librewolf"
  }
}

# Firefox ESR
{
  "name": "allow-firefox-esr",
  "action": "allow",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/lib/firefox-esr/firefox-esr"
  }
}

# ========== ПРИЛОЖЕНИЯ (разрешены) ==========

# Python интерпретатор (для скриптов)
{
  "name": "allow-python3.13",
  "action": "allow",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/bin/python3.13"
  }
}

# Git (доступ к GitHub)
{
  "name": "allow-git-remote-http",
  "action": "allow",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/lib/git-core/git-remote-http"
  }
}

# Systemd NTP-клиент (синхронизация времени)
{
  "name": "allow-systemd-timesyncd",
  "action": "allow",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/lib/systemd/systemd-timesyncd"
  }
}

# APT (обновление пакетов)
{
  "name": "allow-apt-http-method",
  "action": "allow",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/lib/apt/methods/http"
  }
}

# NetworkManager (основной сетевой менеджер)
{
  "name": "allow-networkmanager",
  "action": "allow",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/sbin/NetworkManager"
  }
}

# Kernel connection (VPN сервисы)
{
  "name": "allow-kernel-connection",
  "action": "allow",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "Kernel connection"
  }
}

# Client for updating firmware (fwupdmgr)
{
  "name": "allow-fwupdmgr",
  "action": "allow",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/bin/fwupdmgr"
  }
}

# ========== ЗАБЛОКИРОВАННЫЕ ПРИЛОЖЕНИЯ ==========

# Ruby интерпретатор (подозрительная активность)
{
  "name": "deny-ruby3.3",
  "action": "deny",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/bin/ruby3.3"
  }
}

# DNS утилита dig (риск)
{
  "name": "deny-dig",
  "action": "deny",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/bin/dig"
  }
}

# GNOME Software (не нужна)
{
  "name": "deny-gnome-software",
  "action": "deny",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/bin/gnome-software"
  }
}

# Демон сканеров (не нужен)
{
  "name": "deny-colord-sane",
  "action": "deny",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/libexec/colord-sane"
  }
}

# Служба принтеров (не нужна)
{
  "name": "deny-gsd-print-notifications",
  "action": "deny",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/libexec/gsd-print-notifications"
  }
}

# LibreOffice (доступ в интернет запрещён)
{
  "name": "deny-libreoffice-soffice",
  "action": "deny",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/lib/libreoffice/program/soffice.bin"
  }
}

# WebKitNetworkProcess (движок рендеринга GNOME)
{
  "name": "deny-webkit-network-process",
  "action": "deny",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/lib/x86_64-linux-gnu/webkitgtk-6.0/WebKitNetworkProcess"
  }
}

# Почтовый сервер (не нужен)
{
  "name": "deny-exim4",
  "action": "deny",
  "duration": "always",
  "operator": {
    "operand": "process.path",
    "data": "/usr/sbin/exim4"
  }
}

USBGuard:
Версия: 1.1.3
Компиляция с поддержкой: Linux audit, Libcapng, Seccomp, Systemd, Umockdev

Основные изменения в конфигурации 2 по сравнению с конфигурацией 1:

Дата завершения формирования конфигурации 2: 07.04.2026

Текущий статус конфигурации 2 (на 10.04.2026):
— Тестируется.
— Предварительные данные: не удалось перекрыть все уязвимости.
— Данные требуют дополнительного подтверждения.
— На основе полученных данных об атаке на конфигурацию 2 будет формироваться конфигурация 3.

↑ Вернуться в начало страницы

Связанные страницы:

  • Хроники хардеринга системы андроид: поиск конфигурации, устойчивой к целевой атаке — Анализ целевой атаки на Android-устройства (смартфон, планшет). Получение хакером полного удалённого доступа к микрофону, камере и трафику. Частичная защита планшета через NetGuard. Дополнение к «Хроникам хардеринга системы».
  • Целевые кибератаки на пользователей — как защитить свою Linux-систему — Меры кибербезопасности против целевых атак, основанные на опыте автора. Русская версия английской статьи на DebianWiki.
  • Анализ предполагаемой целевой комплексной атаки — Описание предполагаемой сложной таргетированной атаки.
  • Психологическое подавление человека силовыми структурами при помощи эффекта неверия — разбор природы эффекта неверия, механизмов давления, последствий и практических рекомендаций.
  • Ригидность ожиданий в анализе угроз — Проблема ригидности ожиданий при анализе угроз в кибербезопасности: почему опытный злоумышленник действует нестандартно (неочевидно).
  • От науки к мироосознанию: логика как опора против заблуждений — эссе о рациональности, осознанности и опасности «интуиции без критики».
  • Три вида интеллекта и их роль в устойчивости личности — аналитическое эссе о когнитивном, этическом и эмоциональном интеллекте как основе для целостного и устойчивого сознания.
  • Информационная и поведенческая гигиена работы с ПК — Базовое практическое руководство по цифровой, поведенческой и информационной гигиене для пользователей персональных компьютеров.
  • Диалектический закон и миф об «интуитивном прозрении» — философский анализ природы вдохновения и критического мышления.
  • Законы устойчивости: эссе о выживании систем — Это эссе формулирует законы выживания систем: приоритет технологии и логистики над идеологией, компетентности над культурными барьерами, а управления и эффективности — над ресурсами и эффектностью. Текст о переходе от иллюзий к жесткой дисциплине результата.