Основы
Плагины
300 140

Практические рекомендации по защите сервера Apache для криптовалютного обменника

Apache — мощный и гибкий веб-сервер, но его стандартная конфигурация не предназначена для отражения целевых атак на финансовые сервисы. Установка скрипта обменника валют требует проактивного подхода к безопасности. Данное руководство содержит пошаговые инструкции по усилению защиты вашего Apache-сервера, чтобы минимизировать риски взлома и компрометации средств.

1. Базовая настройка и обновления

1.1. Актуальные версии

Используйте последние стабильные версии Apache и PHP. Устаревшее ПО — главный вектор атак.

# Для Ubuntu/Debian

sudo apt update && sudo apt upgrade apache2 libapache2-mod-php -y

# Для CentOS/RHEL

sudo yum update httpd mod_php -y

1.2. Скрытие информации о сервере

Скрывайте версии Apache и PHP в заголовках ответов, чтобы усложнить идентификацию для злоумышленников.

В основном файле конфигурации Apache (например, /etc/apache2/apache2.conf или /etc/httpd/conf/httpd.conf) добавьте:

ServerTokens Prod ServerSignature Off

Для скрытия версии PHP в заголовках создайте или отредактируйте файл /etc/php/*/apache2/php.ini (путь может отличаться):

expose_php = Off

1.3. Защита от информационного сбора

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

В конфигурации виртуального хоста (или в .htaccess в корне сайта) добавьте:

# Блокируем доступ ко всем скрытым файлам и директориям (начинающимся с точки)

Require all denied

# Блокируем доступ к конкретным чувствительным файлам

Require all denied

# Запрещаем просмотр содержимого директорий

Options -Indexes

# Блокируем выполнение скриптов в директориях с пользовательским контентом (например, загрузки)

Require all denied

2. Настройка SSL и безопасного соединения

2.1. Использование современных протоколов и шифров

Отключите устаревшие и небезопасные протоколы и шифры. Включите только TLS 1.2 и TLS 1.3.

В конфигурации SSL виртуального хоста (обычно в ) добавьте:

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1

SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384

SSLHonorCipherOrder on

SSLSessionTickets off

2.2. Обязательное перенаправление на HTTPS

Настройте перенаправление всего HTTP-трафика на защищенное соединение.

Добавьте отдельный виртуальный хост для порта 80:

ServerName your-exchange.com

ServerAlias www.your-exchange.com

# Перенаправление на HTTPS

Redirect permanent / https://your-exchange.com/

2.3. HTTP-заголовки безопасности

Добавьте критически важные security-заголовки для защиты от XSS, clickjacking и других атак.

Включите модуль headers и добавьте в конфигурацию виртуального хоста:

# Активация модуля (если не активен) sudo a2enmod headers # В конфигурации виртуального хоста:

Header always set X-XSS-Protection "1; mode=block"

Header always set X-Content-Type-Options "nosniff"

Header always set Referrer-Policy "strict-origin-when-cross-origin"

Header always set Content-Security-Policy "default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval';"

# Внимание! Тщательно настройте CSP под ваш скрипт.

3. Ограничение запросов и защита от DDoS

3.1. Ограничение частоты запросов с помощью mod_security и mod_evasive

Установите и настройте модули для защиты от брутфорса и DDoS.

mod_evasive (для базовой защиты от DDoS):

# Установка

# Для Ubuntu/Debian:

sudo apt install libapache2-mod-evasive

# Для CentOS/RHEL:

sudo yum install mod_evasive

# Настройка в /etc/apache2/mods-enabled/evasive.conf

DOSHashTableSize 3097

DOSPageCount 10

DOSSiteCount 100

DOSPageInterval 2

DOSSiteInterval 2

DOSBlockingPeriod 600

mod_security (WAF - Веб-прикладной брандмауэр):

# Установка

# Для Ubuntu/Debian:

sudo apt install libapache2-mod-security2

# Для CentOS/RHEL:

sudo yum install mod_security

Активируйте основные правила OWASP CRS для защиты от SQL-инъекций, XSS и других атак.

3.2. Ограничение размера и времени запроса

Защитите сервер от атак на исчерпание ресурсов.

LimitRequestBody 1048576 # Ограничение тела запроса до 1 МБ TimeOut 60 # Таймаут для запросов

4. Контроль доступа и файловая система

4.1. Минимальные привилегии для процесса Apache

Запускайте Apache под отдельным пользователем с минимальными правами (обычно www-data или apache).

Убедитесь в конфигурации (файл envvars или httpd.conf):

User www-data Group www-data

4.2. Настройка правильных прав доступа к файлам

Владелец файлов скрипта — ваш пользователь (например, deploy).

Права на файлы: 644, на директории: 755.

Пользователь Apache (www-data) должен иметь право только на чтение большинства файлов и запись только в конкретные директории (uploads, tmp, logs).

4.3. Блокировка доступа по IP к административной панели

Ограничьте доступ к админке только с доверенных IP-адресов.

Require ip 192.0.2.100 203.0.113.50

# Или, если используете аутентификацию:

# AuthType Basic

# AuthName "Restricted Area"

# AuthUserFile /etc/apache2/.htpasswd

# Require valid-user

5. Конфигурация PHP для безопасности

Поскольку большинство обменников написаны на PHP, его безопасность не менее важна.

5.1. Безопасные настройки php.ini

Отредактируйте файл php.ini, используемый Apache:

; Отключение опасных функций

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,show_source

; Ограничение доступа к файловой системе вне корня сайта

open_basedir = /var/www/your-exchange.com/:/tmp/

; Включение безопасного режима для обработки файлов

file_uploads = On

upload_max_filesize = 2M

max_file_uploads = 3

; Логирование ошибок (без вывода на экран)

display_errors = Off

log_errors = On

error_log = /var/log/php_errors.log

6. Мониторинг и логирование

6.1. Детальное логирование

Настройте расширенный формат логов в Apache для лучшего анализа.

LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %D" extended

CustomLog ${APACHE_LOG_DIR}/access.log extended

ErrorLog ${APACHE_LOG_DIR}/error.log

6.2. Регулярный анализ логов

Используйте fail2ban для автоматического блокирования IP по шаблонам атак в логах Apache. Пример конфигурации для fail2ban для блокировки при множественных ошибках 404 или попытках входа.

Чек-лист быстрой проверки

  • ServerTokens Prod и ServerSignature Off установлены.
  • expose_php = Off в php.ini.
  • Настроено перенаправление с HTTP на HTTPS.
  • Используются только TLS 1.2/1.3 и современные шифры.
  • Критические security-заголовки добавлены.
  • Доступ к чувствительным файлам (.env, .git, логам) запрещен.
  • Модуль mod_evasive и/или mod_security установлены и настроены.
  • Доступ к /admin ограничен по IP.
  • В php.ini отключены опасные функции и настроен open_basedir.
  • Права доступа к файлам сайта установлены правильно.

Заключение

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

Важно: После любых изменений в конфигурации Apache или PHP обязательно проверяйте их синтаксис и перезагружайте службу:

# Проверка синтаксиса Apache

sudo apache2ctl -t

# Перезагрузка Apache

sudo systemctl reload apache2

# Или для CentOS/RHEL

sudo httpd -t

sudo systemctl reload httpd

Регулярный аудит и обновления — залог поддержания высокого уровня безопасности вашего обменного сервиса.

Раздел: Безопасность
Вернуться к Wiki

Для улучшения работы сайта и его взаимодействия с пользователями мы используем файлы coоkie (узнать подробнее).

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