380 000 ₽ в год на лицензии: миграция типографии с Windows на Linux

Задача клиента: типография хочет избавиться от лицензий Microsoft

К нам обратилась типография «ПринтПро» из Нижнего Новгорода — производственная компания с 60 сотрудниками: дизайнеры, операторы печатного оборудования, менеджеры по продажам и администрация. Клиент столкнулся с ежегодным счётом за продление лицензий Microsoft на сумму более 400 000 рублей и задался вопросом: можно ли перейти на Linux без потери функциональности?

Причины, по которым клиент решил мигрировать:

  • Экономия на лицензиях — Windows Server 2022 Standard (~80 000 руб.) + CAL на каждого пользователя (~5 000 руб.). Для 60 пользователей это 380 000+ руб. за лицензии
  • Стабильность — Windows-сервер требовал перезагрузки для обновлений почти каждую неделю
  • Производительность — Linux потребляет меньше ресурсов, особенно RAM
  • Безопасность — типография дважды сталкивалась с шифровальщиками

Честные риски, которые мы озвучили клиенту:

  • Совместимость ПО — 1С и специализированное ПО для вёрстки
  • Переобучение персонала — администратору нужно изучить Linux
  • Потеря функционала AD — полная замена Group Policy невозможна
  • Длительность проекта — мы оценили в 3-4 месяца

Помимо финансовых мотивов, клиента беспокоила безопасность. За последний год типография дважды подвергалась атакам шифровальщиков. В первый раз удалось восстановить данные из бэкапов (потеряли работу за 2 дня), во второй — пришлось заплатить выкуп. Общий ущерб составил более 500 000 рублей. Переход на Linux рассматривался в том числе как мера повышения безопасности — шифровальщики практически не атакуют Linux-серверы.

Типография работала в две смены, и любой значительный простой сервера приводил к остановке производства. Это определило наш подход — поэтапная миграция с параллельной работой старой и новой инфраструктуры на каждом этапе, а также детально проработанный план отката.

Проведённый аудит инфраструктуры

Мы запустили аудиторские скрипты на контроллере домена клиента:

# PowerShell: Экспорт ролей сервера
Get-WindowsFeature | Where-Object {$_.Installed -eq $true} | 
  Export-Csv -Path C:\audit\server_roles.csv -NoTypeInformation

# Список пользователей AD
Get-ADUser -Filter * -Properties * | 
  Select-Object Name, SamAccountName, Department, Enabled, LastLogonDate |
  Export-Csv -Path C:\audit\ad_users.csv -NoTypeInformation -Encoding UTF8

# Группы и членство
Get-ADGroup -Filter * | ForEach-Object {
  $group = $_.Name
  Get-ADGroupMember -Identity $_ | ForEach-Object {
    [PSCustomObject]@{Group=$group; Member=$_.Name; Type=$_.objectClass}
  }
} | Export-Csv -Path C:\audit\ad_groups.csv -NoTypeInformation

# Общие папки
Get-SmbShare | Where-Object {$_.Special -eq $false} | ForEach-Object {
  $share = $_.Name
  Get-SmbShareAccess -Name $share | ForEach-Object {
    [PSCustomObject]@{Share=$share; Account=$_.AccountName; Access=$_.AccessRight}
  }
} | Export-Csv -Path C:\audit\shares.csv -NoTypeInformation

# GPO
Get-GPO -All | Select-Object DisplayName, GpoStatus, CreationTime |
  Export-Csv -Path C:\audit\gpo_list.csv -NoTypeInformation

# DNS и DHCP
Get-DnsServerResourceRecord -ZoneName "company.local" |
  Export-Csv -Path C:\audit\dns_records.csv -NoTypeInformation

Get-DhcpServerv4Scope | Export-Csv -Path C:\audit\dhcp_scopes.csv -NoTypeInformation

По результатам составили таблицу замены сервисов:

Сервис WindowsТекущий серверЗамена на LinuxСложность
Active DirectoryDC01FreeIPA / Samba ADВысокая
Файловый серверFS01SambaСредняя
DNSDC01BIND9Низкая
DHCPDC01ISC DHCPНизкая
Принт-серверFS01CUPS + SambaСредняя
Почтовый серверMAIL01Postfix + DovecotВысокая
МониторингZabbixНизкая

