Перейти к содержанию
Обсудить задачу →
Статьи и инструкции

Как стать системным администратором: практический маршрут и лабораторные задания

Практический маршрут системного администратора: изолированные VM, IP и DNS, SSH, права, сервис, backup/restore, AD и диагностика инцидентов.
Как стать системным администратором: практический маршрут и лабораторные задания — техническая иллюстрация

Системный администратор обеспечивает работу сервиса и умеет восстановить его после сбоя. Знание названий команд полезно только вместе с пониманием DNS, адресации, прав, storage, резервирования и журналов. Ниже — практический маршрут для начинающего специалиста: изолированная лаборатория, задачи с проверяемым результатом и правила безопасного изменения. Он подходит для самостоятельной подготовки и вводного обучения сотрудника MSP. Срок освоения зависит от исходных навыков и времени практики; обещание должности или зарплаты по одной статье было бы необоснованным.

Каждую работу оформляйте как короткое обращение: задача, схема, исходное состояние, действия, результат, возврат и оставшиеся вопросы. Портфолио администратора — воспроизводимые процедуры и подтверждённое восстановление, а не screenshots терминала без объяснения.

Практика администратора: стенд, сеть, сервис, права, backup и диагностическая задача
Порядок проверки и настройки. Команды, ограничения и диагностика приведены в статье.

1. Собрать изолированную лабораторию

Для первого цикла нужны две Linux VM: server-lab и client-lab. Пример — Ubuntu Server 24.04, каждой 2 vCPU, 2 ГБ RAM и 20 ГБ виртуального диска, если хост располагает ресурсами. Для отдельного AD-цикла понадобится Windows Server и Windows-клиент с подходящими лицензиями/оценочными условиями. Не подключайте учебный DHCP или DC к офисному LAN.

На Windows Pro/Enterprise проверьте поддержку Hyper-V по документации; редакция Home имеет другие доступные варианты виртуализации. В Hyper-V Manager создайте virtual switch типа Internal с именем LAB, две generation-2 VM и установите ОС из официального образа. Для первичного обновления допустимо временно использовать Default Switch; перед сетевыми опытами переключите обе VM на LAB. Не добавляйте вторую сетевую карту без понимания маршрутов. Включение Hyper-V.

Лабораторная подсеть 10.77.0.0/24 не имеет gateway в изолированном цикле. Server — 10.77.0.10, client — 10.77.0.20. Проверьте, что диапазон не пересекается с host/VPN; при пересечении выберите другой. При установке используйте имя обычного учебного пользователя labadmin; административные команды выполняйте через sudo из этой учётной записи. Пароль придумайте свой, в документацию его не записывайте. Для работы достаточно VM console, поэтому ошибочная сетевая настройка не отрежет вам единственный доступ.

2. Настроить адреса и объяснить маршрут

До переключения на изолированный switch обновите ОС и установите openssh-server, curl, dnsutils, acl и python3 на server; curl, dnsutils и openssh-client на client. После переключения определите имя NIC через ip -br link. В Ubuntu Server создайте /etc/netplan/99-lab.yaml, подставив своё имя интерфейса. На server:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      addresses: [10.77.0.10/24]

На client адрес — 10.77.0.20/24. Перед редактированием сохраните исходную конфигурацию; не оставляйте два конфликтующих netplan файла для одной NIC. Применение выполняйте в console:

sudo cp -a /etc/netplan /root/netplan-before-lab
sudo chmod 600 /etc/netplan/99-lab.yaml
sudo netplan generate
sudo netplan try
ip -br address
ip route
ping -c 4 10.77.0.20

netplan try допускает подтверждение и возврат при потере связи, но резервная копия и console всё равно нужны. В изолированном стенде отсутствие default route нормально: VM не должна выходить в Internet. Задание принято, когда обе VM видят друг друга, а вы объясняете, почему /24 делает адреса соседями и для чего нужен gateway. Сеть Ubuntu Server.

3. Разобрать DNS отдельно от IP-связности

На стадии с временным доступом через Default Switch выполните запрос публичного имени, затем сравните lookup с доступом к IP/порту. В изолированном LAB публичный DNS без маршрута недоступен — это ожидаемый результат, а не причина вставлять случайный resolver.

