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

Полное руководство по настройке системы безопасности для Bitrix на CentOS 9

Полное руководство по настройке системы безопасности для Bitrix на CentOS 9

Комплексная защита веб-сервера с многослойной системой безопасности


📋 Содержание


🎯 Введение

Данное руководство поможет вам создать профессиональную систему безопасности для сервера с Bitrix CMS на CentOS 9. Мы настроим многослойную защиту, включающую:

  • fail2ban - защита от брутфорс атак

  • ClamAV - антивирусное сканирование

  • rkhunter - поиск руткитов

  • chkrootkit - дополнительная проверка руткитов

  • AIDE - контроль целостности файлов

  • maldet - поиск веб-малвари

  • lynis - аудит безопасности системы

🎯 Результат

После выполнения инструкции вы получите:

  • ✅ Автоматическую блокировку атакующих IP

  • ✅ Регулярное сканирование на вирусы и малварь

  • ✅ Мониторинг изменений критических файлов

  • ✅ Удобный центр управления безопасностью

  • ✅ Автоматические отчеты и уведомления


🔧 Подготовка системы

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

# Обновляем систему до последней версии
dnf update -y

# Устанавливаем необходимые репозитории
dnf install -y epel-release
dnf config-manager --set-enabled crb

# Устанавливаем базовые инструменты
dnf install -y wget curl git vim htop net-tools lsof bc

Настройка базовой безопасности

# Настраиваем SSH (если еще не настроен)
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd

# Настраиваем firewall
systemctl enable --now firewalld
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

🛡️ Установка компонентов безопасности

Установка всех компонентов одной командой

#!/bin/bash
echo "=== УСТАНОВКА СИСТЕМЫ БЕЗОПАСНОСТИ ==="

# Устанавливаем основные компоненты
dnf install -y fail2ban clamav clamav-update clamd clamav-freshclam \
               rkhunter chkrootkit aide maldet lynis

# Проверяем успешность установки
echo "Проверка установленных пакетов:"
for package in fail2ban clamav rkhunter chkrootkit aide maldet lynis; do
    if rpm -q $package &>/dev/null; then
        echo "✅ $package установлен"
    else
        echo "❌ $package НЕ установлен"
    fi
done

🚫 Настройка fail2ban

Создание конфигурации fail2ban

# Создаем локальную конфигурацию
cat > /etc/fail2ban/jail.local << 'EOF'
[DEFAULT]
# Время блокировки (в секундах)
bantime = 3600

# Время окна для подсчета попыток
findtime = 600

# Максимальное количество попыток
maxretry = 3

# Игнорируемые IP (добавьте свои доверенные IP)
ignoreip = 127.0.0.1/8 ::1

# Действие при блокировке
banaction = iptables-multiport
banaction_allports = iptables-allports

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 3

[nginx-limit-req]
enabled = true
filter = nginx-limit-req
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 3

[apache-auth]
enabled = true
filter = apache-auth
port = http,https
logpath = /var/log/httpd/error_log
maxretry = 3

[apache-badbots]
enabled = true
filter = apache-badbots
port = http,https
logpath = /var/log/httpd/access_log
maxretry = 2
EOF

# Создаем фильтр для Apache аутентификации
cat > /etc/fail2ban/filter.d/apache-auth.conf << 'EOF'
[Definition]
failregex = ^%(__prefix_line)s\[client <HOST>:.*\] (AH01617: )?user .* authentication failure
            ^%(__prefix_line)s\[client <HOST>:.*\] (AH01618: )?user .* not found
            ^%(__prefix_line)s\[client <HOST>:.*\] (AH01630: )?client denied by server configuration

ignoreregex =

[Init]
__prefix_line = \[[^]]*\]
EOF

# Создаем фильтр для плохих ботов
cat > /etc/fail2ban/filter.d/apache-badbots.conf << 'EOF'
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*HTTP.*" (404|403) .*$

ignoreregex =
EOF

# Запускаем и включаем fail2ban
systemctl enable --now fail2ban

echo "✅ fail2ban настроен и запущен"

🦠 Настройка ClamAV

Конфигурация ClamAV