Выбор дистрибутива

Мы рекомендовали клиенту Debian 12:

ДистрибутивПоддержкаПреимуществаДля кого
Debian 125 лет (LTS)Стабильность, минимализмУниверсальный выбор
Ubuntu Server 24.04 LTS10 летМного документацииНачинающие
AlmaLinux 910 летСовместимость с RHELКорпоративная среда
Astra Linux SEБессрочнаяСертификация ФСТЭКГос. организации

Для типографии Debian 12 — максимально стабилен, минимальный overhead и огромная база документации.

Замена Active Directory: FreeIPA и Samba AD DC

Active Directory — центральный элемент инфраструктуры типографии. Его замена была самой сложной частью проекта.

Замена Active Directory — самая рискованная часть любой миграции. Мы провели эту фазу с максимальной осторожностью: развернули FreeIPA параллельно с существующим контроллером домена Windows, настроили trust между ними и начали постепенно переключать сервисы на новую систему аутентификации. Старый Windows DC оставался включённым на протяжении всего проекта и ещё 30 дней после его завершения.

FreeIPA для управления пользователями

Мы выбрали FreeIPA — интегрированное решение с LDAP, Kerberos, DNS, веб-интерфейсом и поддержкой trust с AD для параллельной работы:

# Установка FreeIPA
sudo apt update
sudo apt install -y freeipa-server freeipa-server-dns

# Настройка
sudo ipa-server-install \
  --realm=COMPANY.LOCAL \
  --domain=company.local \
  --ds-password=DirectoryManagerPassword \
  --admin-password=AdminPassword \
  --hostname=ipa.company.local \
  --setup-dns \
  --forwarder=8.8.8.8 \
  --no-ntp

kinit admin
ipa user-find
ipa group-find

Подключение Linux-клиентов:

sudo apt install -y freeipa-client

sudo ipa-client-install \
  --server=ipa.company.local \
  --domain=company.local \
  --realm=COMPANY.LOCAL \
  --principal=admin \
  --password=AdminPassword \
  --mkhomedir \
  --enable-dns-updates

Миграция пользователей из AD:

#!/bin/bash
# migrate_users.sh
while IFS=, read -r name login department; do
  ipa user-add "$login" \
    --first="$(echo $name | cut -d' ' -f1)" \
    --last="$(echo $name | cut -d' ' -f2)" \
    --department="$department" \
    --password
done < ad_users.csv

Samba AD DC для Windows-рабочих станций

Поскольку часть рабочих станций типографии оставалась на Windows, мы также настроили Samba в режиме контроллера домена:

# Установка Samba AD DC
sudo apt install -y samba samba-dsdb-modules samba-vfs-modules \
  winbind libpam-winbind libnss-winbind krb5-config krb5-user

sudo systemctl stop smbd nmbd winbind
sudo systemctl disable smbd nmbd winbind
sudo rm /etc/samba/smb.conf

# Создание домена
sudo samba-tool domain provision \
  --use-rfc2307 \
  --realm=COMPANY.LOCAL \
  --domain=COMPANY \
  --server-role=dc \
  --dns-backend=SAMBA_INTERNAL \
  --adminpass='StrongAdminPass123!'

sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
sudo systemctl unmask samba-ad-dc
sudo systemctl enable --now samba-ad-dc

Проверка:

host -t SRV _ldap._tcp.company.local localhost
host -t SRV _kerberos._tcp.company.local localhost
kinit administrator@COMPANY.LOCAL
samba-tool user list
samba-tool group list

# Создание пользователя
samba-tool user create ivanov 'Password123!' \
  --given-name=Иван --surname=Иванов \
  --department=IT

Сравнение вариантов:

КритерийFreeIPASamba AD DC
Windows в доменеОграниченноПолная поддержка
Group PolicyНетОграниченно
Веб-интерфейсДаЧерез RSAT
Sudo-правилаДаНет
PKIВстроенный CAНет

Миграция файлового сервера и принтеров

