Основы системного администрирования Linux

Этот курс охватывает ключевые навыки, необходимые для управления серверами на базе Linux, от работы в терминале до настройки безопасности. Вы научитесь управлять пользователями, процессами, сетью и файловыми системами.

1. Введение в архитектуру Linux, навигация в командной строке и работа с файлами

Введение в архитектуру Linux, навигация в командной строке и работа с файлами

Добро пожаловать на курс «Основы системного администрирования Linux». Это первая статья нашего цикла, и мы начнём с фундамента, на котором строится вся работа системного администратора. Мы разберём, как устроена операционная система Linux, почему командная строка — это ваш лучший друг, и как управлять файлами без использования мыши.

Что такое Linux и почему он так важен?

Linux — это не просто одна программа, а целое семейство операционных систем, работающих на базе ядра Linux. Сегодня Linux управляет всем: от суперкомпьютеров и серверов Google до вашего домашнего роутера и смартфона на Android. Для системного администратора знание Linux — это базовый навык выживания в профессии.

В отличие от Windows или macOS, где пользователь часто скрыт от внутренних процессов красивым графическим интерфейсом, Linux предоставляет прямой доступ к управлению «железом» и процессами. Это дает огромную гибкость, но требует понимания архитектуры.

Архитектура операционной системы Linux

Чтобы эффективно управлять системой, нужно понимать, из каких слоев она состоит. Представьте Linux как слоеный пирог.

!Диаграмма слоев архитектуры Linux: Железо, Ядро, Оболочка, Приложения

1. Аппаратное обеспечение (Hardware)

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

2. Ядро (Kernel)

Это сердце системы. Ядро — это программа, которая напрямую общается с железом. Оно распределяет память, процессорное время и управляет драйверами устройств. Когда вы запускаете браузер, именно ядро выделяет ему оперативную память.

> Linux is a kernel, not an operating system. > — Линус Торвальдс (создатель ядра Linux)

3. Оболочка (Shell)

Ядро говорит на сложном машинном языке. Чтобы человек мог отдавать команды ядру, нужен посредник. Этим посредником выступает Shell (оболочка). Это командный интерпретатор, который принимает ваши текстовые команды (например, «покажи файлы») и переводит их в инструкции для ядра.

Самая популярная оболочка называется Bash (Bourne Again Shell), и именно с ней мы будем работать.

4. Утилиты и приложения

Это верхний уровень: текстовые редакторы, веб-серверы, базы данных и команды, которые мы вводим в терминале (например, ls или cp).

Файловая система: всё есть файл

Одна из ключевых концепций Linux звучит так: «Всё есть файл». Это означает, что не только текстовые документы или картинки являются файлами, но и директории, устройства (например, жесткий диск или клавиатура) и даже процессы в памяти представлены в виде файлов.

В Windows мы привыкли к дискам: C: , D: . В Linux дисков в таком понимании нет. Есть единое дерево каталогов, которое начинается с корня.

!Иерархия файловой системы Linux, начинающаяся с корневого каталога

Основные директории

* / (Root) — корневой каталог. Начало всех начал. * /bin (Binaries) — здесь лежат основные программы (команды), необходимые для работы системы (например, ls, cp). * /home — здесь хранятся личные папки пользователей. Аналог C: Users в Windows. * /etc — святая святых администратора. Здесь лежат конфигурационные файлы всей системы. * /var (Variable) — файлы, которые часто меняются: логи (журналы событий), почта, временные файлы сайтов. * /tmp — для временных файлов. Обычно очищается при перезагрузке.

Навигация в командной строке

Когда вы открываете терминал, вы видите приглашение командной строки. Обычно оно выглядит так:

* user — имя текущего пользователя. * hostname — имя компьютера. * ~ (тильда) — обозначение текущей директории. Тильда — это сокращение для домашней папки пользователя.

Где я нахожусь? (pwd)

Чтобы узнать полный путь к текущей директории, используйте команду pwd (Print Working Directory).

Вывод может быть таким: /home/student.

Что здесь лежит? (ls)

Команда ls (List) показывает содержимое текущей папки.

У этой команды есть полезные ключи (флаги): * ls -l — показывает список в подробном формате (права доступа, владелец, размер, дата изменения). * ls -a — показывает скрытые файлы. В Linux скрытым считается любой файл, имя которого начинается с точки (например, .bashrc). * ls -la — комбинация ключей: подробный список, включая скрытые файлы.

