Подробный гайд по Bash в Astra Linux

Подробный гайд по Bash в Astra Linux: команды процессора, скрипты, права, мандатная безопасность и автозапуск для администраторов.

2026.09.15                  


Подробный гайд по Bash в Astra LinuxПодробный гайд по Bash в Astra Linux Формулировка «внутри bash-сессии процессора» технически означает работу в оболочке (терминале) операционной системы, которая управляет центральным процессором (ЦП) и вычислительными ресурсами.

Astra Linux (особенно версия Special Edition) базируется на Debian, но имеет серьезные отличия в виде встроенных средств защиты (СЗНД, мандатное управление доступом, замкнутая программная среда).

Ниже представлен подробный гайд по работе с Bash-командами и созданию скриптов в реалиях Astra Linux, включая контроль процессора и учёт механизмов безопасности.




1. Основы: Команды для работы с процессором (ЦП) в Bash

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

Команда Описание Пример использования в Astra
lscpu Вывод архитектуры и характеристик ЦП lscpu \| grep "Model name"
cat /proc/cpuinfo Детальная информация о ядрах ЦП watch -n 1 "cat /proc/cpuinfo \| grep MHz"
top / htop Мониторинг нагрузки на ЦП в реальном времени top -bn1 \| grep "Cpu(s)"
ps Снимок текущих процессов ps aux --sort=-%cpu \| head -n 5
nproc Вывод количества доступных ядер echo "Ядер: $(nproc)"
stress Стресс-тест процессора (нужна установка) stress --cpu 4 --timeout 60s

2. Жизненный цикл Bash-скрипта в Astra Linux

Скрипт — это текстовый файл с командами. Чтобы процессор начал их выполнять, файл должен быть исполняемым.

Шаг 1: Создание файла

Используйте встроенный редактор (например, nano или vi).

nano cpu_monitor.sh

Шаг 2: Написание кода (Шебанг и тело)

Первая строка (Shebang) указывает системе, какой интерпретатор использовать. В Astra по умолчанию это /bin/bash (или /bin/sh для строгого POSIX).

#!/bin/bash
echo "Скрипт запущен. Загрузка ЦП:"
top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4 "%"}'

Шаг 3: Выдача прав на исполнение

В Linux нельзя запустить скрипт без флага исполнения (+x).

chmod +x cpu_monitor.sh

Шаг 4: Запуск

./cpu_monitor.sh

Важно для Astra Linux:

Если у вас включена Замкнутая программная среда (ЗПС) или строгие политики МРД, запуск скриптов из домашней директории (~) или /tmp может быть заблокирован. Системные скрипты рекомендуется размещать в /usr/local/bin/ или /opt/, предварительно сняв/установив нужные мандатные метки.


3. Синтаксис и конструкции для написания скриптов

Для автоматизации задач процессора вам понадобятся переменные, условия и циклы.

Переменные и аргументы

Переменные в Bash пишутся без пробелов вокруг =.

#!/bin/bash
THRESHOLD=80 # Порог нагрузки
CURRENT_LOAD=$(top -bn1 | grep "Cpu(s)" | awk '{print int($2 + $4)}') # Подстановка вывода команды

# Обращение к аргументам запуска (например: ./script.sh 90)
if [ -n "$1" ]; then
    THRESHOLD=$1
fi

Условия (Если нагрузка высокая)

if [ "$CURRENT_LOAD" -gt "$THRESHOLD" ]; then
    echo "ВНИМАНИЕ: Процессор загружен на $CURRENT_LOAD%!"
    # Запись в системный лог (в Астра линукс логи идут в syslog/audit)
    logger "Astra CPU Alert: Load is $CURRENT_LOAD%"
else
    echo "Нагрузка в норме: $CURRENT_LOAD%"
fi

Операторы сравнения:

-eq (равно), -ne (не равно), -gt (больше), -lt (меньше).


Циклы (Например, мониторинг 5 раз)

for i in {1..5}; do
    echo "Замер $i..."
    sleep 2 # Пауза 2 секунды (процессор простаивает)
done

4. Специфика Astra Linux: Безопасность и МРД (Мандатный доступ)

В отличие от Ubuntu или CentOS, в Astra Linux (Special Edition) скрипты работают в условиях мандатной модели безопасности (МРД) и контроля целостности.

