分类: LINUX
2012-02-07 10:10:53
1. 配置 Socks5 编译环境
yum -y install gcc automake autoconf libtool make
2. 安装 Socks5 必要的包
yum -y install pam-devel openldap-devel cyrus-sasl-devel
3.下载,编译安装 Socks5
到此下载
官方实例
examples.htm
请安装 ss5-3.6.4-3.tar.gz 而不要安装新版,不然会有严重错误!
wget -c ... /ss5-3.6.4-3.tar.gz
tar zxvf ss5-3.6.4-3.tar.gz
cd ss5-3.6.4
./configure
make
make install
有点 BUG 需要我们手工修正一下
# vi /etc/rc.d/init.d/ss5 找到38行
/usr/local/sbin/ss5
改为
/usr/sbin/ss5
# vi /etc/rc.d/init.d/ss5 找到40行
echo "done"
;;
改成
echo "done"
fi
;;
看下我修改后的对比
4. 启动ss5服务
/etc/init.d/ss5 start
5. 添加 ss5 到服务中,并随机启动
chkconfig --add ss5
chkconfig ss5 on
6. 刪除Socks V4模块
改名为 mod_socks4.so.bk
mv /usr/lib/ss5/mod_socks4.so /usr/lib/ss5/mod_socks4.so.bk
7. 添加 SS5 用户
ss5 默认使用1080端口,并允许任何人使用。
我们可以修改 /etc/opt/ss5/ss5.conf 中的
# SHost SPort Authentication
#
auth 0.0.0.0/0 - -
为
# SHost SPort Authentication
#
auth 0.0.0.0/0 - u
在 /etc/opt/ss5/ss5.passwd 中添加 用户名和密码 如:
test test
使用用户验证,重启ss5服务
/etc/init.d/ss5 restart
修改启动文件,改日志不保存
在ss5启动时添加一个-m的参数,这个参数使系统不再记录ss5的日志。
改ss5端口,格式为-b ip地址:端口
vi /etc/rc.d/init.d/ss5
start)
# Start daemon.
echo -n "Starting ss5... "
if [ $OS = "Linux" ] || [ $OS = "SunOS" ]; then
/usr/sbin/ss5 -m -t -b 91.207.192.35:2080
touch /var/lock/subsys/ss5
else
/usr/local/sbin/ss5 -m -t -b 91.207.192.35:2080
fi
echo "done"
有不少安装配置sock5服务器的的需求, 那就开始准备安装吧
首先到software.htm去下载最新的for linux版本
目前是:ss5-3.6.4-3.tar.gz
# tar xvf ss5-3.6.4-3.tar.gz
# cd ss5-3.6.4
# ./configure
结果可能看到错误, 因为我就碰到了
checking security/pam_misc.h usability... no
checking security/pam_misc.h presence... no
checking for security/pam_misc.h... no
configure: error: *** Some of the headers weren't found ***
缺某些库文件, 我看到和pam有关的, 是pam-devel包
# yum -y install pam-devel
# make
# make install
make install之后没有任何显示, 这其实已经安装完毕了, 不必疑惑
修改配置文件:
/etc/opt/ss5/ss5.conf
修改这行:
auth 0.0.0.0/0 - -
改成:
auth 0.0.0.0/0 - u
然后在/etc/opt/ss5/ss5.passwd中, 一行一个用户+密码
# cat ss5.passwd
hao32 123456
# /etc/rc.d/init.d/ss5 start
报错
/etc/rc.d/init.d/ss5: line 41: syntax error near unexpected token `;;'
/etc/rc.d/init.d/ss5: line 41: ` ;;'
vi下看看41行, 在;;之前少了结束fi
38 /usr/local/sbin/ss5 -t
39 fi
40 echo "done"
41 fi
42 ;;
继续# /etc/rc.d/init.d/ss5 start
38行又报错... 说没有这个目录或者文件:/usr/local/sbin/ss5 -_-! 开始对ss5的开发者有点意见, 但是人家也那么辛苦, 就立即打消了此等想法, 并且内心抽了自己几巴掌
把/usr/local/sbin/ss5换成了/usr/sbin/ss5
# /etc/rc.d/init.d/ss5 start
doneting ss5... [ OK ]
再重启下看看:
# /etc/rc.d/init.d/ss5 restart
Restarting ss5... Shutting down ss5...
done [ OK ]
doneting ss5... [ OK ]
看来没啥问题, 过了, 现在你就可以使用服务器的IP, 端口1080, 用户hao32, 密码123456来测试你的socks5服务器了, 更多高级应用, 就参加ss5.conf, 里面有详细的说明.
为了使用Cute-FTP,除了IP伪装的方法外,就要使用Socks代理,现在让我们来看看配置Socks5的过程:
1. 下载文件
从下载最新版的socks5源文件到/tmp目录下。socks5-v1.0r11.tgz
2. 在防火墙上编译并安装(该防火墙应直接连至internet,是安装了两块网卡的双宿主机,假设内部网段为192.168.0.0/24)
cd /tmp
tar -xvfz socks5-v1.0r11.tgz
cd /tmp/socks5-v1.0r11
./configure --with-threads
make
make install
3. 配置文件/etc/socks5.conf
# /etc/socks5.conf
set SOCKS5_MAXCHILD 3
set SOCKS5_NOIDENT
set SOCKS5_TIMEOUT 5
interface 192.168.0. - eth1
auth 192.168.0. - u
permit u - 192.168.0. - - - jephe
permit u - 192.168.0. - - - jack
deny - - - - - - -
4. 配置文件/etc/socks5.passwd
# /etc/socks5.passwd
jephe password_of_jephe_is_here
jack password_of_jephe_is_here
5.开始测试
/usr/local/bin/socks5 -f -s
如果出现下面的信息表示测试成功。
18210: Socks5 starting at Mon Dec 14 18:23:45 1998 in normal mode
然后退出socks5,开始正式运行它在背景模式:
6. 正式运行
/usr/local/bin/socks5 -t -s 2> /var/log/socks5
7. 最后,加到/etc/rc.d/rc.local
echo "/usr/local/bin/socks5 -t -s 2> /var/log/socks5"
>> /etc/rc.d/rc.local
Sock5代理服务端软件,socks5-v1.0r11.tar.gz,socks5-v1.0r11-patched.tar.gz,N久前下的,以前也试着装了,后来没怎么用也就忘了到底用哪个了。
使用后者估计好一点。有个下载地址
先是安装,一路下来,
./configure 默认装到/usr/local下面
make
make install
make clean
make distclean
安装好后,usr/local/bin下面有个socks5程序,运行这个就是运行socks5服务端了。
下面开始配置,配置文件放在/etc/下,叫做socks5.conf,如果没有,需要自己建一个。
安装包中带有examples,比较简单,解释也少。还是需要上网google一把。
典型配置(有用户认证,可控制用户访问IP或网段,单跳代理):
socks5.conf的配置:
# A Socks5 Config file for a normal , single homed server
# 支持用户权限认证,访问需要用户名口令。
auth - - u
# 控制用户访问网段,下面的的意思是满足192.168.1.*的用户都可以访问
permit u - 192.168.1. - - -
用户名和口令配置文件:
/etc/socks5.passwd
username1 passwd1
username2 passwd2
简单配置完成。
启动sock5服务器,运行:/usr/local/bin/socks5 –t
默认为1080端口,如果要指定端口,那么运行 /usr/local/bin/socks5 –b 2007 –t
(注意是b,不是p。)
关闭socks5服务进程,运行:/usr/local/bin/stopsocks –KILL
关闭的是使用默认端口的启动方法,如果是指定端口的启动,那么同样需要指定端口关闭。
/usr/local/bin/stopsocks –p 2007 –KILL
连接socks服务器使用sockscap,访问站点http:///,这个网址不知道还有没有得下了,总之这是很老很有名的软件了。
填写socks服务器IP和端口后,在设置中选择socks版本5,域名解析看情况,一般本地解析会好一点,速度快,但是对于一些连接域名都找不到的只好尝试远程解析,不确定的可以选先尝试由本地端再由远端解析。支持用户名/密码。打上勾。有用户名密码设置中输入后确认。
然后点一下新建,在命令行中浏览要运行的文件名,工作目录最好也设进去,标识项名称吗随便填什么都行,只要自己知道。添加后在面板区出现运行文件的图标,选中点运行或双击就可以了。
socks5还有很多配置方式,帖上来慢慢研究。
如果你不想把密码文件存在默认的/etc/socks5.passwd里。想存在自定义的文件,比如/etc/qq.passwd
那就得修改/etc/socks5.conf.添加一项参数
set SOCKS5_PWDFILE /etc/qq.passwd
ok!重启一下服务,这时如果不输入正确的用户名和密码是使用不了socks5代理服务器的,输入正确的用户名和密码便可使用。
以上说的参数,大家可以结合使用,比如限制某个IP段使用socks5服务,而且要使用用户名验证
另外针对/etc/socks5.conf还有一些参数,大家就自己去研究吧
set SOCKS5_BINDINFC 192.168.0.8:1080
忽略ident请求。当客户机没有运行identd时,使用SOCKS5_NOIDENT将降低超时值
set SOCKS5_NOIDENT
指定连接停顿最长时间。超过最大值后,socks5断开连接
set SOCKS5_TIMEOUT 15
socks5将接受SOCKS V4 协议的请求,默认不接受
set SOCKS5_V4SUPPORT
指定同时存在的最大子进程数,Socks5预设为64
set SOCKS5_MAXCHILD 4
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作为他们的跳板去攻击别的系统。