getent ahosts example.com
nslookup -type=A example.com
nslookup -type=MX example.com
nslookup -type=TXT example.com
ip route

Задание: объяснить A/AAAA, CNAME, NS, MX priority и TTL, а также разницу authoritative и recursive DNS. TXT может содержать SPF, но наличие TXT не подтверждает успешную доставку письма. Команда nslookup -type=ANY не является способом перечислить все поддомены. Для закрепления используйте прикладную инструкцию DNS/nslookup.

Локальное имя server-lab можно временно добавить на client в /etc/hosts: 10.77.0.10 server-lab. Это проверяет local name resolution, но не заменяет DNS-сервер. Всегда указывайте, какой источник дал ответ, иначе рабочий hosts может скрыть неисправность DNS.

4. Настроить SSH и доказать, что доступ работает

На server проверьте службу и listener. Создайте отдельного lab-пользователя согласно правилам стенда. На client генерируйте ключ с passphrase, затем передайте public key штатным способом. Private key остаётся на клиенте.

# Сервер
systemctl status ssh --no-pager
ss -lnt | grep ':22'
# Клиент
ssh-keygen -t ed25519 -f "$HOME/.ssh/lab_ed25519"
ssh-copy-id -i "$HOME/.ssh/lab_ed25519.pub" labadmin@10.77.0.10
ssh -i "$HOME/.ssh/lab_ed25519" labadmin@10.77.0.10

Перед первым доверием сравните fingerprint server host key через console. Нельзя отключать StrictHostKeyChecking, чтобы избавиться от предупреждения после пересоздания VM. После входа проверьте id, hostname и pwd. Ужесточение sshd_config выполняется только после проверки ключевого входа во второй сессии; сохраняйте первую и console. Валидатор sudo sshd -t должен пройти до reload. OpenSSH Ubuntu.

5. Разделить пользователя, группу и доступ к файлам

Права должны давать нужную операцию конкретной группе. Упрощение chmod 777 предоставляет запись всем локальным пользователям и не является исправлением. В лаборатории создайте группу lab-readers и каталог с известными файлами:

sudo groupadd lab-readers
sudo adduser labviewer
sudo mkdir -p /srv/lab-share
printf '%s\n' 'training data' | sudo tee /srv/lab-share/readme.txt > /dev/null
sudo chown -R root:lab-readers /srv/lab-share
sudo chmod 2750 /srv/lab-share
sudo chmod 0640 /srv/lab-share/readme.txt
sudo usermod -aG lab-readers labadmin
id labadmin
namei -l /srv/lab-share/readme.txt
getfacl /srv/lab-share
sudo -u labadmin cat /srv/lab-share/readme.txt
sudo -u labviewer cat /srv/lab-share/readme.txt

Для изменения состава групп нужен новый login session; текущий процесс может сохранить старые supplemental groups. Последняя команда должна дать Permission denied: labviewer не включён в lab-readers. Проверка через sudo -u выполняет чтение от выбранного пользователя, а не от root. Задание принято, когда участник группы читает файл, посторонний пользователь не читает, а никто из них не может менять его без нужных прав. Понимайте execute на каталоге и ACL mask. Возврат — снять только созданное членство/ACL и восстановить исходное состояние, не рекурсивно менять весь /srv.

6. Развернуть небольшой сервис и проверить весь путь

Для первого стенда достаточно простого HTTP-сервера, который не содержит пользовательских данных и не публикуется в Internet. В отдельном терминале server:

mkdir -p "$HOME/lab-web"
cd "$HOME/lab-web"
printf '%s\n' '<h1>server-lab works</h1>' > index.html
python3 -m http.server 8080 --bind 10.77.0.10

С client:

curl --connect-timeout 3 --max-time 5 http://10.77.0.10:8080/
ss -s

Ответ должен содержать известный текст. Остановите сервис и повторите запрос: connection refused/timeout отличайте от HTTP 404/500. Простой python server здесь — учебный инструмент, не production deployment. Следующий уровень — штатный nginx/systemd, config validator, отдельный пользователь и журналы. Критерий работы администратора: определить listener, маршрут, firewall, HTTP status и зависимость, а не только «ping отвечает».

