当前位置:Linux教程 - Linux - socks5 daemon 的配置文件

socks5 daemon 的配置文件

Socks5.conf – socks5 daemon 的配置文件

SYNOPSIS
Socks5 daemon通常从/etc/socks5.conf读配置文件。但如果你编译socks5时用了 –with-srvconffile=filename参数,你可以改变文件目录。如果系统是FreeBSD,配置文件缺省是/usr/local/etc/socks5.conf。

DESCRIPTION
Socks5 daemon 启动时或收到一个HUP信号时,都读此配置文件。配置文件保存以下信息:
- 连接地址的接口。
- 什么情况下服务器直接连接到一个地址。
- 什么情况下服务器使用另一个代理服务器。
- 请求一个代理连接的必要要求。
配置文件分成六部分:
- ban host
- authentication
- interfaces
- variables and flags
- proxies
- access control

在每部分中,socks5 daemon 顺序的读每一行,直到遇到了匹配行。各部分的顺序和各部分中行的顺序是非常重要的。一行中的每个条目都必须匹配。

BAN HOST ENTRIES
Ban host entries 使用如下语法识别socks5 daemon 不允许连接的主机:
ban source-host source-port
ban 不允许授权。
source-host 必须是一个有效的hostpattern。
source-port 必须是一个有效的portpattern。
socks5 daemon 拒绝从source-host 的source-port发起的连接。

AUTHENTICATION ENTRIES
Authentication entries 确定socks5 daemon的身份验证方式。使用如下语法:
auth source-host source-port auth-methods
auth 指出此条目是一条身份验证条目。
source-host 必须是一个有效的hostpattern。
source-port 必须是一个有效的portpattern。
auth-methods 必须是一种有效的authpattern。
socks5 daemon 使用auth-methods 验证source-host 的 source-port 的连接请求。

配置文件没有auth项时,任何身份认证都可以工作。忽略auth项等效于指定认 证方式为auth – (任意认证方式)。如果使用auth项,不匹配的客户将被拒绝。
Socks5 daemon 不要求身份认证时,它收不到用户信息,除非socks5配置为要求ident 响应。使用SOCKS5_DEMAND_IDENT环境变量要求ident响应。请参考socks5(1)得到完全的socks5环境变量的列表。
如果socks5 daemon 要使用Username/Password身份认证,并且有socks4客户要使用此服务器,设置授权顺序为n,u。对于socks5的客户端,socks5 daemon 先使用 Username/Password 身份认证。
Socks5 daemon 以逆序检查auth-methods子段。从最后一个auth-method开始。

INTERFACE ENTRIES
如果一台机器有多个接口,多个IP地址,多数情况下,管理员使socks5使用特定的接口和特定的地址。通过指定内部主机使用向内的接口,外部主机使用向外的接口,可以防止外部主机冒充内部主机。同时要求socks5决定当接受一个bind或发送一个sendto时,使用哪一个接口去bind。当socks5在配置文件中没有发现匹配项时,它使用INADDR_ANY 去bind,这意味着在任意接口接受连接。Single-homed(单宿)主机不要求interface项。只有多接口主机才要求有interface项。interface 项使用如下格式:

interface hostpattern portpattern interface-address
I
interface 标志一个interface项
hostpattern 指定可以连接的源或目标主机
portpattern 指定可以连接的源或目标端口
interface-address 标志IP地址或接口名,例如:eth0

interface项代替以前版本的route项。当前版本两者等价。在将来的版本,route项将不被支持。

VARIABLE ENTRIES

variables 和 flags 控制系统纪录文件的数量和类型。语法如下:
set variable value
set 指定内部使用的初始环境变量。请参考socks5(1) ENVIRONMENT部分。


PROXY ENTRIES
Proxy 项指定daemon通过socks server 连接到特定主机。配置文件没有此项的话,daemon将直接连接到特定主机。语法如下:
proxy-type dest-host dest-port proxy-list

proxy-type 指定proxy server类型。有效值如下:
socks5 SOCKSv5
socks4 SOCKS version 4
noproxy 直接连接

dest-host 必须是有效的hostpattern
dest-port 必须是有效的portpattern
proxy-list 必须是有效的proxypattern

daemon使用proxy-list中的server连接到dest-host的dest-port。Proxy-list中的server必须符合proxy-type.。

