Good, 你已经有了一个自己的SSH代理了,现在想要把这个代理公布出去给所有人分享。 但是没有两个小时,代理就没法使用了,为什么?因为你需要额外注意以下事项(以下步骤需要比较高的linux技能) 关于如何创建SSH FQ账号?请看:

大家都知道,利用国外的VPS,可以实现SSH代理X墙。但是考虑到安全问题,我们不敢把自己的root账户给别人用。如果朋友急着要 Fuck 墙怎么办呢?其实也很简单,给朋友建一个最权限的 SSH账...

一、首先要做的当然是禁用root用户远程登录。

shell# vi /etc/ssh/sshd_config

1、找到下面这行:把值改为yes(允许)或no(不允许)

PermitRootLogin yes

2、然后重新启动ssh服务就可以了.

# /etc/rc.d/sshd restart
或# service sshd restart

二、检查操作系统的各种限制

1、对于openvz的vps,特别需要检查一下

shell# cat /proc/user_beancounters 
Version: 2.5
       uid  resource                     held              maxheld              barrier                limit              failcnt
     3124:  kmemsize                  3468342              4718592            268435456            268435456                    0
            lockedpages                     0                    0                65536                65536                    0
            privvmpages                 11819                14263  9223372036854775807  9223372036854775807                    0
            shmpages                      769                  785  9223372036854775807  9223372036854775807                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            numproc                        22                   48  9223372036854775807  9223372036854775807                    0
            physpages                    5275                 8020                    0               131072                    0
            vmguarpages                     0                    0  9223372036854775807  9223372036854775807                    0
            oomguarpages                 1847                 1847  9223372036854775807  9223372036854775807                    0
            numtcpsock                      5                    5  9223372036854775807  9223372036854775807                    0
            numflock                        4                    5  9223372036854775807  9223372036854775807                    0
            numpty                          1                    1  9223372036854775807  9223372036854775807                    0
            numsiginfo                      0                   42  9223372036854775807  9223372036854775807                    0
            tcpsndbuf                   87200                87200  9223372036854775807  9223372036854775807                    0
            tcprcvbuf                   81920                81920  9223372036854775807  9223372036854775807                    0
            othersockbuf                 4624                59320  9223372036854775807  9223372036854775807                    0
            dgramrcvbuf                     0                 2312  9223372036854775807  9223372036854775807                    0
            numothersock                   13                   27  9223372036854775807  9223372036854775807                    0
            dcachesize                1312205              1382789            134217728            134217728                    0
            numfile                       388                  455  9223372036854775807  9223372036854775807                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            numiptent                      24                   24  9223372036854775807  9223372036854775807                    0

2、其中 numtcpsock 表示 tcp 连接数。像上面这样的情况,就不适合用于公共代理,因为vps商限制了并发的tcp连接数。

shell# ulimit -n
1024

3、这个命令检查默认的一个进程可以打开的文件数。1024这个默认值是不够的。推荐设置为8000

shell# ulimit -n 8000

三、防止vps被用于暴力破解ssh密码等非法行为

1、下面假设SSH账号为sshproxy

shell# iptables -t filter -A OUTPUT -d 127.0.0.1 -j ACCEPT
shell# iptables -t filter -m owner --uid-owner sshproxy -A OUTPUT -p tcp --sport 22 -j ACCEPT
shell# iptables -t filter -m owner --uid-owner sshproxy -A OUTPUT -p tcp --dport 80 -j ACCEPT
shell# iptables -t filter -m owner --uid-owner sshproxy -A OUTPUT -p tcp --dport 443 -j ACCEPT
shell# iptables -t filter -m owner --uid-owner sshproxy -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset

2、对于sshproxy用户,限制其不能访问80,443之外的端口

四、 防止DMCA Compliant

1、虽然你已经把sshproxy限制为只能访问80/443端口,但是对于美国的vps,仍然有额外的一点需要注意。 2、因为美国的vps需要遵从美国的DMCA版权法律,如果该vps被用于bt下载,而且正好遇上了电影公司设置的蜜罐的话,你的vps的ip就会被记录下来。然后DMCA Compliant律师函会被送往你的vps商那,然后就会被停止服务。为了避免ssh帐号被用于bt下载,你不得不对80端口的流量再进一步进行限制

shell# apt-get update && apt-get install -y nginx  #安装nginx

3、随便添加一个虚拟主机配置文件,内容为

server {
    listen 127.0.0.1:3128;
    server_name localhost;
    resolver 8.8.8.8;
    location / {
        set $upstream_host $host;
        if ($request_uri ~ "^/announce.*") {
            return 403;
        }
        if ($request_uri ~ "^.*torrent.*") {
            return 403;
        }
        proxy_set_header Host $upstream_host;
        proxy_pass http://$upstream_host;
        proxy_buffers 8 32k;
        proxy_buffering off;
    }
}

4、接着把所有的80端口流量转到nginx来处理

shell# iptables -t nat -m owner --uid-owner http-ss -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128

via:http://v2ex.com/t/118804