mirror of
https://github.com/3proxy/3proxy.git
synced 2025-04-04 19:53:12 +08:00
tlspr (SNI proxy) documented
This commit is contained in:
parent
6387bed4f2
commit
878025598b
@ -32,6 +32,7 @@
|
||||
<li><a href="#BIND">How to bind service to specific interface or port</a>
|
||||
<li><a href="#NAMES">How to resolve names through a parent proxy</a></li>
|
||||
<li><a href="#ISFTP">How to setup FTP proxy</a></li>
|
||||
<li><a href="#TLSPR">How to setup SNI proxy (tlspr)</a></li>
|
||||
<li><A HREF="#AUTH">How to limit service access</A>
|
||||
<li><A HREF="#USERS">How to create user list</A>
|
||||
<li><A HREF="#ACL">How to limit user access to resources</A>
|
||||
@ -478,6 +479,37 @@ proxy -p8080 -i192.168.2.1
|
||||
(what is called FTP proxy in file managers and FTP clients). For browsers, there is no need to start additional
|
||||
proxy service, 'proxy' supports FTP over HTTP, configure 'proxy' port as an FTP proxy. For ftp clients and file
|
||||
managers use ftppr. FTP proxy supports both active and passive mode with client, but always use passive mode with FTP servers.
|
||||
</p>
|
||||
<li><a name="TLSPR"><i>How to setup SNI proxy (tlspr)</i></a></li>
|
||||
<p>
|
||||
SNI proxy can be used to transparently redirect any TLS traffic with external router or local redirection rules. It can also be used
|
||||
to extract hostnames from TLS to use in ACLs in combination with SOCKS or HTTP(s) proxy and/or Transparent plugin. It can also be used to require TLS or mTLS between services. TLS hadshake contains no
|
||||
port information, if tlspr is used as a standalone service, destination port may be either detected with Transparent plugin or configured with -P option (default 443).
|
||||
</p><p>
|
||||
-c option is used to specify level of TLS check:
|
||||
</p><pre>
|
||||
0 (default) - allow non-TLS traffic
|
||||
1 - require TLS, only check client HELLO packet
|
||||
2 - require TLS, check both client and server HELLO
|
||||
3 - require TLS, check server send certificate (not compatible with TLS 1.3)
|
||||
4 - require mutual TLS, check server send certificate request and client sends certificate (not compatible with TLS 1.3)
|
||||
</pre>
|
||||
<p>
|
||||
configuration examples:
|
||||
1. port 1443 may be used to redirect traffic to destination port 143). SNI is used to find destination host
|
||||
<pre>
|
||||
tlspr -p1443 -P443 -c1
|
||||
</pre>
|
||||
2. used as parent tls to detect destination hostname from TLS in socks
|
||||
<pre>
|
||||
allow * * * 80
|
||||
parent 1000 http 0.0.0.0 0
|
||||
allow * * * * CONNECT
|
||||
parent 1000 tls 0.0.0.0 0
|
||||
deny * * some.not.allowed.host
|
||||
allow *
|
||||
socks
|
||||
</pre>
|
||||
</p>
|
||||
<li><A NAME="AUTH">How to limit service access</A>
|
||||
<p>
|
||||
|
@ -33,6 +33,7 @@
|
||||
<li><a href="#BIND">Как повесить службу на определенный интерфейс или порт</a>
|
||||
<li><a href="#NAMES">Как разрешать имена на родительском прокси?</a></li>
|
||||
<li><a href="#ISFTP">Как настроить FTP прокси?</a></li>
|
||||
<li><a href="#TLSPR">Как настроить SNI proxy (tlspr)</a></li>
|
||||
<li><a href="#AUTH">Как ограничить доступ к службе</a>
|
||||
<li><a href="#USERS">Как создать список пользователей</a>
|
||||
<li><a href="#ACL">Как ограничить доступ пользователей к ресурсам</a>
|
||||
@ -508,6 +509,41 @@
|
||||
через http прокси, дополнительного прокси поднимать не надо. Для FTP-клиентов необходимо поднять ftppr. FTP прокси всегда работает
|
||||
с FTP сервером в пассивном режиме.
|
||||
</p>
|
||||
<li><a name="TLSPR"><i>Как настроить SNI proxy (tlspr)</i></a></li>
|
||||
<p>
|
||||
|
||||
SNI proxy может быть использовать для транспарентного перенаправления любого TLS трафика (например HTTPS) на внешнем маршрутизаторе
|
||||
или локальными правилами. Так же можно использовать его для извлечения имени хоста из TLS хендшейка с целью логгирования или использования в ACL.
|
||||
Еще одна задача которую может решать модуль - требование наличия TLS или mTLS (mutual TLS).
|
||||
Если tlspr используется как отдельный сервис без исползования плагина Transparent, то необходимо задать порт назначения через опцию -T (по умолчанию 443),
|
||||
т.к. TLS хендшейк не содержит информации о порте назначения.
|
||||
</p><p>
|
||||
-c контролирует уровень требования к TLS:
|
||||
</p><pre>
|
||||
0 (по умолчанию) - пропустить трафик без TLS
|
||||
1 - требовать TLS, проверять наличие client HELLO
|
||||
2 - требовать TLS, проверять наличие client и server HELLO
|
||||
3 - требовать TLS, проверять наличие серверного сертификата (не совместим с TLS 1.3+)
|
||||
4 - требовать взаимный (mutual) TLS, проверять что сервер запрашивает сертификат и клиент его отправляет (не совместим с TLS 1.3+)
|
||||
</pre>
|
||||
<p>
|
||||
примеры конфигурации:
|
||||
1. Порт 1443 можно использовать для перенаправления в него HTTPS трафика по порту 443 (например с внешнего маршрутизатора)
|
||||
<pre>
|
||||
tlspr -p1443 -P443 -c1
|
||||
</pre>
|
||||
2. tlspr используется как родительский прокси в SOCKS чтобы обнаруживать реальный hostname назначения (даже если запрашивается подклюение по IP адресу)
|
||||
<pre>
|
||||
allow * * * 80
|
||||
parent 1000 http 0.0.0.0 0
|
||||
allow * * * * CONNECT
|
||||
parent 1000 tls 0.0.0.0 0
|
||||
deny * * some.not.allowed.host
|
||||
allow *
|
||||
socks
|
||||
</pre>
|
||||
</p>
|
||||
|
||||
<li><a name="AUTH"><i>Как ограничить доступ к службе</i></a>
|
||||
<p>
|
||||
Во-первых, для ограничения доступа необходимо указать внутренний интерфейс,
|
||||
|
@ -80,9 +80,18 @@ HTTP/HTTPS proxy (default port 3128)
|
||||
.B socks
|
||||
SOCKS 4/4.5/5 proxy (default port 1080)
|
||||
.br
|
||||
.B tlspr
|
||||
SNI proxy (destination address is taken from TLS handshake), may be used to redirect any TLS-based traffic
|
||||
.br
|
||||
.B auto
|
||||
Proxy with protocol autoselection between proxy / socks / tlspr
|
||||
.br
|
||||
.B pop3p
|
||||
POP3 proxy (default port 110)
|
||||
.br
|
||||
.B smtpp
|
||||
SMTP proxy (default port 25)
|
||||
.br
|
||||
.B ftppr
|
||||
FTP proxy (default port 21)
|
||||
.br
|
||||
|
86
man/tlspr.8
Normal file
86
man/tlspr.8
Normal file
@ -0,0 +1,86 @@
|
||||
.TH tlspr "8" "May 2024" "3proxy 0.9" "Universal proxy server"
|
||||
.SH NAME
|
||||
.B tlspr
|
||||
\- SNI proxy gateway service
|
||||
.SH SYNOPSIS
|
||||
.BR "tlspr " [ -d ][ -a ]
|
||||
.IB \fR[ -l \fR[ \fR[ @ \fR] logfile \fR]]
|
||||
.IB \fR[ -p listening_port\fR]
|
||||
.IB \fR[ -P destination_port\fR]
|
||||
.IB \fR[ -c tls_check_level\fR]
|
||||
.IB \fR[ -i internal_ip\fR]
|
||||
.IB \fR[ -e external_ip\fR]
|
||||
.SH DESCRIPTION
|
||||
.B proxy
|
||||
is SNI gateway service (destination host is taken from TLS handshake). Destination port must be specified via -P option (or it may be detected with Transparent plugin).
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B -I
|
||||
Inetd mode. Standalone service only.
|
||||
.TP
|
||||
.B -d
|
||||
Daemonise. Detach service from console and run in the background.
|
||||
.TP
|
||||
.B -t
|
||||
Be silenT. Do not log start/stop/accept error records.
|
||||
.TP
|
||||
.B -u
|
||||
Never ask for username authentication
|
||||
.TP
|
||||
.B -e
|
||||
External address. IP address of interface proxy should initiate connections
|
||||
from.
|
||||
By default system will deside which address to use in accordance
|
||||
with routing table.
|
||||
.TP
|
||||
.B -i
|
||||
Internal address. IP address proxy accepts connections to.
|
||||
By default connection to any interface is accepted. It\'s usually unsafe.
|
||||
.TP
|
||||
.B -a
|
||||
Anonymous. Hide information about client.
|
||||
.TP
|
||||
.B -a1
|
||||
Anonymous. Show fake information about client.
|
||||
.TP
|
||||
.B -p
|
||||
listening_port. Port proxy listens for incoming connections. Default is 1443.
|
||||
.TP
|
||||
.B -P
|
||||
destination_port. Port to establish outgoing connections. One is required unless Transparent plugin is not used because TLS handshake does not contain port information. Default is 443.
|
||||
.TP
|
||||
.B -c
|
||||
TLS_CHECK_LEVEL. 0 (default) - allow non-TLS traffic to pass, 1 - require TLS, only check client HELLO packet, 2 - require TLS, check both client and server HELLO, 3 - require TLS, check server send certificate (not compatible with TLS 1.3), 4 - require mutual TLS, check server send certificate request and client sends certificate (not compatible with TLS 1.3)
|
||||
.TP
|
||||
.B -l
|
||||
Log. By default logging is to stdout. If
|
||||
.I logfile
|
||||
is specified logging is to file. Under Unix, if
|
||||
.RI \' @ \'
|
||||
preceeds
|
||||
.IR logfile ,
|
||||
syslog is used for logging.
|
||||
.TP
|
||||
.B -S
|
||||
Increase or decrease stack size. You may want to try something like -S8192 if you experience 3proxy
|
||||
crashes.
|
||||
.SH CLIENTS
|
||||
You should use client with HTTP proxy support or configure router to redirect
|
||||
HTTP traffic to proxy (transparent proxy). Configure client to connect to
|
||||
.I internal_ip
|
||||
and
|
||||
.IR port .
|
||||
HTTPS support allows to use almost any TCP based protocol. If you need to
|
||||
limit clients, use
|
||||
.BR 3proxy (8)
|
||||
instead.
|
||||
.SH BUGS
|
||||
Report all bugs to
|
||||
.BR 3proxy@3proxy.org
|
||||
.SH SEE ALSO
|
||||
3proxy(8), ftppr(8), proxy(8), socks(8), pop3p(8), smtpp(8), tcppm(8), udppm(8), syslogd(8),
|
||||
.br
|
||||
https://3proxy.org/
|
||||
.SH AUTHORS
|
||||
3proxy is designed by Vladimir 3APA3A Dubrovin
|
||||
.RI ( 3proxy@3proxy.org )
|
Loading…
Reference in New Issue
Block a user