1. Наследование меток конфиденциальности

Если вы запустите скрипт с высоким уровнем конфиденциальности (например, уровень 2 или 3), все файлы и логи, которые создаст этот скрипт, автоматически получат эту метку. Если скрипт попытается записать лог в общедоступную папку, операция может завершиться ошибкой "Отказано в доступе" из-за нарушения правила "Не писать вниз".


2. Запуск скриптов через pdpl (Управление уровнями доступа)

Если вам нужно запустить скрипт с определенными правами (понизить или повысить уровень целостности/конфиденциальности), используйте утилиту pdpl или sudo с флагами Астра.



# Запуск скрипта от имени суперпользователя (если скрипт требует доступа к /sys или /proc)
sudo ./cpu_monitor.sh

# Запуск с изменением уровня доступа (пример для сессии администратора)
sudo pdpl-lw ./cpu_monitor.sh

3. Замкнутая программная среда (ЗПС)

В защищённых контурах Astra Linux можно запускать только те скрипты, которые подписаны или явно разрешены политиками безопасности (через механизмы контроля исполнения). При разработке скрипт необходимо временно перевести в режим обучения политик (если позволяют права администратора безопасности).


5. Практический пример: Скрипт-предохранитель для ЦП

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

Файл: /usr/local/bin/cpu_guard.sh

#!/bin/bash
# cpu_guard.sh - Защита от зависших процессов в Astra Linux

LIMIT=95
# Находим PID процесса с наибольшим потреблением ЦП (исключая сам скрипт и системные потоки)
TOP_PID=$(ps aux --sort=-%cpu | awk 'NR==2 {print $2}')
CPU_USAGE=$(ps aux --sort=-%cpu | awk 'NR==2 {print int($3)}')

echo "[$(date)] Проверка: Процесс $TOP_PID потребляет $CPU_USAGE% ЦП."

if [ "$CPU_USAGE" -gt "$LIMIT" ]; then
    echo "Обнаружена аномальная нагрузка! Завершение процесса $TOP_PID."

    # Отправка сигнала SIGKILL процессу
    sudo kill -9 "$TOP_PID"

    # Логирование события безопасности (в Astra важен аудит)
    logger -p security.warning "CPU Guard: Убит процесс $TOP_PID из-за нагрузки $CPU_USAGE%"
else
    echo "Система стабильна."
fi

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

  1. Сохраните код в файл.
  2. Сделайте исполняемым: chmod +x /usr/local/bin/cpu_guard.sh.
  3. Добавьте в планировщик cron или системный таймер systemd (в Астра лучше использовать systemd, так как он лучше интегрирован с аудитом):
   sudo crontab -e
   # Добавьте строку для проверки каждую минуту:
   * * * * * /usr/local/bin/cpu_guard.sh

6. Правила хорошего тона (Безопасный Bash)

Чтобы ваши скрипты не ломали систему и не имели уязвимостей, соблюдайте правила:

1. Используйте set -e и set -u в начале скрипта:

   #!/bin/bash
   set -euo pipefail

* set -e:

Скрипт остановится, если любая команда завершится с ошибкой.

* set -u:

Скрипт упадёт, если вы обратитесь к несуществующей переменной (защита от опечаток).

2. Всегда кавычьте переменные:

Пишите "$VAR", а не $VAR. Если переменная пустая или содержит пробелы (например, имя файла), скрипт без кавычек отработает некорректно.

3. Не используйте rm -rf с переменными без проверок:

   # ПЛОХО: Если переменная пуста, удалится корень ( / )
   rm -rf /tmp/$MY_FOLDER/* 

   # ХОРОШО:
   if [ -n "$MY_FOLDER" ]; then
       rm -rf "/tmp/${MY_FOLDER}/"*
   fi

Важно

В Astra Linux Bash-сессия является не просто инструментом автоматизации, но и объектом контроля безопасности. При написании скриптов, управляющих процессором и памятью, всегда помните про утилиту pdpl, проверяйте мандатные метки файлов (ls -lZ или средства СЗИ) и избегайте запуска скриптов из несанкционированных директорий, если включен режим Замкнутой программной среды.


Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

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