Почему лучше не использовать dest за CDN в XTLS-Reality

12 окт. 2024 г. в Заметки

REALITY — усовершенствованный форк TLS; реализует полный TLS 1.3 с определенным SNI веб-сайта для маскировки, при этом сохраняя внешний вид трафика, аналогичный обычному TLS 1.3.

REALITY по умолчанию пересылает все SNI, dest (target) используется только для определения назначения. Это происходит потому, что блокировка определенных SNI для пересылки уже сама по себе является характерной особенностью. А как мы знаем, цель маскировки — спрятать дерево в лесу.

Например:

curl --connect-to ::www.speedtest.net: https://www.cloudflare.com -I

Соединяемся с IP-адресом speedtest.net, но отправляем SNI cloudflare.com. В результате откроется cloudflare.com.

REALITY с dest=www.speedtest.net или любым dest за CDN ведет себя аналогично.

Что делать

1.

Не использовать сайт за CDN в качестве маскировочного.

2.

Поставить перед xray-core любой прокси типа nginx или haproxy и ввести белый список SNI, чтобы предотвратить злоупотребление и риск поведения, отличающегося от dest.

stream {
    map $ssl_preread_server_name $backend {
        super-site.com reality;
        default 127.0.0.1:9999;
    }
 
    upstream reality {
        server 127.0.0.1:14000;
    }
 
    server {
        listen          443 reuseport so_keepalive=on;
        ssl_preread     on;
        proxy_pass      $backend;
        proxy_protocol  on;
    }
}

3.

Надеяться, что ваш сервер не найдут и не начнут гонять через него терабайты трафика.