<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Кейсы on Валерий Кузенков — Системный администратор</title><link>https://kuzenkov.net/keysi/</link><description>Recent content in Кейсы on Валерий Кузенков — Системный администратор</description><generator>Hugo</generator><language>ru-RU</language><atom:link href="https://kuzenkov.net/keysi/index.xml" rel="self" type="application/rss+xml"/><item><title>Миграция с Яндекс.Почты на собственный сервер</title><link>https://kuzenkov.net/keysi/migratsiya-s-yandeks-pochty/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kuzenkov.net/keysi/migratsiya-s-yandeks-pochty/</guid><description>&lt;h2 id="о-проекте"&gt;О проекте&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: left"&gt;Параметр&lt;/th&gt;
					&lt;th style="text-align: left"&gt;Значение&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Клиент&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;ИТ-аутсорсер, 12 сотрудников, Москва&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Задача&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Уйти от Яндекс.Почты для бизнеса после блокировки аккаунта. Сохранить 47 ГБ истории переписки и обеспечить надёжную доставку.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="что-сделано"&gt;Что сделано&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;VPS на Debian 12, Postfix + Dovecot с TLS 1.3&lt;/li&gt;
&lt;li&gt;Перенос 47 ГБ через IMAP-sync без потерь&lt;/li&gt;
&lt;li&gt;Rspamd с обучаемой Байесовской фильтрацией, Redis для кэша&lt;/li&gt;
&lt;li&gt;SPF, DKIM (OpenDKIM), DMARC (p=quarantine)&lt;/li&gt;
&lt;li&gt;Fail2ban + Netdata для мониторинга&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="результат"&gt;Результат&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Попадание в спам снизилось с &lt;strong&gt;18% до 0,4%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Среднее время доставки: &lt;strong&gt;1,2 секунды&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Полная независимость от политик стороннего провайдера&lt;/li&gt;
&lt;li&gt;Абонентское сопровождение с резервным копированием (Borg Backup)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="похожие-услуги"&gt;Похожие услуги&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kuzenkov.net/services/pochta-na-vashem-domene/"&gt;Почта на вашем домене&lt;/a&gt; — аналогичная настройка для вашего проекта.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Инфраструктура «под ключ» для юридической фирмы</title><link>https://kuzenkov.net/keysi/infrastruktura-dlya-yurista/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kuzenkov.net/keysi/infrastruktura-dlya-yurista/</guid><description>&lt;h2 id="о-проекте"&gt;О проекте&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: left"&gt;Параметр&lt;/th&gt;
					&lt;th style="text-align: left"&gt;Значение&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Клиент&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Юрист-ИП, 3 сотрудника, Калужская область&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Задача&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Сайт-визитка, корпоративная почта, защита клиентских данных, автоматические бэкапы.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="что-сделано"&gt;Что сделано&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Сайт на Hugo + Nginx, SSL Let&amp;rsquo;s Encrypt с автообновлением&lt;/li&gt;
&lt;li&gt;Почта: 5 ящиков, Roundcube, автоответчики, перенаправления&lt;/li&gt;
&lt;li&gt;Rootless-контейнеры Podman: сайт и почта изолированы друг от друга&lt;/li&gt;
&lt;li&gt;Borg Backup: ежедневно на удалённый сервер + еженедельно на NAS клиента&lt;/li&gt;
&lt;li&gt;WireGuard для защищённого удалённого доступа к файлам&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="результат"&gt;Результат&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Время отклика сайта: &lt;strong&gt;&amp;lt; 80 мс&lt;/strong&gt; (TTFB)&lt;/li&gt;
&lt;li&gt;Почта работает стабильно &lt;strong&gt;8 месяцев без простоев&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Восстановление любого файла: &lt;strong&gt;&amp;lt; 5 минут&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Полная независимость от облачных сервисов&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="похожие-услуги"&gt;Похожие услуги&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kuzenkov.net/services/sayt-na-vashem-domene/"&gt;Сайт на вашем домене&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kuzenkov.net/services/pochta-na-vashem-domene/"&gt;Почта на вашем домене&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Аудит безопасности после компрометации</title><link>https://kuzenkov.net/keysi/audit-posle-vzloma/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kuzenkov.net/keysi/audit-posle-vzloma/</guid><description>&lt;h2 id="о-проекте"&gt;О проекте&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: left"&gt;Параметр&lt;/th&gt;
					&lt;th style="text-align: left"&gt;Значение&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Клиент&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Интернет-магазин (OpenCart), 2 сервера, регион&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Задача&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;После массового брутфорса SSH и внедрения майнера — восстановить работу, закрыть уязвимости, предотвратить повторение.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="что-сделано"&gt;Что сделано&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Изоляция заражённых серверов, анализ артефактов&lt;/li&gt;