Как перемещаться? (cd)

Команда cd (Change Directory) позволяет переходить между папками.

Существует два способа указать путь:

  • Абсолютный путь: всегда начинается с корня /. Это точный адрес, который сработает из любой точки системы.
  • * Пример: cd /var/log
  • Относительный путь: путь относительно того места, где вы сейчас находитесь. Не начинается со слэша.
  • * Пример: если вы в /home, команда cd student перенесет вас в /home/student.

    Специальные символы навигации: * . (одна точка) — текущая директория. * .. (две точки) — родительская директория (на уровень выше).

    Пример: чтобы выйти из папки на уровень вверх, введите:

    Работа с файлами и директориями

    Системный администратор постоянно создает, копирует и перемещает файлы. Рассмотрим базовый набор команд.

    Создание (mkdir, touch)

    Чтобы создать новую папку (директорию), используем mkdir (Make Directory):

    Чтобы создать пустой файл, используем команду touch:

    Копирование (cp)

    Команда cp (Copy) требует два аргумента: что копируем и куда копируем.

    Если нужно скопировать папку целиком, обязательно добавьте ключ -r (рекурсивно):

    Перемещение и переименование (mv)

    В Linux нет отдельной команды для переименования. Для этого используется команда перемещения mv (Move).

    Перемещение файла в другую папку:

    Переименование файла (перемещение «на месте»):

    Удаление (rm)

    Будьте осторожны! В командной строке Linux нет корзины. Удаленные файлы восстановить крайне сложно или невозможно.

    Удаление файла:

    Удаление папки и всего её содержимого (используется ключ -r):

    Просмотр содержимого файлов

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

    * cat filename — выводит всё содержимое файла на экран. Удобно для маленьких файлов. * less filename — позволяет листать длинный файл. Для выхода нажмите клавишу q. * head filename — показывает первые 10 строк файла. * tail filename — показывает последние 10 строк файла. Очень полезно для просмотра свежих записей в логах.

    Заключение

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

    В следующей статье мы углубимся в тему прав доступа, узнаем, что такое chmod и chown, и как защитить свои файлы от посторонних глаз. Практикуйтесь с командами, которые мы изучили, — это основа вашего мастерства.

    2. Управление учетными записями пользователей, группами и правами доступа

    Управление учетными записями пользователей, группами и правами доступа

    В предыдущей статье мы научились работать с файлами и перемещаться по системе. Теперь пришло время разобраться, кто именно имеет право эти файлы открывать, изменять или удалять.

    Linux изначально создавался как многопользовательская система. Это означает, что на одном компьютере (или сервере) могут одновременно работать десятки и сотни пользователей, не мешая друг другу. Чтобы обеспечить безопасность и порядок, в Linux существует строгая система прав доступа и разграничения полномочий.

    В этой статье мы разберем, как создавать пользователей, объединять их в группы и управлять доступом к файлам с помощью магических команд chmod и chown.

    Пользователи и группы: основы

    В Linux каждый процесс и каждый файл принадлежат определенному пользователю и группе. Это основа безопасности системы.

    Суперпользователь (Root)

    В любой системе Linux есть один особенный пользователь — root. Это администратор с неограниченными правами. Он может прочитать любой файл, остановить любой процесс и даже удалить всю операционную систему одной командой.

    > With great power comes great responsibility. > — Принцип Питера Паркера (и системных администраторов)

    Из-за такой власти работать под пользователем root постоянно — опасно. Обычно администраторы работают под своими личными учетными записями, а права суперпользователя запрашивают только при необходимости (об этом мы поговорим в разделе про sudo).

    Идентификатор пользователя (UID) и группы (GID)

    Для системы имена пользователей (например, ivan или maria) — это просто удобные ярлыки. Внутри ядра Linux все пользователи различаются по цифровым идентификаторам:

    * UID (User ID) — уникальный номер пользователя. * GID (Group ID) — уникальный номер группы.

    У пользователя root UID всегда равен 0.

    Где хранятся пользователи?

    В Linux нет реестра, как в Windows. Информация о пользователях хранится в обычных текстовых файлах, которые можно прочитать (но не всегда стоит редактировать вручную):

  • /etc/passwd — здесь хранится список всех пользователей, их UID, GID, домашние директории и используемая оболочка.
  • /etc/shadow — здесь хранятся хеши паролей. Этот файл доступен для чтения только пользователю root.
  • /etc/group — здесь описаны группы и их участники.
  • Управление пользователями

    Для управления учетными записями используются специальные команды. Выполнять их нужно с правами суперпользователя (используя sudo).

    Создание пользователя (useradd)

    Чтобы добавить нового пользователя, используем команду useradd. Рекомендуется использовать ключ -m, чтобы для пользователя сразу создалась домашняя папка.

    Эта команда создаст пользователя developer и папку /home/developer.

    Задание пароля (passwd)

    Свежесозданный пользователь не имеет пароля и не может войти в систему. Чтобы задать пароль, используйте команду passwd:

    Система попросит ввести пароль дважды. При вводе символы не будут отображаться на экране — это нормальная мера безопасности.

    Модификация и удаление (usermod, userdel)

    Если нужно изменить параметры пользователя (например, добавить его в группу), используется usermod.

    Удалить пользователя можно командой userdel:

    Ключ -r (remove) означает, что нужно удалить не только пользователя, но и его домашнюю директорию со всеми файлами.

    Права доступа к файлам

    Это самая важная часть администрирования. Если вы выполните команду ls -l, то увидите что-то подобное:

    Давайте расшифруем эту запись. Самая первая часть rwxr-xr-- — это и есть права доступа.

    !Структура прав доступа: владелец, группа и остальные пользователи

    Три уровня доступа

    Права всегда определяются для трех категорий:

  • User (u) — владелец файла.
  • Group (g) — группа, которой принадлежит файл.
  • Others (o) — все остальные пользователи системы.
  • Три типа прав

    Каждый символ в строке прав означает конкретное действие:

    * r (read) — право на чтение. Для файла:* можно открыть и прочитать содержимое. Для директории:* можно просмотреть список файлов внутри (ls). * w (write) — право на запись. Для файла:* можно изменять содержимое. Для директории:* можно создавать, удалять и переименовывать файлы внутри этой папки. * x (execute) — право на исполнение. Для файла:* файл можно запустить как программу (скрипт). Для директории:* в папку можно «войти» (cd) и получить доступ к метаданным файлов. * - (dash) — право отсутствует.

    Изменение прав доступа (chmod)

    Команда chmod (Change Mode) позволяет менять права. Существует два способа их записи: символьный и числовой.

    Символьный способ

    Этот способ интуитивно понятен. Мы указываем кому (u, g, o), что сделать (+ добавить, - убрать) и какое право (r, w, x).

    Примеры:

    * chmod u+x file.sh — добавить владельцу (u) право на исполнение (x). * chmod g-w file.txt — забрать у группы (g) право на запись (w). * chmod o+r file.txt — разрешить остальным (o) читать файл (r).

    Числовой (октальный) способ

    Этот способ чаще используется профессионалами, так как он короче. Каждому праву присваивается числовое значение:

    * r (Read) = 4 * w (Write) = 2 * x (Execute) = 1

    Чтобы получить итоговое право, нужно просто сложить числа.

    Рассмотрим пример для права rwx (чтение, запись и исполнение):

    Где — чтение, — запись, — исполнение.

    Пример для права r-x (чтение и исполнение, без записи):

    Где — чтение, — отсутствие записи, — исполнение.

    Теперь мы можем задавать права сразу для всех (владельца, группы и остальных) тремя цифрами. Например, популярная комбинация 755:

    * 7 (Владелец): (rwx) — может всё. * 5 (Группа): (r-x) — может читать и исполнять. * 5 (Остальные): (r-x) — могут читать и исполнять.

    Команда выглядит так:

    Смена владельца (chown)

    Иногда нужно передать файл другому пользователю. Для этого используется команда chown (Change Owner).

    Синтаксис: chown пользователь:группа файл

    Эта команда сделает владельцем файла пользователя student, а группой-владельцем — developers.

    Механизм sudo

    Как мы говорили в начале, сидеть под root опасно. Но как выполнять административные задачи? Для этого есть утилита sudo (SuperUser DO).

    Она позволяет обычному пользователю выполнить одну команду с правами суперпользователя. Для этого пользователь должен находиться в специальной группе (обычно sudo или wheel).

    При попытке выполнить команду через sudo, система спросит ваш пароль (пароль текущего пользователя), чтобы убедиться, что это действительно вы, а не кто-то, кто сел за ваш разблокированный компьютер.

    Заключение

    Понимание прав доступа — это фундамент безопасности Linux. Теперь вы знаете, как создавать пользователей, что означают загадочные цифры 755 или 644, и почему root — это не тот аккаунт, который стоит использовать для просмотра веб-страниц.

    В следующей статье мы перейдем к управлению программным обеспечением: узнаем, что такое пакетные менеджеры, как устанавливать и обновлять программы одной строкой.

    3. Управление процессами, службами systemd и установка программного обеспечения

    Управление процессами, службами systemd и установка программного обеспечения

    В предыдущих статьях мы разобрали фундамент Linux: файловую систему и права доступа пользователей. Теперь мы переходим к тому, что делает операционную систему «живой». Файлы, лежащие на диске, пассивны. Чтобы компьютер выполнял полезную работу, программы должны быть запущены и исполняться процессором.

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

    Процессы в Linux

    Когда вы запускаете любую программу — будь то текстовый редактор nano, веб-сервер или простая команда ls — ядро Linux создает для неё процесс. Процесс — это экземпляр запущенной программы, которому выделена оперативная память и процессорное время.

    Идентификатор процесса (PID)

    Каждому процессу при рождении присваивается уникальный номер — PID (Process ID). Ядро использует этот номер для управления процессом.

    Самый первый процесс, который запускается при старте системы, имеет PID 1. В современных дистрибутивах это systemd. Он является «родителем» всех остальных процессов.

    !Иерархия процессов в Linux, начинающаяся с systemd (PID 1)

    Просмотр процессов (ps, top, htop)

    Как узнать, что сейчас работает в системе? Для этого есть несколько инструментов.

    1. Команда ps (Process Status)

    Показывает мгновенный снимок текущих процессов.

    * a — показать процессы всех пользователей. * u — показать владельца процесса. * x — показать процессы, не привязанные к терминалу (фоновые службы).

    2. Утилита top

    Это интерактивный диспетчер задач. Он обновляет информацию в реальном времени.

    В верхней части вывода вы увидите общую загрузку системы (Load Average), использование памяти и процессора. Ниже — список процессов, отсортированный по потреблению ресурсов. Чтобы выйти из top, нажмите клавишу q.

    3. Утилита htop

    Это более современная и удобная версия top. Она часто не установлена по умолчанию, но её стоит поставить (как это сделать — разберем в конце статьи). htop поддерживает прокрутку мышью и цветовую индикацию.

    Управление процессами: Kill

    Иногда программы зависают или ведут себя некорректно. В Windows мы привыкли нажимать «Снять задачу». В Linux мы отправляем процессу сигнал.

    Команда kill используется для отправки сигналов процессам. По умолчанию она отправляет сигнал завершения.

    Синтаксис: kill [PID]

    Предположим, у нас завис процесс с PID 1234:

    Основные сигналы:

  • SIGTERM (15) — «Пожалуйста, завершись». Это сигнал по умолчанию. Программа получает его, сохраняет данные, закрывает файлы и корректно выключается.
  • SIGKILL (9) — «Умри немедленно». Ядро моментально уничтожает процесс. Программа не успевает ничего сохранить. Используйте этот сигнал только в крайнем случае.
  • Если процесс 1234 не реагирует на обычный kill, используем «тяжелую артиллерию»:

    Также существует команда killall, которая позволяет убить процессы по имени, а не по PID:

    Фоновый и активный режимы

    Обычно, когда вы запускаете команду в терминале, она занимает его полностью. Вы не можете вводить новые команды, пока текущая не завершится. Это называется foreground (передний план).

    Но что, если нужно запустить долгий скрипт и продолжить работу?

    Запуск в фоне (&)

    Добавьте символ амперсанда & в конец команды:

    Команда sleep 100 (ждать 100 секунд) запустится в фоне, а терминал сразу вернет вам управление.

    Управление задачами (jobs, fg, bg)

    * Ctrl+Z — приостановить (поставить на паузу) текущий процесс и отправить его в фон. * jobs — показать список запущенных в текущем терминале задач. * fg (foreground) — вернуть фоновую задачу на передний план. * bg (background) — продолжить выполнение приостановленной задачи в фоне.

    Система инициализации Systemd

    Обычные программы запускает пользователь. Но кто запускает веб-сервер, базу данных или службу времени при включении компьютера? Это делают демоны (daemons) — служебные программы, работающие в фоне.

    Управляет ими система инициализации systemd. Основная утилита для управления — systemctl.

    Статус сервиса

    Проверим состояние веб-сервера nginx (если он установлен):

    Вывод покажет, запущен ли сервис (active (running)), есть ли ошибки, и последние записи из его журнала.

    Запуск и остановка

    Эти команды действуют только в текущем сеансе (до перезагрузки):

    * sudo systemctl start nginx — запустить сервис. * sudo systemctl stop nginx — остановить сервис. * sudo systemctl restart nginx — перезапустить (полезно после изменения настроек).

    Автозагрузка

    Чтобы сервис запускался автоматически при включении сервера, его нужно добавить в автозагрузку:

    * sudo systemctl enable nginx — включить автозагрузку. * sudo systemctl disable nginx — выключить автозагрузку.

    > Важно: Команды start и enable — это разные вещи. start запускает прямо сейчас, enable разрешает запуск при следующей загрузке системы. Часто их используют вместе.

    Установка программного обеспечения

    В отличие от Windows, где мы привыкли скачивать .exe файлы с разных сайтов, в Linux используется централизованная система управления пакетами. Это похоже на App Store или Google Play, но появилось в Linux намного раньше.

    Репозитории и пакетные менеджеры

    Программы хранятся в специальных хранилищах — репозиториях. Это проверенные и безопасные сервера, поддерживаемые разработчиками дистрибутива.

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

    * Debian/Ubuntu: используют apt (Advanced Package Tool) и формат пакетов .deb. * Red Hat/CentOS/Fedora: используют dnf или yum и формат пакетов .rpm.

    Мы рассмотрим работу на примере Ubuntu/Debian, так как это самые популярные системы для новичков.

    Обновление списка пакетов

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

    > Эта команда не обновляет программы! Она только обновляет информацию о них (каталог).

    Обновление системы

    Чтобы обновить уже установленные программы до последних версий, используйте:

    Установка программы

    Установим, например, редактор изображений gimp или утилиту htop:

    Пакетный менеджер сам найдет программу, скачает её и, что самое важное, автоматически установит все необходимые для её работы библиотеки (зависимости).

    Удаление программы

    Чтобы удалить программу, используйте:

    Если вы хотите удалить программу вместе с её конфигурационными файлами, используйте purge вместо remove.

    Заключение

    Сегодня мы сделали большой шаг вперед. Теперь вы понимаете, что Linux — это не просто набор файлов, а динамичная система процессов, управляемая systemd. Вы научились останавливать зависшие программы, управлять фоновыми задачами и, главное, устанавливать новый софт безопасным способом через репозитории.

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

    4. Настройка сетевых интерфейсов, удаленный доступ через SSH и работа с дисками

    Настройка сетевых интерфейсов, удаленный доступ через SSH и работа с дисками

    Мы продолжаем наш курс по системному администрированию Linux. В прошлых статьях мы научились управлять пользователями, правами доступа и процессами. Теперь пришло время вывести наш сервер во внешний мир и научиться хранить большие объемы данных.

    Сервер без сети — это просто шумная коробка, стоящая в углу. А сервер без дискового пространства — бесполезная коробка. В этой статье мы разберем три критически важные темы: как настроить сеть, как безопасно управлять сервером удаленно и как подключать новые жесткие диски.

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

    В мире Linux каждый сетевой адаптер (будь то Wi-Fi карта или гнездо для кабеля Ethernet) называется сетевым интерфейсом. Чтобы компьютер мог общаться с другими устройствами, ему нужен уникальный адрес — IP-адрес.

    Устаревший ifconfig vs Современный ip

    Если вы читали старые руководства, то наверняка видели команду ifconfig. Забудьте о ней. Она считается устаревшей (deprecated) уже много лет. Современный стандарт для управления сетью в Linux — это утилита ip из пакета iproute2.

    Просмотр настроек сети

    Чтобы узнать, какие интерфейсы есть в системе и какие у них IP-адреса, используйте команду:

    Вывод может показаться сложным, но нам важны две вещи:

  • lo (loopback) — локальная петля. Это виртуальный интерфейс с адресом 127.0.0.1. Он нужен, чтобы программы на компьютере могли общаться сами с собой.
  • eth0 или enp3s0 — это ваш реальный сетевой интерфейс. Ищите строчку inet, за которой следует IP-адрес (например, 192.168.1.15).
  • Включение и выключение интерфейсов

    Иногда нужно перезагрузить сетевую карту. Для этого мы меняем её состояние (link state).

    Выключить интерфейс:

    Включить интерфейс:

    Постоянная настройка сети (Netplan)

    Команды ip меняют настройки только до перезагрузки. Чтобы настройки сохранились навсегда, их нужно прописать в конфигурационных файлах. В современных версиях Ubuntu используется утилита Netplan.

    Конфигурационные файлы лежат в папке /etc/netplan/ и имеют расширение .yaml. YAML — это формат, где очень важны отступы (пробелы).

    Пример простой настройки для получения адреса автоматически (DHCP):

    После редактирования файла нужно применить настройки командой:

    Проверка связи (Ping)

    Самый простой способ проверить, есть ли доступ к интернету или другому серверу — команда ping.

    Она отправляет небольшие пакеты данных и ждет ответа. Чтобы остановить выполнение, нажмите Ctrl+C.

    Удаленный доступ через SSH

    Системные администраторы редко сидят с монитором и клавиатурой прямо у сервера. Обычно серверы стоят в дата-центрах, а админы управляют ими из дома или офиса. Для этого используется протокол SSH (Secure Shell).

    SSH создает защищенный зашифрованный туннель между вашим компьютером и сервером. Никто в сети не сможет перехватить ваши пароли или команды.

    !Принцип работы SSH: безопасный туннель через небезопасную сеть

    Подключение к серверу

    Чтобы подключиться, вам нужно знать IP-адрес сервера и имя пользователя. Команда выполняется на вашем локальном компьютере:

    При первом подключении SSH спросит, доверяете ли вы этому серверу. Нужно написать yes. Затем система запросит пароль пользователя user.

    Ключи SSH: вход без пароля

    Вводить пароль каждый раз неудобно и менее безопасно (пароль можно подсмотреть или подобрать). Профессионалы используют SSH-ключи.

    Это работает как замок и ключ:

  • Приватный ключ (Private Key) — хранится у вас на компьютере. Это ваш секрет, его никому нельзя отдавать.
  • Публичный ключ (Public Key) — кладется на сервер. Это как слепок замка.
  • Когда вы подключаетесь, сервер проверяет: «Подходит ли твой ключ к моему замку?». Если да — пускает без пароля.

    Как настроить:

  • Сгенерировать пару ключей на своем компьютере:
  • (Просто нажимайте Enter на все вопросы).

  • Скопировать публичный ключ на сервер:
  • Теперь команда ssh user@192.168.1.15 пустит вас мгновенно.

    Безопасность SSH

    Файл конфигурации сервера находится здесь: /etc/ssh/sshd_config. Две важные настройки, которые стоит изменить для безопасности:

    * PermitRootLogin no — запретить подключаться сразу под root. Лучше зайти обычным пользователем и использовать sudo. * PasswordAuthentication no — запретить вход по паролям (только по ключам). Делайте это только после того, как проверили, что ключи работают!

    После изменения конфига нужно перезапустить службу:

    Работа с дисками и файловыми системами

    Когда вы подключаете флешку или новый жесткий диск в Linux, он не появляется автоматически как «Диск D:». Процесс подключения диска состоит из трех этапов: обнаружение, создание разделов и монтирование.

    1. Обнаружение дисков (lsblk)

    Чтобы увидеть все подключенные накопители, используйте команду lsblk (List Block Devices).

    Вы увидите дерево устройств: * sda, sdb — это физические диски. * sda1, sda2 — это разделы на дисках.

    2. Создание разделов (fdisk)

    Новый диск обычно пуст. Его нужно разбить на разделы. Для этого используется утилита fdisk.

    Внутри утилиты вы нажимаете клавиши для управления: * n — создать новый раздел (new). * w — записать изменения на диск (write).

    3. Форматирование (mkfs)

    Раздел создан, но он пуст. Нужно создать на нем файловую систему (разметить «клеточки» для хранения файлов). В Linux стандартной файловой системой является ext4.

    Эта команда отформатирует первый раздел второго диска.

    4. Монтирование (mount)

    Это самое интересное. В Linux нет букв дисков. Есть одно большое дерево папок, начинающееся с корня /. Чтобы начать пользоваться диском, мы должны «прикрепить» его к какой-нибудь папке. Этот процесс называется монтированием.

    !Монтирование: подключение диска к директории

    Создадим точку монтирования (обычную папку):

    Примонтируем диск:

    Теперь всё, что вы положите в папку /mnt/mydisk, физически будет записываться на новый диск.

    5. Автоматическое монтирование (/etc/fstab)

    Команда mount действует до перезагрузки. Чтобы диск монтировался сам при старте системы, нужно добавить запись в файл /etc/fstab.

    > Осторожно! Ошибка в этом файле может привести к тому, что система не загрузится.

    Вместо имен типа /dev/sdb1 (которые могут меняться), лучше использовать UUID — уникальный идентификатор диска. Узнать его можно командой blkid.

    Пример строки в /etc/fstab:

    Контроль свободного места (df и du)

    Как понять, что диск переполнен?

    Команда df (Disk Free) показывает общее место на дисках:

    Ключ -h (human-readable) показывает размеры в гигабайтах и мегабайтах, а не в байтах.

    Команда du (Disk Usage) показывает размер конкретной папки:

    * -s (summary) — показать только итог, а не каждый файл. * -h — в понятном формате.

    Заключение

    Сегодня мы разобрали инструменты, которые делают сервер доступным и вместительным. Вы узнали, как посмотреть IP-адрес через ip addr, как настроить безопасный вход по ключам через SSH и как расширить пространство сервера, примонтировав новый диск.

    В следующей статье мы перейдем к автоматизации рутины: изучим основы написания Bash-скриптов и планировщик задач Cron, чтобы сервер мог обслуживать себя сам.

    5. Основы безопасности сервера, настройка межсетевого экрана и мониторинг логов

    Основы безопасности сервера, настройка межсетевого экрана и мониторинг логов

    В предыдущей статье мы научились подключаться к серверу удаленно через SSH и настраивать сеть. Теперь ваш сервер виден в сети, а значит, он стал потенциальной мишенью. Интернет — это агрессивная среда: боты и злоумышленники сканируют миллионы IP-адресов ежеминутно в поисках уязвимостей и открытых портов.

    В этой статье мы превратим наш сервер в неприступную крепость. Мы настроим межсетевой экран (фаервол), научимся читать «черный ящик» системы (логи) и установим автоматическую защиту от подбора паролей.

    Принцип наименьших привилегий и обновления

    Прежде чем переходить к инструментам, вспомним два золотых правила безопасности, о которых мы говорили косвенно в прошлых уроках.

  • Регулярные обновления. Уязвимости в программном обеспечении находят постоянно. Команды sudo apt update и sudo apt upgrade должны стать вашей регулярной привычкой. Устаревший софт — самая частая причина взломов.
  • Минимизация прав. Никогда не работайте под root без необходимости. Сервисы (например, веб-сервер) тоже не должны запускаться от имени суперпользователя. Если взломают сервис, запущенный от root, злоумышленник получит контроль над всей системой.
  • Межсетевой экран (Firewall)

    Межсетевой экран (или фаервол) — это цифровой охранник, который стоит на входе в ваш сервер. Он проверяет каждый сетевой пакет, который пытается попасть внутрь или выйти наружу, и решает: пропустить его или заблокировать.

    !Межсетевой экран фильтрует трафик, пропуская только разрешенные соединения через открытые порты.

    В ядре Linux встроен мощнейший инструмент фильтрации трафика — Netfilter, который управляется сложной утилитой iptables (или более новой nftables). Однако для новичка синтаксис iptables может показаться кошмаром. Поэтому в Ubuntu и Debian стандартом де-факто стала утилита UFW (Uncomplicated Firewall) — «несложный межсетевой экран».

    Настройка UFW

    По умолчанию UFW установлен, но отключен. Важно: не включайте его сразу! Если вы включите фаервол, не разрешив предварительно SSH-соединение, вы заблокируете сами себя и потеряете доступ к удаленному серверу.

    #### 1. Проверка статуса

    Скорее всего, вы увидите ответ: Status: inactive.

    #### 2. Политика по умолчанию

    Хорошая практика безопасности гласит: «Запрещено всё, что не разрешено явно». Мы должны заблокировать все входящие соединения и разрешить все исходящие (чтобы сервер мог скачивать обновления).

    #### 3. Разрешение SSH

    Это самый важный шаг. Мы должны разрешить подключение к порту 22 (стандартный порт SSH).

    Или, если вы используете нестандартный порт (например, 2222):

    #### 4. Включение фаервола

    Только теперь, когда мы разрешили SSH, можно активировать защиту.

    Система спросит подтверждение (Command may disrupt existing ssh connections). Нажмите y и Enter.

    #### 5. Управление правилами

    Если вы планируете запустить веб-сервер, вам нужно открыть порты 80 (HTTP) и 443 (HTTPS):

    Посмотреть список всех правил с нумерацией:

    Удалить правило (например, под номером 2):

    Мониторинг логов (Журналов событий)

    Что делать, если с сервером происходит что-то странное? Или вы хотите узнать, пытался ли кто-то подобрать пароль к вашей учетной записи? Для этого существуют логи.

    В Linux практически все события записываются в текстовые файлы, расположенные в директории /var/log.

    Основные лог-файлы

    * /var/log/syslog (или /var/log/messages в CentOS) — основной системный журнал. Сюда пишет большинство служб. * /var/log/auth.log (или /var/log/secure) — самый важный файл для безопасности. Здесь фиксируются все попытки входа в систему (успешные и неудачные), использование sudo и создание пользователей. * /var/log/dmesg — сообщения ядра и драйверов (полезно, если есть проблемы с железом). * /var/log/nginx/access.logerror.log) — пример логов конкретного приложения (в данном случае веб-сервера).

    Инструменты для чтения логов

    Читать огромные файлы целиком неудобно. Системные администраторы используют специальные утилиты.

    #### tail (хвост)

    Показывает последние 10 строк файла. Но самое мощное — это ключ -f (follow), который позволяет следить за логом в реальном времени.

    Откройте второй терминал и введите:

    Теперь попробуйте в первом окне выйти и зайти снова или ввести неправильный пароль. Вы увидите, как строки появляются на экране моментально.

    #### grep (поиск)

    Позволяет найти строки, содержащие определенный текст. Например, найдем все попытки входа с неправильным паролем:

    #### less

    Позволяет листать длинные файлы (стрелками вверх/вниз). Выход по клавише q.

    Современный подход: journalctl

    В системах с systemd (Ubuntu, Debian, CentOS 7+) логи собираются в единый бинарный формат. Для доступа к ним используется команда journalctl.

    * journalctl -b — логи с момента последней загрузки. * journalctl -u ssh — логи конкретной службы (unit), например SSH. * journalctl -f — просмотр в реальном времени (аналог tail -f). * journalctl --since "1 hour ago" — показать события за последний час.

    Автоматическая защита: Fail2Ban

    Если вы посмотрите в /var/log/auth.log на сервере с публичным IP, вы ужаснетесь. Вы увидите тысячи попыток входа от ботов, которые перебирают пароли (брутфорс).

    Читать логи вручную и блокировать каждый IP через ufw невозможно. Эту рутину берет на себя утилита Fail2Ban.

    Как это работает?

    Fail2Ban работает циклично:

  • Сканирует лог-файлы (например, auth.log).
  • Ищет паттерны неудачных попыток входа (регулярные выражения).
  • Если с одного IP-адреса пришло слишком много ошибок за короткое время, Fail2Ban добавляет правило в фаервол, блокирующее этот IP.
  • Через заданное время (например, 10 минут) IP разблокируется (чтобы случайно не забанить легитимного пользователя навсегда).
  • Установка и настройка

    Установим утилиту:

    Конфигурационные файлы лежат в /etc/fail2ban. Главный файл — jail.conf, но редактировать его напрямую не рекомендуется, так как он может быть перезаписан при обновлении. Создадим копию для наших настроек:

    Откроем файл jail.local в редакторе nano:

    Найдите секцию [sshd]. Убедитесь, что она включена (enabled = true). Вы можете настроить параметры:

    * bantime — время бана в секундах (по умолчанию 10 минут). Можно увеличить, например, до 1 часа (3600). * findtime — интервал времени, за который считаются ошибки. * maxretry — количество попыток перед баном (обычно 3 или 5).

    После изменения настроек перезапустите службу:

    Проверка работы

    Посмотреть статус работы Fail2Ban и список заблокированных IP можно командой:

    Вы увидите количество текущих банов (Currently banned) и список IP-адресов злоумышленников.

    Заключение

    Безопасность — это не состояние, а процесс. Сегодня мы построили базовую линию обороны:

  • Настроили UFW, закрыв все двери, кроме необходимых.
  • Научились использовать логи для расследования инцидентов.
  • Установили Fail2Ban для автоматической борьбы с подбором паролей.
  • В сочетании с входом по SSH-ключам (из прошлой статьи) ваш сервер теперь защищен лучше, чем 90% машин в интернете. В следующей статье мы поговорим о резервном копировании и планировании задач, чтобы ваши данные были в безопасности не только от хакеров, но и от сбоев оборудования.