#!/bin/bash
echo "=== НАСТРОЙКА CLAMAV ==="

# Останавливаем службы для настройки
systemctl stop clamd@scan clamav-freshclam

# Настраиваем freshclam
cat > /etc/freshclam.conf << 'EOF'
DatabaseDirectory /var/lib/clamav
UpdateLogFile /var/log/freshclam.log
LogFileMaxSize 2M
LogTime yes
LogSyslog yes
PidFile /var/run/freshclam.pid
DatabaseOwner clamav
DNSDatabaseInfo current.cvd.clamav.net
DatabaseMirror database.clamav.net
MaxAttempts 3
ScriptedUpdates yes
CompressLocalDatabase no
Bytecode yes
NotifyClamd /etc/clamd.d/scan.conf
EOF

# Настраиваем clamd
cp /etc/clamd.d/scan.conf /etc/clamd.d/scan.conf.backup

cat > /etc/clamd.d/scan.conf << 'EOF'
LogFile /var/log/clamd.log
LogFileMaxSize 2M
LogTime yes
LogSyslog yes
PidFile /var/run/clamd.scan/clamd.pid
LocalSocket /var/run/clamd.scan/clamd.sock
LocalSocketGroup clamav
LocalSocketMode 666
User clamav
ScanMail yes
ScanArchive yes
ArchiveBlockEncrypted no
MaxDirectoryRecursion 15
FollowDirectorySymlinks no
FollowFileSymlinks no
ReadTimeout 180
MaxThreads 12
MaxConnectionQueueLength 15
LogSyslog yes
LogRotate yes
TemporaryDirectory /var/tmp
DatabaseDirectory /var/lib/clamav
OfficialDatabaseOnly no
SelfCheck 3600
Foreground no
Debug no
ScanPE yes
MaxEmbeddedPE 10M
ScanOLE2 yes
ScanPDF yes
ScanHTML yes
MaxHTMLNormalize 10M
MaxHTMLNoTags 2M
MaxScriptNormalize 5M
MaxZipTypeRcg 1M
ScanSWF yes
ExitOnOOM no
LeaveTemporaryFiles no
AlgorithmicDetection yes
ScanELF yes
IdleTimeout 30
CrossFilesystems yes
PhishingSignatures yes
PhishingScanURLs yes
PhishingAlwaysBlockSSLMismatch no
PhishingAlwaysBlockCloak no
PartitionIntersection no
DetectPUA no
ScanPartialMessages no
HeuristicScanPrecedence no
StructuredDataDetection no
CommandReadTimeout 30
SendBufTimeout 200
MaxQueue 100
ExtendedDetectionInfo yes
OLE2BlockMacros no
AllowAllMatchScan yes
ForceToDisk no
DisableCertCheck no
DisableCache no
MaxScanTime 120000
MaxScanSize 100M
MaxFileSize 25M
MaxRecursion 16
MaxFiles 10000
MaxPartitions 50
MaxIconsPE 100
PCREMatchLimit 10000
PCRERecMatchLimit 5000
PCREMaxFileSize 25M
ScanXMLDOCS yes
ScanHWP3 yes
MaxRecHWP3 16
StreamMaxLength 25M
LogClean no
ScanOnAccess no
OnAccessMaxFileSize 5M
OnAccessIncludePath /home
OnAccessExcludePath /var
OnAccessExcludeRootUID no
OnAccessExcludeUID -1
OnAccessMaxThreads 5
OnAccessCurlTimeout 5000
OnAccessMaxDirectoryRecursion 15
OnAccessFollowDirectorySymlinks no
OnAccessFollowFileSymlinks no
EOF

# Создаем необходимые директории и устанавливаем права
mkdir -p /var/run/clamd.scan
chown clamav:clamav /var/run/clamd.scan
chown clamav:clamav /var/lib/clamav
chown clamav:clamav /var/log/freshclam.log 2>/dev/null || touch /var/log/freshclam.log && chown clamav:clamav /var/log/freshclam.log

# Обновляем базы данных
echo "Обновление баз данных ClamAV..."
sudo -u clamav freshclam