Файловый сервер — один из наиболее простых для миграции сервисов. У типографии было 2 ТБ проектных файлов, которые нужно было перенести без потери прав.

Перенос 2 ТБ данных типографии был организован в два этапа. Первую полную синхронизацию мы выполнили за выходные, когда типография не работала. Затем в течение недели новый и старый серверы работали параллельно — пользователи продолжали работать со старым сервером, а мы ежедневно синхронизировали дельту изменений на новый. В день переключения финальная синхронизация заняла всего 15 минут, после чего мы переключили UNC-пути на новый сервер. Пользователи вернулись с обеденного перерыва и продолжили работу — большинство даже не заметили, что сервер сменился.

Перенос общих папок с сохранением прав

Последовательность миграции данных:

# Шаг 1: Подготовка структуры
sudo mkdir -p /srv/samba/{shared,accounting,management,projects,homes}
sudo apt install -y samba acl rsync
# Шаг 2: Перенос данных
# С Windows-стороны
robocopy \\OLDSERVER\shared \\NEWSERVER\shared /E /COPY:DAT /R:3 /W:5 /MT:8 /LOG:C:\migration_shared.log

# Или с Linux через CIFS
sudo apt install -y cifs-utils
sudo mkdir /mnt/windows_share
sudo mount -t cifs //OLDSERVER/shared /mnt/windows_share -o username=admin,password=pass,iocharset=utf8
sudo rsync -avz --progress /mnt/windows_share/ /srv/samba/shared/

# Финальная синхронизация
sudo rsync -avz --delete /mnt/windows_share/ /srv/samba/shared/
# Шаг 3: Воссоздание прав
#!/bin/bash
# set_permissions.sh
sudo chown -R root:domain_users /srv/samba/shared
sudo chmod -R 2775 /srv/samba/shared

sudo chown -R root:accounting /srv/samba/accounting
sudo chmod -R 2770 /srv/samba/accounting

sudo setfacl -R -m g:management:rx /srv/samba/accounting
sudo setfacl -R -d -m g:management:rx /srv/samba/accounting

