Настройка сервера за AegisX

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

Для любого сайта

IP посетителя

AegisX передаёт его в заголовках X-Real-IP и X-Forwarded-For. Без настройки ниже сервер видит в логах адреса AegisX, а не посетителей.

HTTPS

Посетители всегда приходят по HTTPS. Если сервер подключён по http://, AegisX добавляет заголовок X-Forwarded-Proto: https, по нему сайт понимает, что соединение защищено. Надёжнее подключить сервер по https://.

Закрыть сервер

Пока сервер отвечает всем, атаковать можно в обход защиты. Скрипт для nftables, iptables или ufw есть в кабинете: Сайты → сайт → Защита сервера. Он сам обновляет список адресов AegisX.

Сертификат AegisX

На той же вкладке есть корневой сертификат AegisX. С ним сервер принимает HTTPS-подключения только от AegisX и только для своего сайта.

Адреса AegisX всегда доступны по ссылке: my.aegisx.network/api/public/edge-ips

Адреса меняются, когда мы добавляем серверы. Обновляйте файл раз в день, например через cron.

nginx

Настоящий IP посетителя в $remote_addr, логах и приложении. Модуль realip обычно уже есть в nginx.

curl -fsS https://my.aegisx.network/api/public/edge-ips | sed 's/.*/set_real_ip_from &;/' > /tmp/aegisx-realip.conf \
  && echo 'real_ip_header X-Real-IP;' >> /tmp/aegisx-realip.conf \
  && sudo mv /tmp/aegisx-realip.conf /etc/nginx/conf.d/aegisx-realip.conf \
  && sudo nginx -t && sudo systemctl reload nginx

Принимать только подключения AegisX к этому сайту (в блоке server с listen 443):

ssl_client_certificate /etc/nginx/aegisx-origin-pull-ca.pem;
ssl_verify_client on;
if ($ssl_client_s_dn !~ "CN=example.com(,|$)") { return 403; }

Apache

Модуль remoteip подставляет настоящий IP посетителя. В формате логов используйте %a вместо %h.

sudo a2enmod remoteip
{ echo 'RemoteIPHeader X-Real-IP'; curl -fsS https://my.aegisx.network/api/public/edge-ips | sed 's/^/RemoteIPTrustedProxy /'; } > /tmp/aegisx-remoteip.conf \
  && sudo mv /tmp/aegisx-remoteip.conf /etc/apache2/conf-available/aegisx-remoteip.conf \
  && sudo a2enconf aegisx-remoteip && sudo apachectl configtest && sudo systemctl reload apache2

Принимать только подключения AegisX к этому сайту (в VirtualHost на 443 порту):

SSLCACertificateFile /etc/ssl/aegisx-origin-pull-ca.pem
SSLVerifyClient require
SSLVerifyDepth 1
<If "%{SSL_CLIENT_S_DN_CN} != 'example.com'">
    Require all denied
</If>

WordPress

Настоящий IP

Настройте nginx или Apache, как выше. Плагинам безопасности и комментариям ничего менять не нужно.

HTTPS без петли редиректов

Если сервер подключён по http://, добавьте строки ниже в wp-config.php перед строкой «That’s all, stop editing».

WP-Cron и проверка состояния

WordPress обращается к своему же сайту с вашего сервера. Добавьте адрес сервера в разрешённые: Правила → Доступ по IP.

Оплаты WooCommerce

Stripe, LiqPay и YooKassa включаются готовыми исключениями на вкладке «Боты». Для других платёжных модулей добавьте их путь уведомлений, обычно /wc-api/.

Вход и xmlrpc.php

Для /wp-login.php задайте отдельный лимит, например 5 POST-запросов в минуту: сайт → Настройки → «Правила путей». Если не пользуетесь приложением WordPress и Jetpack, закройте /xmlrpc.php: Правила → Фильтры путей.

REST API

/wp-json/ выносите из проверки браузера, только если к нему обращаются внешние приложения.

wp-config.php

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

1С-Битрикс

Настоящий IP

В BitrixVM перед Apache стоит nginx: настройте его, как выше. Apache получит адрес от nginx.

HTTPS

Если сервер подключён по http://, добавьте строки ниже в /bitrix/php_interface/dbconn.php.

Оплаты

Платёжные системы присылают уведомления на /bitrix/tools/sale_ps_result.php. Добавьте этот путь в исключения на вкладке «Боты».

Обмен с 1С

1С подключается к /bitrix/admin/1c_exchange.php. Добавьте адрес компьютера или сервера с 1С в разрешённые: Правила → Доступ по IP.

Административный раздел

Если закрываете /bitrix/admin/ по адресам, не забудьте про адрес 1С: обмен идёт через этот же раздел.

/bitrix/php_interface/dbconn.php

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

Laravel

Доверенные прокси

Laravel берёт IP посетителя и HTTPS из заголовков только от доверенных прокси. Укажите адреса AegisX, как ниже.

Вебхуки

Маршруты для вебхуков (например /webhooks/) добавьте в исключения на вкладке «Боты»: платёжные системы и сервисы не проходят проверку браузера.

API для приложений

Путь /api/ тоже вынесите из проверки браузера, а лимиты и проверку токенов настройте на вкладке «API».

Laravel 11 и новее, bootstrap/app.php:

->withMiddleware(function (Middleware $middleware) {
    $middleware->trustProxies(at: [
        '203.0.113.10',
        '198.51.100.20',
    ]);
})

Laravel 10, app/Http/Middleware/TrustProxies.php:

protected $proxies = [
    '203.0.113.10',
    '198.51.100.20',
];

Если сервер закрыт скриптом для всех, кроме AegisX, вместо списка можно указать '*': тогда его не нужно обновлять.

Как проверить

  • Откройте сайт и найдите свой запрос в логе сервера: там должен быть ваш адрес, а не адрес AegisX.
  • В кабинете на вкладке «Защита сервера» запустите проверку: она покажет, не виден ли адрес сервера в открытых записях.
  • Попробуйте открыть сайт напрямую по адресу сервера: после скрипта подключение не должно устанавливаться.

Не нашли свою платформу?

Напишите, на чём работает сайт, и мы подскажем настройки.