# Запускаем службы
systemctl enable --now clamd@scan
systemctl enable --now clamav-freshclam

# Проверяем статус
if systemctl is-active --quiet clamd@scan && systemctl is-active --quiet clamav-freshclam; then
    echo "✅ ClamAV успешно настроен и запущен"
else
    echo "⚠️ Проблемы с запуском ClamAV, проверьте логи"
fi

# Тестируем работу
echo "Тестирование ClamAV..."
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANT

```bash
#!/bin/bash
echo "=== УСТАНОВКА AIDE ==="

# Устанавливаем AIDE
dnf install -y aide

# Инициализируем базу данных AIDE
aide --init

# Перемещаем базу данных в нужное место
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

# Настраиваем автоматическую проверку
echo "0 4 * * * root /usr/bin/aide --check" >> /etc/crontab

echo "✅ AIDE успешно настроен"

🦠 Настройка maldet

Установка и настройка maldet

#!/bin/bash
echo "=== УСТАНОВКА MALDET ==="

# Устанавливаем maldet
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
tar -xzf maldetect-current.tar.gz
cd maldetect-*
./install.sh

# Настраиваем maldet
sed -i 's/^email_alert=0/email_alert=1/' /usr/local/maldetect/conf.maldet
sed -i 's/^email=""/email="your_email@example.com"/' /usr/local/maldetect/conf.maldet

# Запускаем maldet для первой проверки
maldet -a /

echo "✅ maldet успешно настроен"

🔍 Настройка lynis

Установка и запуск lynis

#!/bin/bash
echo "=== УСТАНОВКА LYNIS ==="

# Устанавливаем lynis
dnf install -y lynis

# Запускаем аудит безопасности
lynis audit system

echo "✅ lynis успешно установлен и выполнен аудит"

📊 Создание центра управления

Установка и настройка центра управления

#!/bin/bash
echo "=== УСТАНОВКА ЦЕНТРА УПРАВЛЕНИЯ ==="

# Устанавливаем необходимые инструменты
dnf install -y php php-cli php-mbstring php-xml

# Создаем скрипт для центра управления
cat > /var/www/html/security_center.php << 'EOF'
<?php
echo "
# Центр управления безопасностью
";
echo "
## Статус служб:
";
echo "";
echo shell_exec("systemctl status fail2ban");
echo shell_exec("systemctl status clamd@scan");
echo shell_exec("systemctl status clamav-freshclam");
echo shell_exec("systemctl status rkhunter");
echo shell_exec("systemctl status aide");
echo shell_exec("systemctl status maldet");
echo shell_exec("systemctl status lynis");
echo "</pre>";
?>
EOF

# Настраиваем права доступа
chown apache:apache /var/www/html/security_center.php
chmod 755 /var/www/html/security_center.php

echo "✅ Центр управления успешно создан"

📅 Автоматизация и мониторинг

Настройка автоматизации

#!/bin/bash
echo "=== НАСТРОЙКА АВТОМАТИЗАЦИИ ==="

# Создаем cron задачи для регулярных проверок
echo "0 2 * * * root /usr/bin/rkhunter --check" >> /etc/crontab
echo "0 3 * * * root /usr/bin/aide --check" >> /etc/crontab
echo "0 4 * * * root /usr/local/maldetect/maldet -a /" >> /etc/crontab

echo "✅ Автоматизация настроена"

⚠️ Устранение типичных проблем

Общие ошибки и их решения

# Проверка статуса служб
systemctl status fail2ban
systemctl status clamd@scan
systemctl status clamav-freshclam
systemctl status rkhunter
systemctl status aide
systemctl status maldet
systemctl status lynis

# Логи для диагностики
tail -f /var/log/fail2ban.log
tail -f /var/log/clamd.log
tail -f /var/log/rkhunter/rkhunter.log
tail -f /var/log/aide/aide.log
tail -f /var/log/maldet.log

🏁 Заключение

Следуя данному руководству, вы сможете настроить надежную систему безопасности для вашего сервера с Bitrix на CentOS 9. Регулярные проверки и мониторинг помогут вам поддерживать высокий уровень безопасности и защищенности вашего проекта.