for project_dir in /srv/samba/projects/*/; do
  project=$(basename "$project_dir")
  if getent group "project-$project" >/dev/null; then
    sudo setfacl -R -m g:"project-$project":rwx "$project_dir"
    sudo setfacl -R -d -m g:"project-$project":rwx "$project_dir"
  fi
done

Перенос принтеров на CUPS

В типографии было 5 принтеров разного формата. Мы перевели их на CUPS:

sudo apt install -y cups cups-filters printer-driver-all hplip
sudo cupsctl --remote-admin --share-printers
sudo usermod -aG lpadmin admin

# Добавление принтеров
sudo lpadmin -p HP-LaserJet-M404 -E \
  -v socket://192.168.1.200:9100 \
  -m everywhere \
  -o printer-is-shared=true

sudo lpadmin -p Kyocera-ECOSYS -E \
  -v ipp://192.168.1.201/ipp/print \
  -m everywhere \
  -o printer-is-shared=true

lpstat -p -d

Настройка Samba для принтеров:

[global]
   printing = cups
   printcap name = cups
   load printers = yes

[printers]
   comment = All Printers
   path = /var/spool/samba
   printable = yes
   browseable = no
   valid users = @"COMPANY\Domain Users"

DNS, DHCP и замена групповых политик

Инфраструктурные сервисы мигрировали проще всего. А для групповых политик мы нашли рабочие альтернативы.

DNS и DHCP были мигрированы первыми как наименее рискованные сервисы. Мы запустили BIND9 и ISC DHCP параллельно с Windows-аналогами и провели неделю тестирования. После переключения DNS-резолверов в DHCP на новый сервер все клиенты автоматически начали использовать Linux DNS при следующем обновлении аренды. Мы наблюдали за системой в течение недели и убедились, что все DNS-запросы обрабатываются корректно, включая обратные зоны и SRV-записи для Kerberos.

DNS-сервер (BIND9)

Замена Windows DNS:

sudo apt install -y bind9 bind9-utils
# /etc/bind/named.conf.local
zone "company.local" {
    type master;
    file "/etc/bind/db.company.local";
    allow-update { key rndc-key; };
};

zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192.168.1";
    allow-update { key rndc-key; };
};
# /etc/bind/db.company.local
$TTL 86400
@   IN  SOA ns1.company.local. admin.company.local. (
        2026033101  ; Serial
        3600        ; Refresh
        1800        ; Retry
        604800      ; Expire
        86400 )     ; Minimum TTL

@       IN  NS      ns1.company.local.
@       IN  A       192.168.1.10
ns1     IN  A       192.168.1.10
ipa     IN  A       192.168.1.10
fs      IN  A       192.168.1.11
mail    IN  A       192.168.1.12
zabbix  IN  A       192.168.1.13

_ldap._tcp      IN SRV  0 100 389 ipa.company.local.
_kerberos._tcp  IN SRV  0 100 88  ipa.company.local.
_kpasswd._tcp   IN SRV  0 100 464 ipa.company.local.
_kerberos       IN TXT  "COMPANY.LOCAL"
sudo named-checkconf
sudo named-checkzone company.local /etc/bind/db.company.local
sudo systemctl enable --now named

DHCP-сервер

Замена Windows DHCP:

sudo apt install -y isc-dhcp-server
# /etc/dhcp/dhcpd.conf
authoritative;

option domain-name "company.local";
option domain-name-servers 192.168.1.10;
option ntp-servers 192.168.1.10;
default-lease-time 28800;
max-lease-time 86400;

subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.250;
    option routers 192.168.1.1;
    option broadcast-address 192.168.1.255;
}

host printer-hp {
    hardware ethernet 00:1a:2b:3c:4d:5e;
    fixed-address 192.168.1.200;
    option host-name "printer-hp";
}

host printer-kyocera {
    hardware ethernet 00:5e:4d:3c:2b:1a;
    fixed-address 192.168.1.201;
    option host-name "printer-kyocera";
}

subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.100 192.168.10.200;
    option routers 192.168.10.1;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    default-lease-time 3600;
}
nano /etc/default/isc-dhcp-server
INTERFACESv4="eth0"

sudo systemctl enable --now isc-dhcp-server

Альтернативы групповым политикам

Мы нашли рабочие замены для каждой GPO-задачи:

GPO-задачаLinux-альтернативаИнструмент
Подключение дисковАвтомонтированиеPAM + autofs
Установка ПОЦентрализованное управлениеAnsible
БезопасностьSudo-правилаFreeIPA HBAC
Ограничение USBudev-правилаudev + Ansible
Обновленияunattended-upgradesAnsible + cron

Пример sudo-правил в FreeIPA:

ipa sudorule-add allow_reboot --desc="Разрешить перезагрузку"
ipa sudorule-add-user allow_reboot --groups=sysadmins
ipa sudorule-add-host allow_reboot --hostgroups=all_servers
ipa sudorule-add-runasuser allow_reboot --users=root
ipa sudorule-add-allow-command allow_reboot --sudocmds=/sbin/reboot
ipa sudorule-add-allow-command allow_reboot --sudocmds=/sbin/shutdown

Миграция почтового сервера

Типография использовала Exchange Server для 60 ящиков. Мы перенесли почту на Linux-стек.

Перенос 60 почтовых ящиков с Exchange на Postfix + Dovecot потребовал тщательного планирования — почта критична для бизнеса типографии, и клиент не мог позволить себе ни одного потерянного письма.

Стек Postfix + Dovecot + Rspamd

Мы развернули стандартный почтовый стек:

sudo apt install -y postfix dovecot-imapd dovecot-lmtpd rspamd redis-server

sudo postconf -e "myhostname = mail.company.ru"
sudo postconf -e "mydomain = company.ru"
sudo postconf -e "mydestination = \$myhostname, localhost.\$mydomain, localhost, \$mydomain"
sudo postconf -e "mynetworks = 127.0.0.0/8 192.168.1.0/24"
sudo postconf -e "smtpd_tls_cert_file = /etc/letsencrypt/live/mail.company.ru/fullchain.pem"
sudo postconf -e "smtpd_tls_key_file = /etc/letsencrypt/live/mail.company.ru/privkey.pem"
sudo postconf -e "smtpd_use_tls = yes"
sudo postconf -e "mailbox_transport = lmtp:unix:private/dovecot-lmtp"

Миграция ящиков через imapsync:

sudo apt install -y imapsync

# Перенос одного ящика
imapsync \
  --host1 exchange.company.local --user1 ivanov@company.ru --password1 'OldPass' \
  --host2 mail.company.ru --user2 ivanov@company.ru --password2 'NewPass' \
  --ssl1 --ssl2 \
  --exclude 'Junk|Spam'

# Массовый перенос
#!/bin/bash
while IFS=, read -r email old_pass new_pass; do
  echo "Migrating $email..."
  imapsync \
    --host1 exchange.company.local --user1 "$email" --password1 "$old_pass" \
    --host2 mail.company.ru --user2 "$email" --password2 "$new_pass" \
    --ssl1 --ssl2 \
    --exclude 'Junk|Spam' \
    --log --logdir /var/log/imapsync/
done < mailboxes.csv

DNS-записи для почты

Обновили DNS-записи:

# MX-запись
company.ru.   IN  MX  10  mail.company.ru.

# A-запись
mail.company.ru.  IN  A  EXTERNAL_IP

# SPF
company.ru.   IN  TXT  "v=spf1 mx ip4:EXTERNAL_IP -all"

# DKIM
mail._domainkey.company.ru.  IN  TXT  "v=DKIM1; k=rsa; p=MIIBIjAN..."

# DMARC
_dmarc.company.ru.  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:postmaster@company.ru"

Мониторинг и план отката

Мы обеспечили контроль новой инфраструктуры и гарантировали возможность возврата на Windows при проблемах.

Внедрение мониторинга Zabbix

Установили Zabbix для контроля всех сервисов:

wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb
sudo dpkg -i zabbix-release_latest_7.0+debian12_all.deb
sudo apt update
sudo apt install -y zabbix-server-pgsql zabbix-frontend-php \
  zabbix-nginx-conf zabbix-agent2 zabbix-sql-scripts postgresql

Ключевые метрики, которые мы контролировали после миграции:

  • Доступность FreeIPA, Samba, DNS, DHCP, Mail
  • Время отклика файлового сервера
  • Аутентификация (успешные/неуспешные)
  • Дисковое пространство и I/O
  • Количество активных сессий Samba

План миграции по фазам и откат

Мы реализовали миграцию поэтапно:

ФазаСрокЗадачиРиск отката
1. ПодготовкаНедели 1-2Аудит, установка LinuxНулевой
2. DNS + DHCPНеделя 3Параллельный запускНизкий
3. Файловый серверНедели 4-5Перенос 2 ТБ данныхСредний
4. Каталог (AD)Недели 6-8FreeIPA/Samba ADВысокий
5. ПочтаНедели 9-11Перенос 60 ящиковВысокий
6. МониторингНеделя 12Zabbix + дашбордыНулевой
7. СтабилизацияНедели 13-16Оптимизация, обучение

План отката:

  • Windows Server оставался включённым 30 дней после каждой фазы
  • DNS-откат: смена DNS-серверов обратно
  • Файловый сервер: возврат UNC-путей на Windows
  • Почта: обратная смена MX + imapsync
#!/bin/bash
# rollback_dns.sh
sed -i 's/option domain-name-servers 192.168.1.10/option domain-name-servers 192.168.1.5/' \
  /etc/dhcp/dhcpd.conf

systemctl restart isc-dhcp-server

echo "DNS откачен на Windows (192.168.1.5)"
echo "Клиенты получат новый DNS при обновлении DHCP-аренды"

Обучение команды и документирование

Успех миграции зависел от готовности IT-специалиста типографии работать с новой инфраструктурой.

Документация и обучение — часто недооцениваемый, но критически важный этап любой миграции. Мы потратили на него целую неделю, и это окупилось: через два месяца администратор типографии самостоятельно решал 95% задач без нашей помощи.

План обучения и runbook

Мы провели обучение по плану:

  • Базовые команды Linux — навигация, файлы, пакеты, systemd (2 дня)
  • Сетевые утилиты — ip, ss, dig, nmap (1 день)
  • Samba-администрирование — smbstatus, pdbedit, testparm (0.5 дня)
  • FreeIPA — пользователи, группы, политики (1 день)
  • Zabbix — хосты, триггеры, оповещения (1 день)

Также создали runbook для аварийных ситуаций:

# Runbook: FreeIPA не отвечает

# 1. Проверка статуса
sudo systemctl status ipa
sudo ipactl status

# 2. Перезапуск
sudo ipactl restart

# 3. Логи
sudo journalctl -u dirsrv@COMPANY-LOCAL.service --since "1 hour ago"
sudo journalctl -u krb5kdc.service --since "1 hour ago"

# 4. Сертификаты
sudo ipa-cert-check

# 5. Восстановление из бэкапа
sudo ipa-restore /var/lib/ipa/backup/BACKUP_NAME

# 6. Контакты:
# - Главный администратор: +7 (XXX) XXX-XX-XX
# - IT-аутсорсинг: support@itfresh.ru

Результаты внедрения

Проект миграции занял 4 месяца — от аудита до полной стабилизации. Вот измеримые результаты:

  • Экономия на лицензиях — 380 000+ руб. ежегодно (Windows Server CAL + Exchange CAL)
  • Окупаемость проекта — 10 месяцев с учётом стоимости наших услуг
  • Стабильность — uptime серверов вырос с 99.2% до 99.8% за первые 3 месяца
  • Безопасность — ноль инцидентов с шифровальщиками после миграции (ранее 2 за год)
  • Производительность файлового сервера — субъективно быстрее по отзывам сотрудников
  • Полная совместимость — Windows-рабочие станции работают с Samba AD без проблем
  • 1С:Предприятие — работает через веб-клиент, переход прозрачен для пользователей
  • 60 почтовых ящиков — перенесены без потери писем, SPF/DKIM/DMARC настроены
  • Мониторинг — полная видимость через Zabbix, оповещения в Telegram
  • Документация — runbook для всех аварийных сценариев, обученный администратор

Самым неожиданным результатом для клиента стало улучшение производительности файлового сервера. Сотрудники, привыкшие к «задумчивому» Windows-серверу при открытии больших макетов для печати, отметили заметное ускорение. При замерах мы обнаружили, что скорость последовательного чтения выросла на 25-30% по сравнению с Windows Server на том же оборудовании — Samba на Linux эффективнее использует дисковый кэш.

С точки зрения безопасности, за 6 месяцев после миграции не было ни одного инцидента с вредоносным ПО. Ранее администратор тратил до 4 часов в неделю на обновления Windows и борьбу с антивирусными ложными срабатываниями — теперь unattended-upgrades на Linux делают это автоматически.

Администратор типографии, изначально скептически относившийся к Linux, через месяц отметил, что командная строка стала его основным рабочим инструментом и «возвращаться на Windows не хотелось бы». Мы оставили контакты для экстренных консультаций и проводим ежеквартальный аудит инфраструктуры в рамках договора поддержки.

Часто задаваемые вопросы

Да, это рекомендуемый подход. Начните с DNS/DHCP, затем файловый сервер, потом каталог. FreeIPA поддерживает trust с Active Directory для параллельной работы. Почту мигрируйте последней.

Сервер 1С имеет нативную версию для Linux. Клиентская часть работает через веб-клиент в браузере. Файловая 1С-база требует только Samba.

Samba полностью совместима с Windows. Samba AD DC позволяет Windows входить в домен. Принтеры через CUPS + Samba подключаются штатно. Пользователи не заметят разницы.

Для компании из 50-60 сотрудников: работа специалиста (160-320 часов) — основная статья. При аутсорсинге 200 000-500 000 руб. Окупаемость 1-2 года за счёт экономии на лицензиях.

Гибридный подход: инфраструктура на Linux, для Windows-ПО — выделенный Windows Server или виртуализация (KVM + Windows VM). Для терминального доступа — Apache Guacamole.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#миграция windows linux#замена windows server#freeipa active directory#linux файловый сервер#миграция AD на linux#samba контроллер домена#linux dhcp dns#замена group policy