Загрузка данных


#!/bin/bash

echo "=========================================="
echo "ПРОВЕРКА ВЫПОЛНЕНИЯ ТРЕБОВАНИЙ"
echo "=========================================="
echo ""

# 1a. Проверка блокировки после 2 неудачных попыток
echo "=== 1a. Блокировка при 2 неудачных попытках за 10 сек на 900 сек ==="
if grep -q "pam_tally.so.*deny=2" /etc/pam.d/common-auth; then
  echo "[OK] pam_tally настроен с deny=2"
  grep "pam_tally.so" /etc/pam.d/common-auth
elif grep -q "pam_faillock.so.*deny=2" /etc/pam.d/common-auth; then
  echo "[OK] pam_faillock настроен с deny=2"
  grep "pam_faillock.so" /etc/pam.d/common-auth
else
  echo "[FAIL] Не найдена настройка блокировки"
fi
echo ""

# 1b. Проверка требований к паролю
echo "=== 1b. Требования к паролю ==="
if [ -f /etc/security/pwquality.conf ]; then
  echo "[OK] pwquality.conf существует"
  echo "Проверка параметров:"
  grep -E "minlen|credit|usercheck" /etc/security/pwquality.conf
else
  echo "[FAIL] pwquality.conf не найден"
fi

if [ -f /usr/local/bin/check_extra.sh ]; then
  echo "[OK] Скрипт проверки телефона/кабинета установлен"
else
  echo "[FAIL] Скрипт check_extra.sh не найден"
fi

if grep -q "check_extra.sh" /etc/pam.d/common-password; then
  echo "[OK] Скрипт подключен в PAM"
else
  echo "[FAIL] Скрипт не подключен в PAM"
fi
echo ""

# 1c. Проверка пользователя FranzLiszt
echo "=== 1c. Пользователь FranzLiszt ==="
if id "franzliszt" &>/dev/null; then
  echo "[OK] Пользователь franzliszt существует"
  echo "Домашняя директория: $(eval echo ~franzliszt)"
else
  echo "[FAIL] Пользователь franzliszt не найден"
fi

# Проверка настройки 6 попыток для franzliszt
if [ -f "/etc/security/faillock.d/franzliszt.conf" ]; then
  echo "[OK] Настройка 6 попыток для franzliszt:"
  cat /etc/security/faillock.d/franzliszt.conf
elif grep -q "franzliszt" /etc/security/faillock_global.conf 2>/dev/null; then
  echo "[OK] franzliszt добавлен в faillock_global.conf"
else
  echo "[WARN] Специальная настройка для franzliszt не найдена (возможно используется глобальная)"
fi
echo ""

# 1d. Проверка sudo доступа для FranzLiszt
echo "=== 1d. Sudo доступ для franzliszt с паролем ==="
if [ -f /etc/sudoers.d/franzliszt ]; then
  echo "[OK] Файл sudoers для franzliszt существует:"
  cat /etc/sudoers.d/franzliszt
else
  echo "[FAIL] Файл sudoers для franzliszt не найден"
fi
echo ""

# 2a. Проверка UFW
echo "=== 2. Настройка межсетевого экрана ==="
if command -v ufw &>/dev/null; then
  echo "[OK] UFW установлен"
  echo "Статус UFW:"
  ufw status | head -5
else
  echo "[FAIL] UFW не установлен"
fi

echo ""
echo "=== 2a.i Разрешение UDP портов 9000-9100 ==="
if ufw status | grep -q "9000:9100/udp.*ALLOW"; then
  echo "[OK] Порты 9000-9100/UDP разрешены"
  ufw status | grep "9000:9100"
else
  echo "[FAIL] Порты 9000-9100/UDP не разрешены"
fi

echo ""
echo "=== 2a.ii Профиль MyApp (Килейкин Андрей) ==="
if [ -f /etc/ufw/applications.d/myapp ]; then
  echo "[OK] Профиль MyApp создан"
  cat /etc/ufw/applications.d/myapp
  if ufw status | grep -q "MyApp.*ALLOW"; then
    echo "[OK] Профиль MyApp активирован"
  else
    echo "[WARN] Профиль MyApp создан, но не активирован"
  fi
else
  echo "[FAIL] Профиль MyApp не найден"
fi

echo ""
echo "=== 2a.iii Запрет порта 2333 ==="
if ufw status | grep -q "2333.*DENY"; then
  echo "[OK] Порт 2333 запрещен"
  ufw status | grep "2333"
else
  echo "[FAIL] Порт 2333 не запрещен"
fi

echo ""
echo "=== 3. Работа с пользователями ==="
echo "=== 3a. Пользователь testuser ==="
if id "testuser" &>/dev/null; then
  echo "[OK] Пользователь testuser существует"
else
  echo "[FAIL] Пользователь testuser не найден"
fi

echo ""
echo "=== 3a.i Максимальный уровень целостности ==="
if command -v pdpl-user &>/dev/null; then
  echo "Текущий уровень testuser:"
  pdpl-user -p testuser 2>/dev/null || echo "Не удалось определить уровень"
else
  echo "[WARN] pdpl-user не найден (возможно не Astra Linux)"
fi

echo ""
echo "=== 3a.ii Группа astra-admin ==="
if groups testuser | grep -q "astra-admin"; then
  echo "[OK] testuser в группе astra-admin"
else
  echo "[FAIL] testuser НЕ в группе astra-admin"
fi

echo ""
echo "=== 3a.iii Sudo без пароля только для journalctl ==="
if [ -f /etc/sudoers.d/testuser-journalctl ]; then
  echo "[OK] Файл sudoers для testuser существует:"
  cat /etc/sudoers.d/testuser-journalctl
else
  echo "[FAIL] Файл sudoers для testuser не найден"
fi

echo ""
echo "=========================================="
echo "ПРОВЕРКА ЗАВЕРШЕНА"
echo "=========================================="