7. Сделать backup и восстановить отдельную копию

Snapshot VM помогает вернуться к точке лаборатории, но не заменяет независимый backup при отказе datastore. Для файлового упражнения создайте архив, checksum и отдельный restore directory. Сначала проверьте место назначения; не пишите backup в тот же единственный аварийный диск.

mkdir -p "$HOME/lab-backup" "$HOME/lab-restore"
tar -C "$HOME" -czf "$HOME/lab-backup/lab-web.tar.gz" lab-web
sha256sum "$HOME/lab-backup/lab-web.tar.gz" > "$HOME/lab-backup/lab-web.sha256"
sha256sum -c "$HOME/lab-backup/lab-web.sha256"
tar -tzf "$HOME/lab-backup/lab-web.tar.gz"
tar -C "$HOME/lab-restore" -xzf "$HOME/lab-backup/lab-web.tar.gz"
cmp "$HOME/lab-web/index.html" "$HOME/lab-restore/lab-web/index.html"

Для этого упражнения архив создан вами и имеет известные относительные пути. Непроверенный чужой архив нельзя распаковывать с повышенными правами поверх системы. Задание принято, когда файл восстановлен и сравнен, а время восстановления измерено. Для БД используйте application-consistent backup и отдельную проверку транзакций; tar живого каталога не гарантирует согласованность. GNU tar.

8. Выполнить Windows/AD цикл в отдельном стенде

После Linux-основ добавьте изолированный Windows Server и поддерживаемый domain-capable Windows-клиент. Официальный evaluation образ используют только в пределах его условий. AD DS разворачивают на отдельном LAB switch, с заранее выбранным именем учебного домена и DNS. Не используйте настоящее имя production forest и не подключайте lab DC к офисному сегменту.

Задания: создать OU Lab, группу доступа и двух пользователей; ввести клиент в учебный домен; выдать доступ через группу; проверить результирующую GPO и контролируемую блокировку. Для команд PowerShell используйте десять задач AD. Начните чтением:

Import-Module ActiveDirectory
Get-ADDomain | Select-Object DNSRoot,DomainSID
Get-ADUser -Filter * -SearchBase 'OU=Lab,DC=lab,DC=example' |
    Select-Object SamAccountName,Enabled
whoami /groups
gpresult /r

DN замените реальной OU стенда. Результат — схема group→resource, понятная GPO и тест двух пользователей с разными полномочиями. Создание домена требует отдельной процедуры с DNS, временем и восстановлением; официальное развёртывание AD DS служит источником для этого цикла.

9. Решить неисправность по доказательствам

Попросите коллегу внести один согласованный сбой в лабораторию: остановить HTTP server, изменить только client hosts, убрать membership или заполнить ограниченную учебную файловую систему. Запишите симптом и проверяйте гипотезы последовательно. Не создавайте нагрузку, которая заполнит диск хоста или production storage.

date -Is
ip -br address
ip route
getent ahosts server-lab
ss -lntup
systemctl --failed --no-pager
journalctl --since '-15 minutes' --no-pager

Покажите, какая проверка исключила сеть, DNS, права или службу. «Перезапустил и заработало» не объясняет причину и не предотвращает повторение. После исправления повторите исходную операцию пользователя и сохраните before/after. Для постоянного наблюдения переходите к мониторингу Linux.

10. Подготовить портфолио и выбрать специализацию

Завершённый учебный комплект включает схему IP/VLAN, inventory VM, процедуры SSH, доступ через группы, backup/restore, диагностику инцидента и короткий runbook. В нём нет настоящих паролей, private keys или клиентских персональных данных. Команды должны иметь условия применения и результат: другой человек способен повторить работу в таком же стенде.

После базы выбирайте специализацию через задачи: Windows/AD, Linux/application operations, сети, storage/backup, cloud или security. MSP требует также учёта изменений, коммуникации с пользователем и документированного сопровождения нескольких клиентов. Автоматизацию начинайте с read-only inventory и отчёта, затем добавляйте ограниченное изменение с dry-run, журналом и возвратом. Готовность к первой работе определяется тем, что вы можете поддерживать понятный сервис, диагностировать сбой и восстановить его, а не количеством просмотренных курсов.