Налаштування сервера за 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.
  • У кабінеті на вкладці «Захист сервера» запустіть перевірку: вона покаже, чи не видно адресу сервера у відкритих записах.
  • Спробуйте відкрити сайт напряму за адресою сервера: після скрипта з’єднання не має встановлюватися.

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

Напишіть, на чому працює сайт, і ми підкажемо налаштування.