Код IT
← Каталог

Обеспечение безопасности — 2.1. Безопасная настройка ОС — принципы и практика

Фрагмент из «Обеспечение безопасности»: 2.1. Безопасная настройка ОС — принципы и практика.

bash infra-securityencyclopedia8-07-informatsionnaya-bezopasnost-2 embed URL статья в энциклопедии
Bash main.sh
#!/bin/bash
# validateconfig.sh — проверка целостности и конфигурации

ETALON_DIR="/opt/security/etalon"
REPORT="/var/log/security/audit_$(date +%F_%H%M).log"

log() { echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a "$REPORT"; }

log "=== Запуск аудита конфигурации ==="

# 1. Проверка хешей критичных файлов
log "Проверка контрольных сумм..."
diff <(sha256sum /etc/passwd /etc/shadow /bin/ls) "$ETALON_DIR/file_hashes.sha256" || log "ВНИМАНИЕ: несоответствие хешей"

# 2. Проверка списка пользователей
log "Проверка учётных записей..."
diff <(getent passwd | cut -d: -f1 | sort) "$ETALON_DIR/users.list" || log "ВНИМАНИЕ: несанкционированные пользователи"

# 3. Проверка открытых портов
log "Проверка сетевых портов..."
CURRENT_PORTS=$(ss -tuln | awk 'NR>1 {print $5}' | sort -u)
diff <(echo "$CURRENT_PORTS") "$ETALON_DIR/ports.list" || log "ВНИМАНИЕ: неожиданные открытые порты"

# 4. Проверка установленных пакетов (белый список)
log "Проверка ПО..."
INSTALLED=$(dpkg-query -W -f='${Package}\n' | sort)
diff <(comm -13 "$ETALON_DIR/whitelist.txt" <(echo "$INSTALLED"))) /dev/null || \
  log "ВНИМАНИЕ: обнаружено ПО вне белого списка: $(comm -13 "$ETALON_DIR/whitelist.txt" <(echo "$INSTALLED"))"

log "=== Аудит завершён ==="
#!/bin/bash
# validateconfig.sh — проверка целостности и конфигурации

ETALON_DIR="/opt/security/etalon"
REPORT="/var/log/security/audit_$(date +%F_%H%M).log"

log() { echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a "$REPORT"; }

log "=== Запуск аудита конфигурации ==="

# 1. Проверка хешей критичных файлов
log "Проверка контрольных сумм..."
diff <(sha256sum /etc/passwd /etc/shadow /bin/ls) "$ETALON_DIR/file_hashes.sha256" || log "ВНИМАНИЕ: несоответствие хешей"

# 2. Проверка списка пользователей
log "Проверка учётных записей..."
diff <(getent passwd | cut -d: -f1 | sort) "$ETALON_DIR/users.list" || log "ВНИМАНИЕ: несанкционированные пользователи"

# 3. Проверка открытых портов
log "Проверка сетевых портов..."
CURRENT_PORTS=$(ss -tuln | awk 'NR>1 {print $5}' | sort -u)
diff <(echo "$CURRENT_PORTS") "$ETALON_DIR/ports.list" || log "ВНИМАНИЕ: неожиданные открытые порты"

# 4. Проверка установленных пакетов (белый список)
log "Проверка ПО..."
INSTALLED=$(dpkg-query -W -f='${Package}\n' | sort)
diff <(comm -13 "$ETALON_DIR/whitelist.txt" <(echo "$INSTALLED"))) /dev/null || \
  log "ВНИМАНИЕ: обнаружено ПО вне белого списка: $(comm -13 "$ETALON_DIR/whitelist.txt" <(echo "$INSTALLED"))"

log "=== Аудит завершён ==="