Введение
Итак, Вы решили встать на путь построения карьеры системного администратора. Или уже стоите на этом пути но не знаете, куда двигаться дальше.
Для начала, давайте определимся. Кто такой системный администратор? Какие у Вас в голове возникают ассоциации при упоминании этого термина?
В России этот термин понимается не верно. На западе ему соответствует термин System Engineer, а Администратор это кто-то по выше. То есть человек, который возится с настройкой, обслуживанием и отладкой систем это именно инженер. Администратор, по сути своей, должен спланировать и спроектировать инфраструктуру, набор и состав сервисов и т.д. И следить за дальнейшей судьбой всего этого хозяйства. Но раз в РФ прижился этот термин — остановимся на нем.
Итак — системный администратор. Кто это? Если в Вашем сознании рисуется картинка типа такой:
тогда Я разочарую Вас:
- на первой изображен типичный «эникей», он же мальчик на побегушках в мире системного администрирования. «Личинка сисадмина», которая может вырасти в прекрасную бабочку, то есть высококлассного специалиста, может разочароваться в сфере и уйти из нее, но самое худшее- может застрять в таком состоянии на долгие годы. Сидеть на одном месте, подпирая свои системы
- на второй- какой-то домашний задрот. Человек который фанатеет от компьютерных систем, но не знает им применения и при этом не хочет чему то поучиться. Он шарится по форумам таких же как он, читает «умные» советы, пользуется «правильными» сборками Windows или каждые 2 месяца меняет дистрибутив Linux (не разобравшись ни с одним и не изучив систему в целом).
- на третьей — застарелый алкаш. Тут комментарии излишни. Как раз тот самый эникей, который когда-то застрял на одной ступени развития. Дальше идти лень, пользователи несут починить компьютеры за пиво, свитер уже прирос к животу, в бороде скоро заведется жизнь))
Ни один из них не соответствует термину «Системный администратор». Если в Вашем преставлении сисадмин — это человек, который занимается ремонтом и заправкой принтеров одной рукой, второй переставляет на компьютерах пользователей «эти постоянно глючащие Винды (естественно лелея влажные мечты пересадить всех на православно-верный Linux… Вот жизнь то была бы сразу), и наконец правой пяткой гоняющий из сети вирусы и что-то делающий с 1С… Отойдите на 10 шагов от ближайшей стены, повернитесь к ней лицом, закройте глаза и с разбегу убейтесь об нее. Правда. Вам нечего делать в этой области и этой профессии.
Так сисадмин или эникейщик?
Так как работа организации зависит как от своевременного развертывания нового сервера или закупки лицензии на офисное ПО, так и от стабильной работы компьютера главного бухгалтера, сисадмин замыкает на себе нереально большое количество «околоайтишных» задач, и ему приходится каждый день становиться «эникейщиком» — тем, кто придет на помощь тогда, когда «я нажала, и все исчезло». И хотя эникейщики обычно — это системные администраторы начального уровня, даже специалисту с богатым бэкграундом приходится часто засучивать рукава.
Но технологии с каждым годом все прочнее входят в жизнь любой компании и становятся неотъемлемой частью ее работы, растет степень автоматизации и интуитивности инструментов. Растет и уровень технической грамотности сотрудников — для многих решить вопрос подключения к принтеру или обновить ПО уже не представляет из себя какую-то магию. С развитием облаков некоторые вообще прочат сисадминам как профессии вымирание, а на Хабре можно встретить множество жалоб на обесценивание и «опопсение» (честно, я цитирую нашего собственного сисадмина!) профессии, проблемы профессионального роста, рутинность задач. Совокупно все это влечет дискуссии о путях развития для системных администраторов.
Ребята, у вас все будет хорошо. В эту профессию попадают главным образом (ну, мы в это по крайней мере верим) пытливые и самообучающиеся люди, любящие технологии, следящие за их развитием, желающие докапываться до сути вещей, самостоятельно искать корень зла и решать проблемы. И для сисадмина существует множество путей, по которым можно пойти, если привычные задачи стали однообразными или хочется профессионального роста. Можно развиваться горизонтально и вертикально соответственно росту масштабов задач и ответственности, можно уйти в смежные направления, наработав новые скиллы. По сути, вы как будто заканчиваете школу, получив достаточное фундаментальное образование, и оттуда все дороги открыты — надо только выбрать (и да, я снова цитирую нашего сисадмина!).
Безопасность
- Blackbox — безопасное хранение данных в Git/Mercurial;
- Denyhosts — средство против брутфорс-атак на SSH-сервер;
- Fail2Ban — сканирует логи и выполняет определённые действия для подозрительных IP-адресов;
- fwknop — защищает порты с помощью SPA-авторизации;
- Glastopf — ханипот для эмуляции уязвимостей и сбора информации о атакующих;
- Kippo — ханипот для логирования брутфорс-атак;
- OSSEC — хостовая система обнаружения вторжений, которая проводит анализ логов, обнаруживает руткиты и многое другое;
- OSQuery — обращайтесь к вашим устройствам как к базе данных с помощью базовых SQL-команд;
- pfSense — дистрибутив для создания межсетевого экрана/маршрутизатора, основанный на FreeBSD;
- Snort — open-source система предотвращения и обнаружения вторжений;
- SpamAssassin — мощный спам-фильтр с множеством методик обнаружения;
- BounCA — веб-инструмент для генерации самоподписанных SSL-сертификатов.
Облачные вычисления
- AppScale — облачная платформа для создания масштабируемых веб- и мобильных приложений. Совместима с Google App Engine;
- CloudStack — open-source платформа облачных вычислений для запуска и управления большими сетями виртуальных машин;
- Cobbler — сервер развёртывания Linux;
- Mesos — создавайте и запускайте распределённые системы с эффективным использованием ресурсов;
- OpenNebula — облачная платформа для сисадминов и devops;
- Openshift Origin — дистрибутив Kubernetes для непрерывной разработки приложений и их развёртывания, разработанный Red Hat;
- OpenStack — open-source программное обеспечение для создания частных и публичных облаков;
- The Foreman — инструмент для управления жизненным циклом физических и виртуальных серверов;
- Tsuru — open-source расширяемое PaaS программное обеспечение;
- Terraform — позволяет работать с инфраструктурой как с кодом и в основном используется для AWS/GCE.
Резервное копирование
- Amanda — программа для архивирования информации, обладающая возможностью резервного копирования данных, постоянно хранящихся на множестве компьютеров в компьютерной сети;
- Attic — программа для дедуплицированного резервного копирования, написанная на Python;
- Bacula — кроссплатформенное клиент-серверная программа, позволяющая управлять резервным копированием, восстановлением, и проверкой данных по сети для компьютеров и операционных систем различных типов;
- Bareos — форк инструмента Bacula;
- Barman — менеджер бэкапов для аварийного восстановления серверов PostgreSQL;
- Backuppc — программа для резервного копирования данных с управлением через веб-интерфейс;
- Brebis — инструмент для автоматической проверки бэкапов;
- Bup — эффективная система резервного копирования с глобальной дедупликацией;
- Burp — программа для резервного копирования и восстановления сети;
- Duplicati — бесплатный инструмент для онлайн-хранения зашифрованных бэкапов;
- Duplicity — резервное копирование с шифрованием;
- FreeFileSync — инструмент для сравнения и синхронизации папок;
- Lsyncd — монитор файловой системы, синхронизирующий директории;
- restic — быстрая, безопасная и эффективная программа для резервного копирования;
- Rsnapshot — инструмент для создания снимков файловой системы;
- SafeKeep — open-source приложение для резервного копирования;
- Snebu – эффективный инструмент для создания резервных копий с помощью снимков системы для Unix/Linux-систем;
- UrBackup — простая в использовании система резервного копирования;
- ZBackup — универсальный инструмент для дедупликации бэкапов;
- Backup — библиотека на Ruby для резервного копирования на Unix-системах;
- DREBS — инструмент для создания периодических снимков томов AWS EBS.
База данных для логирования
Clickhouse
Clickhouse — это колоночная база данных для хранения логов. Если логи структурированы, с ней очень удобно работать через SQL-подобный синтаксис — любые нужные данные, в том числе для работы нашей аналитики трафика в реальном времени, предоставляются в удобном виде и очень быстро (а скорость для нас критически важна). Благодаря высокой производительности и гибкости можно посмотреть на наши данные под любым углом и, например, быстро проанализировать критический инцидент. Удобно, просто интегрировать — иными словами, стильно, модно, молодежно.
Альтернатива: Elastic Search, Hadoop
Всем в сообществе известные базы данных — но в нашем случае (логирование клиентских сервисов) по производительности они сильно отстают от Clickhouse — в частности, Hadoop, от которого мы отказались.
Где учиться
Профессия системного администратора интересна тем, что для входа в специальность нет специфических требований к обучению, поскольку на сисадмина как такового на особом факультете не учат. Изначально всё зависит от вас — от того, насколько вы готовы самостоятельно осваивать теорию и заниматься практикой, работать с операционными системами (Windows и Unix), периферией, безопасностью. Фактически ваш компьютер должен стать вашей учебной лабораторией (а ещё лучше, если у вас будет отдельная машина под такие задачи, чтобы процесс не мешал основной работе и учёбе).Сказать, что системный администратор — это профессия без обучения и удел самоучек — в наше время просто преступно, потому что мы видим уровень хорошо оплачиваемых системных администраторов. А значит есть базовый «классический» набор, который вам понадобится.
- Базовое образование, желательно техническое, даст вам понимание основ алгоритмического мышления, инженерии, электроники и т.д. Оно значительно облегчит понимание специальности и ускорит её освоение. Кроме того, не стоит забывать, что для большинства российских работодателей диплом по-прежнему является важным документом при приёме на работу.
- Один или несколько сертификатов Cisco значительно прокачают ваши скиллы и сделают резюме конкурентоспособным. Например, Cisco Certified Entry Network Technician (CCENT) — первый уровень инженера-техника сетевых средств Cisco или Cisco Certified Network Associate (CCNA) Routing and Switching — один из базовых сертификатов начального уровня. С Cisco вы столкнётесь практически в любой компании, особенно крупной. В любом случае эта профессиональная сертификация — по сути золотой стандарт сетевой работы. В дальнейшем можно «получить» остальные уровни, но, по секрету скажу, уже за счёт работодателя
- В зависимости от профиля работы вы можете получить соответствующие сертификаты по операционным системам, безопасности, сетям и т.д. Это реально востребованные работодателем бумаги и по своему опыту скажу — во время подготовки к экзаменам прокачиваешься в теме по полной. Если самостоятельно не заниматься, а ограничиться только занятиями курса, сдать экзамен практически невозможно.
- Есть ещё один способ образования — комплексные курсы системных администраторов Windows и Unix. Конечно, многое зависит от преподавателя и базовой организации, проводящей курс, но качество курса может разочаровать на 100%. Между тем, при удачном стечении обстоятельств такой курс здорово систематизирует знания, раскладывает их по полочкам. Если вы всё же решитесь получить такое дополнительное образование, выбирайте не вуз, а корпоративный университет, где лекцию и практику читают реальные, действующие профессионалы, а не теоретики из 90-х.
Системный администратор — специальность, которая требует постоянного обучения новым технологиям, средствам защиты, системам управления ИТ-инфраструктуры и т.д. Без непрерывного погружения в новые материалы вы быстро потеряете свою квалификацию и стоимость на рынке.Вам не удастся обойти азы и стать крутым профессионалом — без знания архитектуры ПК, сервера, понимания принципов работы прикладного и служебного ПО, операционных систем ничего не получится. Поэтому для системных администраторов как никогда актуален тезис «начинайте с начала».
Редакторы
- Atom — текстовый редактор от GitHub;
- Brackets — open-source текстовый редактор для веб-дизайнеров и фронтенд-разработчиков;
- Eclipse — IDE с системой расширений, написанная на Java;
- Geany — текстовый редактор, использующий GTK+;
- GNU Emacs — расширяемый и настраиваемый текстовый редактор;
- Haroopad — редактор разметки с возможностью сразу же видеть результат;
- ICEcoder — редактор кода с веб-интерфейсом;
- Intellij IDEA — мощная IDE с множеством плагинов, написанная на Java и Kotlin;
- jotgit — редактор для совместного редактирования;
- Light Table — open-source редактор кода с системой расширений;
- Lime — open-source альтернатива Sublime Text, написанная на Go;
- SciTE — текстовый редактор на основе SCIntilla;
- TextMate — текстовый редактор для OS X.
- Vim — текстовый редактор с широкими возможностями для настройки;
- Visual Studio Code — настраиваемый, кроссплатформенный редактор кода от Microsoft.
Контейнеры
- Bitnami — сервис для автоматической упаковки, развёртывания и поддержки веб-приложений;
- Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы;
- LXC — система виртуализации на уровне операционной системы для запуска нескольких изолированных экземпляров операционной системы Linux на одном узле;
- LXD — менеджер контейнеров;
- OpenVZ — реализация технологии виртуализации на уровне операционной системы, которая базируется на ядре Linux;
- Docker Compose — инструмент для определения и запуска многоконтейнерных Docker-приложений;
- Singularity — контейнеры приложений для Linux.
Сети
Итак, в плане морального выбора — сети, это самый простой вопрос. Сети используются повсеместно, большинство протоколов открыты и стандартизованы, а потому имеют реализации для всех операционных систем и сетевого оборудования. Поэтому изучение сетевых технологий обязательно и в то же время полезно как для администраторов, так и для любых других IT специалистов (например программистов- да, да). Вопрос только в том, на сколько глубоко Вы хотите (или Вам нужно) их изучить. Итак, вначале я дам несколько рекомендаций по поводу источников для изучения. А потом уже сконцентрируюсь на том, какие технологии, аспекты, моменты ( и прочие детали) Вы должны учить.
CCNA
Итак, самый лучший ( в плане полноты, структуры, формата подачи материала и практики) является курс Cisco CCNA. Курс меняется каждые несколько лет — что-то добавляется, что-то убирается, но суть курса остается неизменной. Пройдя его, человек, который не был способен даже настроить домашний роутер, сможет планировать и строить (а так же обслуживать) довольно крупные корпоративные сети. А главное, закладывается очень прочный фундамент для дальнейшего изучения.
Большинстве системных администраторов этого курса будет более чем достаточно в их профессиональной карьере. Дальше — лишь более глубокое практическое изучение и накопление опыта. Если Вы не хотите специализироваться в сетевых технологиях, CCNA это то, что математики называют «необходимо и достаточно».
Отдельно хочу отметить, что практическая сторона курса построена на использовании эмулятора сетей Cisco Packet Tracer. Великолепная штука на мой взгляд (с точки зрения обучения).
К сожалению, найти этот курс в открытом виде довольно сложно. Официальный курс, со всеми методическими материалами, лекциями и лабораторнымис расчитан на год изучения в неспешном темпе (2 занятия в неделю по 2 академ. часа примерно). В случае интенсивного освоения его можно пройти за 3 месяца (личный опыт, закончившийся успешной сдачей на сертификат).
Альтернативой (конечно частичной и не полной) может служить т.н. «курс молодого бойца» от Компании NetSkils.
Еще одна альтернатива очному курсу- подготовка по офф. печатным руководствам. То есть книгам:
- Уэнделл Одом. Официальное руководство Cisco по подготовке к сертификационным экзаменам CCENT/CCNA ICND1 100-101
- Уэнделл Одом. Официальное руководство Cisco по подготовке к сертификационным экзаменам CCNA ICND2 200-101.
Альтернативные варианты
Если по какой-то причине описанное выше не для Вас, я могу предложить Вам пару альтернативных вариантов.
Вариант 1 — курс от ребят с Хабрахабр «Сети для самых маленьких». Небольшой практико-теоретический курс. Глубоких знаний не даст, но позволит немного прояснить ситуацию для себя.
Вариант 2 — изучение по книгам — их две:
- Эндрю Таненбаум. Компьютерные сети. Очень крупный, подробный академический труд.
- Супруги Олифер. Компьютерные сети. Это больше учебник для вузов. Но очень хорошая книжка тем не менее.
Коммуникация в команде
Здесь можно поломать много копий. Что удобнее — Slack или Basecamp? Лучше созваниваться в Teams или Zoom? Однозначного ответа на эти вопросы нет, и здесь особенно трудно посоветовать что-то конкретное, поэтому выбирайте сердцем.
Slack
Мы выбрали Slack для внутренней коммуникации, настроили нужные нам интеграции с другими системами — в среде ИТ и разработки Slack очень популярен, поэтому интегрировать можно много чего. В канал команды в Slack приходят важные алерты: например, о только что сформированном тикете. Через простые команды можно начать срочный звонок в Зуме, создать тикет, получать уведомления по инцидентам и многому другому. Классно — честно, мы были очень рады, когда переехали из Teams в Slack.
Альтернатива: Telegram
До этого мы активно использовали Telegram в службе сопровождения: общались в мессенжере как между собой, так и с заказчиками, применяли бота для срочных клиентских обращений. Все-таки как продукт разработки Telegram можно вполне смело поставить рядом со Slack — постоянно добавляются улучшения и новые фичи, которые делают жизнь легче. С переездом в Slack мы решили унифицировать все каналы коммуникации в команде и в Telegram больше не общаемся столь регулярно, но временами ностальгируем — даже стикерпак запилили. Кто в теме — пользуйте =)
SSH клиент
Первое место в списке программ системного администратора занимает ssh клиент. Именно в ssh я провожу большую часть своего рабочего времени. Я работаю с linux значительно больше, чем с windows. За время своей работы я перепробовал все, что попадалось на тему ssh клиента. Как и большинство, начинал с putty, потом пользовался kitty. Этот вариант подходит тем, кому надо изредка подключаться куда-то по ssh. Так же тем, у кого в попечении 5-10 серверов с одним паролем или сертификатом на все сервера.
Как только количество серверов вырастает, встает вопрос о поиске более удобной программы для ssh подключений. Я в итоге пользуюсь двумя программами, о которых расскажу подробнее.
mRemoteNG
С этой программой я познакомился очень давно, еще до того, как ее форкнули и добавили NG на конце. Она объединяет в себе все популярные способы удаленного подключения к серверам. Конкретно я использовал следующие:
- ssh
- rdp
- vnc
Очень удобно подключаться к различным серверам из одного места. Все подключения располагаются в одном окне программы в раздельных табах. В этой программе меня устраивало практически все, кроме одного досадного бага, который до сих пор не исправили. Если вы подключаетесь по ssh, то у вас некорректно работает переключение по alt+tab. Если из mRemoteNG вы переключитесь в другое окно, через альттаб, а потом вернетесь обратно этой же комбинацией, то попадете не в mRemoteNG, а в другую программу.
Такое поведение связано с тем, что для ssh подключения используется putty, сама программа написана на .net. Эта связка как-то некорректно работает в плане переключения окон. Я читал на сайте разработчиков отзывы об этом баге, там есть все подробности. Они пишут, что пока не уйдут от putty, исправить этот баг невозможно. А жаль, так как программа меня на 100% устраивает, но вечные проблемы с alt+tab меня все же вынудили искать замену для ssh. И я ее нашел, а mRemoteNG использую для rdp и vnc подключений.
Данная программа имеет портированную версию и легко синхронизируется через облачные хранилища файлов, что добавляет ей плюсов. Из минусов как раз использование putty, в которой лично мне очень не нравится то, что она использует свой формат приватных ключей. Приходится использовать puttygen для конвертации ключей.
Эта программа стала незаменимой для меня, когда число управляемых серверов перевалилось за 30-40. С ее помощью можно выстраивать древовидную структуру вложений для подключений, сохранять учетные данные. И все это в одном месте для всех протоколов. mRemoteNG отличная программа для системного администратора. Лучше по функционалу я не встречал. Может когда-нибудь и недостатки исправят.
Минус, как я уже говорил — некорректное переключение по alt+tab при работе с ssh и отсутствие пароля на запуск
Это важно, так как все пароли у вас хранятся в программе, при этом она еще и портированная. В итоге все ssh подключения я из нее убрал и стал пользоваться другой программой
Xshell 5
Этот ssh клиент под windows меня устроил всем. В нем много настроек, после установки я долго разбирался с ними, чтобы все сделать красиво и удобно. Вот пример, за что я люблю этот клиент.
Вы можете расположить окна, к примеру, вот так и что-то отлаживать. Если у вас несколько мониторов, как у меня, то сможете разные экземпляры программы с разными подключениями расположить по разным мониторам. Я, к примеру, люблю так тестировать нагрузку на web сервер. На одном мониторе открываю ssh окна с нужными метриками, на другом графики из zabbix. Даю нагрузку и в режиме реального времени смотрю, что происходит на сервере.
Xshell 5 избавлен от всех недостатков предыдущей программы:
- Корректно переключается по alt+tab.
- Имеет пароль на запуск программы.
- Использует стандартный формат приватных ключей, в отличие от putty.
Интерфейс неплохо кастомизируется. Я убрал вообще все лишнее с окна программы. Запомнил горячие клавиши и пользуюсь только ими для создания подключений, изменения и т.д. Подключения ssh могут организовывать древовидную структуру, имеют массу настроек. Можно менять цвета в консоли, цвета заголовков окон и т.д. Таким образом можно удобно помечать наиболее важные сервера отдельным цветом, или тестовые. Я так делаю для некоторых серверов. Можно разделять сервера разных организаций разным цветом.
Управление проектами
- GitBucket — клон GitHub, написанный на Scala;
- GitLab — клон GitHub, написанный на Ruby;
- Gogs — легковесный Git-сервис, написанный на Go;
- Phabricator — инструмент для просмотра кода, созданный Facebook и используемый WikiMedia, FB, DropBox и другими;
- Redmine — open-source серверное веб-приложение для управления проектами и задачами, написанное на Ruby;
- Taiga — open-source инструмент для управления проектами на основе методик Kanban и Scrum;
- The Bug Genie — инструмент на PHP для управления проектами и отслеживания задач;
- Trac — средство управления проектами и отслеживания ошибок в программном обеспечении, написанное на Python.