ACCESS CONTROL ENTRIES
access control 部分决定daemon允许或拒绝连接请求。如果是access control项不匹配的连接请求,即使是已授权主机也不能建立连接。语法如下:
permit auth cmd src-host dest-host src-port dest-port [usr-list]
deny auth cmd src-host dest-host src-port dest-port [user-list]

auth 必须是有效的authpattern并且指定授权方式列表。
cmd 必须是有效的authpattern,指定src-host上的客户可以在dest-host上执行的命令。
src-port 必须是有效的portpattern
dest-port 必须是有效的portpattern
user-list 必须是有效的userpattern


PATTERNS

hostpattern
socks5使用ip地址和掩码的方式,格式如下:
hostip/mask 标准ip加掩码方式
- 匹配所有主机
n1. 等价于n1.0.0.0/255.0.0.0
ni.n2. 等价于ni.n2.0.0/255.255.0.0
n1.n2.n3. 等价于ni.n2.n3.0/255.255.255.0
.domain.name 主机名必须以.domain.name结尾
a.host.name 主机名必须为a.host.name
如果使用域名,SOCKS5_REVERSEMAP必须被设置。因为hostnames和domains依赖于DNS,所以推荐使用ip地址加掩码的方式。有很多种情况会导致逆向DNS查询工作不正常。
socks5.conf也支持老的hostpattern语法,我们推荐使用新的语法,新的语法可读性强。


portpattern
用服务名,数字或范围指定端口。中括号包括边界,圆括号不包括边界。指定范围用两个数字或服务名,中间用逗号隔开,没有空格。语法如下:
tftp tftp的服务端口,通常是69
80 端口80
- 所有端口
[100,1000] 端口100到1000
(100,1000) 端口101到999
(100,1000) 端口101到1000


authpattern
指定认证类型,socks5 daemon用逆序检查授权方式。语法如下:
n 没有认证
u Username/Password
k Kerberos 5(GSS-API)
- 任何认证方式
后面的认证方式优先级比前面的高,如果你输入:
n,u,k
server 先请求Kerberos认证,如果socks5 client没有安装使用Kerberos,server使用Username/Password 认证。因为SOCKS4 client 不能使用Kerberos 或Username/Password 认证方式。Serverz对SOCKS4 client不要求认证。

如果输入:n,k,u
server先请求Username/Password认证。

commandpattern
指定命令,可用逗号分开,中间没有空格。Socks5.conf识别如下命令:
c connect
b bind
u UDP
p ping
t traceroute
- 所有命令

userpattern
可用逗号隔开指定多个用户,用户类型必须匹配认证方式。例如,如果你使用Username/Password认证,socks5 daemon认为你是socks5用户,如果你使用Kerberos 认证,socks5 daemon 认为你是Kerberos 用户。一个短横线,“-”,匹配所有用户。


proxypattern
顺序指定服务器,用逗号分开。只有当前面的server无效时,客户才使用后面的server。

EXAMPLES
请参考examples目录获得更多的信息。
auth - - k
permit k – 111.111.111. - - -
只有Kerberos认证的C网111.111.111.0用户能使用这个server。

socks5 - - s5srv1,s5srv2
permit - - .mydomain.com - - -
所有的socks5连接请求都通过s5srv1。如果s5srv1不可用,所有的socks5连接请求通过s5srv2。只有.mydomain.com的客户可使用此服务器。
auth otherserver – k
noproxy .internal.net.com –
socks5 - - otherserver
permit - - .internal.net.com - - -
permit k – otherserver - - -
.internal.net.com的客户可使用server,不要求Kerberos认证。Socks5 server可以直接连接到 .internal.net.com。并且为其它主机通过otherserver代理。otherserver也是socks5 server,要使用此代理,必须使用Kerberos认证。


POOR CONFIGURATIONS
如同其它软件的情况一样,处于安全的理由,适当的配置是必须的。如下行:
permit - - - - - -
是不应该使用的。如果使用这样的设置,怀有恶意的用户可以使用这个socks5 server作为他们的跳板去攻击别的系统。


SEE ALSO
Socks5(1),libsocks5.conf(5),sockd4_to_5.pl(1)

AUTHORS
NWSL SOCKS5 Development Team

Send comments to [email protected]