&lt;li&gt;Переустановка с нуля: Debian, Nginx, PHP-FPM, Redis (сессии)&lt;/li&gt;
&lt;li&gt;Закрыты векторы: запрещён root-логин по SSH, перенесён порт, кастомные jail&amp;rsquo;ы Fail2ban&lt;/li&gt;
&lt;li&gt;Netdata с алертами в Telegram: CPU, процессы, сетевой трафик&lt;/li&gt;
&lt;li&gt;Восстановление репутации домена: OpenDKIM + DMARC после спам-рассылки&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="результат"&gt;Результат&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Полное восстановление за &lt;strong&gt;14 часов&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0 успешных брутфорс-атак&lt;/strong&gt; за 6 месяцев&lt;/li&gt;
&lt;li&gt;CPU-нагрузка в простое: &lt;strong&gt;&amp;lt; 3%&lt;/strong&gt; (вместо 95% от майнера)&lt;/li&gt;
&lt;li&gt;Клиент перешёл на абонентское обслуживание&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="похожие-услуги"&gt;Похожие услуги&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kuzenkov.net/services/dorabotka-i-audit/"&gt;Доработка и аудит&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kuzenkov.net/services/infrastruktura-na-vashem-servere/"&gt;Инфраструктура на вашем сервере&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Контейнеризация legacy-приложения</title><link>https://kuzenkov.net/keysi/konteynerizatsiya-legacy-prilozheniya/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kuzenkov.net/keysi/konteynerizatsiya-legacy-prilozheniya/</guid><description>&lt;h2 id="о-проекте"&gt;О проекте&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: left"&gt;Параметр&lt;/th&gt;
					&lt;th style="text-align: left"&gt;Значение&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Клиент&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Производственная компания, 8 сотрудников, внутренний ERP на PHP 5.6&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Задача&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Перенести устаревшее приложение с физического сервера на современную инфраструктуру без переписывания кода.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="что-сделано"&gt;Что сделано&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Rootless-контейнер Podman: Alpine + PHP 5.6-FPM + Nginx&lt;/li&gt;
&lt;li&gt;systemd Quadlet: автозапуск и перезапуск при падении&lt;/li&gt;
&lt;li&gt;Отдельный контейнер MariaDB 10.3, совместимый со старой кодовой базой&lt;/li&gt;
&lt;li&gt;Bind9: внутренний DNS, изоляция от внешней сети&lt;/li&gt;
&lt;li&gt;Borg Backup: дамп БД каждые 4 часа + файлы раз в сутки&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="результат"&gt;Результат&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Перенос выполнен &lt;strong&gt;без изменения кода приложения&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Время запуска после перезагрузки: &lt;strong&gt;&amp;lt; 15 секунд&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Потребление RAM сократилось на &lt;strong&gt;40%&lt;/strong&gt; по сравнению с полноценной VM&lt;/li&gt;
&lt;li&gt;Приложение работает стабильно &lt;strong&gt;10 месяцев&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="похожие-услуги"&gt;Похожие услуги&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kuzenkov.net/services/infrastruktura-na-vashem-servere/"&gt;Инфраструктура на вашем сервере&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kuzenkov.net/services/dorabotka-i-audit/"&gt;Доработка и аудит&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Замена Google Analytics на приватную аналитику перед аудитом заказчика</title><link>https://kuzenkov.net/keysi/audit-trekerov-pered-tenderom/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kuzenkov.net/keysi/audit-trekerov-pered-tenderom/</guid><description>&lt;h2 id="о-проекте"&gt;О проекте&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: left"&gt;Параметр&lt;/th&gt;
					&lt;th style="text-align: left"&gt;Значение&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Клиент&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Производитель промышленного оборудования, B2B, 15 сотрудников, регион&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: left"&gt;&lt;strong&gt;Задача&lt;/strong&gt;&lt;/td&gt;
					&lt;td style="text-align: left"&gt;Перед подписанием контракта с крупным заказчиком нужно было пройти его аудит безопасности сайта: подтвердить, что данные посетителей не передаются за рубеж, и убрать сторонние трекеры без потери аналитики.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="что-сделано"&gt;Что сделано&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Аудит всех сторонних скриптов на сайте: Google Analytics, счётчик соцсети, виджет стороннего онлайн-чата&lt;/li&gt;
&lt;li&gt;Перенос аналитики на self-hosted &lt;a href="https://kuzenkov.net/blog/goatcounter-vmesto-google-analytics/"&gt;GoatCounter&lt;/a&gt; на собственном сервере клиента — без cookie и передачи данных наружу&lt;/li&gt;
&lt;li&gt;Замена виджета чата на форму обратной связи без внешних скриптов&lt;/li&gt;
&lt;li&gt;Настройка Content-Security-Policy, запрещающей загрузку скриптов с посторонних доменов&lt;/li&gt;
&lt;li&gt;Подготовлен документ с перечнем всех точек обработки данных посетителей — для отдела безопасности заказчика&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="результат"&gt;Результат&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Аудит заказчика пройден с первого раза, контракт подписан&lt;/li&gt;
&lt;li&gt;Время загрузки главной страницы (LCP): &lt;strong&gt;2,4 с → 1,1 с&lt;/strong&gt; — за счёт удаления сторонних скриптов&lt;/li&gt;
&lt;li&gt;Сторонних трекеров на сайте: &lt;strong&gt;4 → 0&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Полная прозрачность потоков данных для будущих проверок&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="похожие-услуги"&gt;Похожие услуги&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kuzenkov.net/services/dorabotka-i-audit/"&gt;Доработка и аудит&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kuzenkov.net/services/sayt-na-vashem-domene/"&gt;Сайт на вашем домене&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>