Усиление защиты конечной точки Linux с помощью межсетевого экрана и управления службами

CompTIABeginner
Практиковаться сейчас

Введение

Укрепление конечных точек (Endpoint hardening) — критически важный процесс для защиты любой компьютерной системы. Он включает в себя уменьшение "поверхности атаки" системы, делая ее менее уязвимой для угроз безопасности. Два фундаментальных аспекта укрепления системы Linux — это управление запущенными службами и внедрение межсетевого экрана (firewall).

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

  • Определять и отключать службы, которые не являются необходимыми для функционирования системы.
  • Устанавливать и настраивать Uncomplicated Firewall (UFW) — удобный интерфейс для управления правилами сетевой фильтрации в Linux.

К концу этой лабораторной работы вы получите практическое понимание того, как применять базовые методы укрепления к конечной точке Linux.

Определение и отключение ненужных служб

На этом этапе вы научитесь определять активные службы в вашей системе Linux и отключать те, которые не требуются. Уменьшение количества запущенных служб минимизирует потенциальную поверхность атаки, поскольку каждая служба может иметь уязвимости.

Сначала перечислим все активные службы. В некоторых средах Linux, особенно в контейнерах, команда systemctl недоступна. В качестве альтернативы мы можем использовать команду service.

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

service --status-all

Вы увидите список служб. Символ [ + ] рядом с названием службы указывает на то, что она запущена, а [ - ] — на то, что она остановлена.

 [ - ]  acpid
 [ - ]  apparmor
 [ + ]  apache2
 [ - ]  atop
 [ - ]  atopacct
 [ + ]  cron
...

Обратите внимание, что apache2, веб-сервер, запущен. Для универсальной конечной точки, которой не требуется размещать веб-сайт, эта служба не нужна и должна быть отключена.

Чтобы остановить службу apache2, используйте команду service с параметром stop. Для управления системными службами требуются привилегии sudo.

sudo service apache2 stop

Теперь проверьте, что служба остановлена, снова проверив ее статус:

service apache2 status

Вывод подтвердит, что служба Apache2 больше не запущена.

○ apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Tue 2025-08-05 14:44:53 CST; 2s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 5892 ExecStop=/usr/sbin/apachectl graceful-stop (code=exited, status=0/SUCCESS)
   Main PID: 4800 (code=exited, status=0/SUCCESS)
        CPU: 50ms

Отключив ненужные службы, вы сделали простой, но эффективный шаг к укреплению вашей системы.

Установка и настройка Uncomplicated Firewall (UFW)

На этом шаге вы установите Uncomplicated Firewall (UFW). UFW — это удобный интерфейс (front-end) для мощного, но сложного файрвола iptables. Он предоставляет упрощенный способ настройки общих правил файрвола.

Сначала обновите список пакетов и установите пакет ufw.

sudo apt-get update && sudo apt-get install -y ufw

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

sudo ufw status

Вывод покажет, что файрвол неактивен:

Status: inactive

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

Примечание: При включении файрвола на удаленном сервере необходимо убедиться, что у вас есть правило, разрешающее доступ по SSH. В противном случае вы можете потерять доступ. Для данной лабораторной среды (lab environment) можно безопасно продолжать.

Включите UFW сейчас:

sudo ufw enable

Вам будет предложено подтвердить операцию. Команда включит файрвол и может прервать существующие соединения.

Firewall is active and enabled on system startup

Давайте снова проверим статус, на этот раз с опцией verbose (подробный), чтобы увидеть больше деталей, включая политики по умолчанию.

sudo ufw status verbose

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

Status: active
Logging: off
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

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

Добавьте правило для разрешения SSH-соединений:

sudo ufw allow ssh

Вы увидите подтверждение того, что правило было добавлено:

Rule added
Rule added (v6)

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

Создание и тестирование базовых правил брандмауэра

Теперь, когда UFW активен, вы научитесь создавать правила для управления сетевым трафиком. Мы добавим правила, разрешающие определенные необходимые службы, а по умолчанию блокирующие все остальное.

Сначала убедимся, что наши политики по умолчанию настроены правильно. Хорошей практикой является их явное определение.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Поскольку мы уже настроили доступ по SSH из предыдущего шага, давайте добавим правило для пользовательского приложения. Предположим, мы запускаем собственное веб-приложение на порту 8080. Нам нужно создать правило, разрешающее трафик на этот конкретный порт.

sudo ufw allow 8080/tcp

Эта команда специально разрешает входящий трафик на TCP-порт 8080.

Rule added
Rule added (v6)

Чтобы увидеть список текущих правил, вы можете использовать ufw status с опцией numbered. Это упрощает управление или удаление правил в дальнейшем.

sudo ufw status numbered

Вывод отобразит ваши новые правила с номером рядом с каждым из них.

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 8080/tcp                   ALLOW IN    Anywhere
[ 3] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 4] 8080/tcp (v6)              ALLOW IN    Anywhere (v6)

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

Просмотр системных журналов активности брандмауэра

На этом шаге вы узнаете, как включить и просматривать логи UFW (Uncomplicated Firewall). Журналы (логи) необходимы для мониторинга сетевого трафика, выявления потенциальных угроз безопасности и устранения неполадок с подключением.

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

sudo ufw logging on

Вы увидите подтверждение того, что ведение журнала включено.

Logging enabled

Журналы UFW записываются в файл /var/log/ufw.log. Обратите внимание, что файл журнала может не появиться сразу после включения логирования; он будет создан автоматически при записи первой записи в журнал.

Вы можете просматривать файл журнала в реальном времени, используя команду tail с флагом -f (follow). Если файл еще не существует, команда будет ждать его создания:

sudo tail -f /var/log/ufw.log

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

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

Sep 10 12:00:00 ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:02:03:04:05:06:07:08:09:0a:0b:0c SRC=192.168.1.10 DST=192.168.1.20 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=12345 PROTO=TCP SPT=54321 DPT=23 WINDOW=0 RES=0x00 SYN URGP=0

Вот краткое описание важных полей:

  • [UFW BLOCK]: Указывает на действие, предпринятое брандмауэром.
  • SRC: Исходный IP-адрес пакета.
  • DST: IP-адрес назначения.
  • PROTO: Сетевой протокол (например, TCP, UDP).
  • DPT: Порт назначения.

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

sudo grep "UFW BLOCK" /var/log/ufw.log

Если файл журнала еще не существует или пуст, эта команда не вернет результатов, что является нормальным явлением. Как только произойдет активность брандмауэра, записи журнала будут записаны, и вы сможете их искать. Эта команда отфильтрует журнал и покажет только строки, содержащие строку "UFW BLOCK", что чрезвычайно полезно для выявления закономерностей подозрительной активности.

Резюме

Поздравляем! Вы успешно завершили эту лабораторную работу по усилению защиты конечной точки Linux.

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

  • Определять запущенные службы в системе Linux с помощью команды service.
  • Останавливать и отключать ненужные службы для уменьшения поверхности атаки системы.
  • Устанавливать, включать и настраивать Uncomplicated Firewall (UFW).
  • Создавать конкретные правила allow для основных служб, таких как SSH и пользовательские приложения.
  • Включать и просматривать журналы UFW для мониторинга активности межсетевого экрана и обнаружения потенциальных угроз.

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