Ryan

SSH 公共代理的必要设置
Good, 你已经有了一个自己的SSH代理了,现在想要把这个代理公布出去给所有人分享。 但是没有两个小时,代理就没...
扫描右侧二维码阅读全文
13
2014/08

SSH 公共代理的必要设置

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

关于如何创建SSH FQ账号?请看《在VPS上开通低权限的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

搬瓦工年付$187机房套餐补货了,电信联通优化,512M内存/500G流量/1G带宽,建站稳定,优惠码:BWH1ZBPVK,【点击购买】!
搬瓦工年付$28CN2高速线路,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快,建站稳定,优惠码同上,【点击购买】!
Last modification:December 1st, 2018 at 08:12 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment

16 comments

  1. 不认识

    话说,两小时。。。你是不是把root共享出去了?

    1. Ryan
      @不认识

      知根知底的我都提供root算了,反正都是单独一个vps用来fq

  2. Kung

    卧槽TCP连接限制5这玩意能玩?话说这个TCP连接限制都会影响在什么方面?

    1. Ryan
      @Kung

      上面我搞错了,maxheld是并发限制,limit是总数限制
      有啥影响我真不懂了

    2. Ryan
      @Kung

      确实能玩啊,还能看U2B上1080P的视频
      话说你是不是看错了,上面的排版有点乱limit才是限制啊
      uid resource held maxheld barrier limit failcnt
      numflock 4 5 9223372036854775807 9223372036854775807 0

      1. Kung
        @Ryan

        话说如果限制在2000一下这玩意还能玩么?

        1. Ryan
          @Kung

          布吉岛,没试过,估计还能耍两下的

  3. xilouqingzhu

    好吧,豆腐乳君的linux 知识好像挺高的

    1. Ryan
      @xilouqingzhu

      你妹看到是参照别人教程改的么?via:http://v2ex.com/t/118804

  4. bobo

    你竟然在shadowsocks.net还共享了个ss账户。。。

    1. Ryan
      @bobo

      一直有共享啊

  5. 惜乐博客

    来支持咯!

  6. 羊会飞

    好麻烦,表示SSH共享的是ROOT账户

    1. Ryan
      @羊会飞

      心眼真大,共享root用户 :arrow:

      1. 羊会飞
        @Ryan

        。。。。。以及你的RssFeed地址挂掉了,直接doufu.ru/feed 吧

  7. 无纯洁

    好麻烦 :arrow: