Home - kang000feng/Vultr-SS-Firewall GitHub Wiki

欢迎转载,请附上链接

如有不清楚或出现错误,请 留言,记得附上错误的相关信息


本超速科学上网教程:

  1. 就是可以科学上网

  2. 上网速度满速

  3. 服务器端安全性高

  4. 0障碍

需要准备的材料有:

1、一张支持美元$的信用卡或普通信用卡或者普通带银联标识的借记卡


本教程的VPS服务商以Vultr为例,系统为Centos 7 64位,python 2.7.8。最终效果为能够跑满用户的本地带宽,10M的网速表现为流程观看Youtube 1080P,无暂停。主要步骤为:

1、注册Vultr,选择支付方式,选定套餐5$每月,每月1000G的流量,部署VPS

2、建立防火墙,设置非ROOT账户(一下简称A),赋予sudo权限,禁止ROOT账户用密码,用凭证(SSH Key)登陆等措施。最终实现用SSH Key登陆A,必要时可用sudo su转到ROOT账户,确保自己vps的安全。

3、在VPS和本地电脑上部署shadowsocks(用来科学上网)

4、在VPS和本地电脑上部署Finaspeed(用来加速)


教程正式开始:

注册、支付:

1、 注册Vultr(有20$的代金券*2)

点击 http://www.vultr.com/?ref=6920741-3B 进入官网,点击 Create Account 注册,支付方式选择Palpay(需要预存10$ )。

注册Paypal(有10$的新手奖励)

以下以带visa标识的信用卡为例,其他卡等同

选Paypal是可以避免信用卡盗刷,万一被盗刷,Paypal的赔付速度也是很快的)注册Paypal时选择买家(外币转换手续费不用你支付,由卖家支付),绑定信用卡 /借记卡,在我的账户中上方可以看到账户状态,显示未认证(找不到的同学用ctrl+f搜索“未认证”),进行认证,绑定你的信用卡 /借记卡,Palpay会从你的信用卡 /借记卡扣除小额的费用,等2-3天美元账单入账后,你会从入账单中看到4 位数的 code,在Paypal中输入4 位数的 code就认证完成了

然后打客服电话, https://www.paypal.com/selfhelp/contact/call 输入自己的动态识别码,跟连线客服表达自己是新账户,希望申请 10$的代金券,向他询问能否直接打到自己的账户余额,一般都会同意,等10分钟就到Paypal账上了,这样就没有使用时间限制了。

注册Vultr(有20$的代金券*2)

点击 http://www.vultr.com/?ref=6920741-3B 进入官网,点sign up 注册,支付方式选择Palpay(需要预存10 $,直接预存Paypal的10$新手奖励)。

这样一共就有免费的 60$ ,可以用12个月

部署:

2、支付完毕后,回到Vulrt的界面,点击右侧的+号,deploy一个新的VPS(虚拟服务器)。名字自己取,IP选择日本,操作系统选择CentOS 7,套餐选5$一个月的。点生成,之后跳转到管理页面,当显示绿色的running时,该VPS就部署好了,然后你注册的邮箱可以看到VPS的IP,在VPS管理页面点那个眼睛,可以看到你的ROOT账户的密码。

设置安全措施:

3、windows 按win+R,打开CMD,OS X打开terminal,

此是CMD_1或terminal_1

ssh root@IP_address
#利用SSH登陆 ROOT账户,然后输入yes,输入密码,
#当光标变成[ROOT@vultr ~]就说明当前你用ROOT账户登录VPS成功,
#通过@vultr 前的字母来判定当前是哪个账户

useradd A
#建立非ROOT账户,A

passwd A
#为A设置密码,输入两次,此时ROOT账户和非ROOT账户都设置成功了,
#在ROOT账户下可利用su A转到非ROOT账户

echo -e "\nA ALL=(ALL) ALL\n" >> /etc/sudoers
tail -3 /etc/sudoers
#赋予A sudo 权限
#在A账户下利用 sudo su 可以转到ROOT账户
#利用control+D来推出账户

yum install iptables-services
#安装防火墙

4、WINdows 按win+R,打开CMD,OS X打开terminal,

此是CMD_2或terminal_2,为A账户设置SSH Key

ssh-keygen -t rsa
#在本地生成SSH Key 密钥

Generating public/private rsa key pair.
 
Enter file in which to save the key (/user/.ssh/id_rsa):
#回车,路径默认为括号中的内容
 
Created directory '/user/.ssh '
 
Enter passphrase (empty for no passphrase):
#输入调用私钥时需要的密码
 
Enter same passphrase again:
#确认密码
 
Your identification has been saved in /user/.ssh /id_rsa. #私钥 地址
Your public key has been saved in /user/.ssh /id_rsa.pub. #公钥 地址
The key fingerprint is:
05:71:53:92:96:ba:53:20:55:15:7e:5d:59:85:32:e4 root@test
The key's randomart image is:
+--[ RSA 2048]----+
| o o ..      	|
| . o oo.+ .  	|
| o.+... =    	|
| ...o        	|
| o S         	|
| .             | 
|             	|
|             	|
+-----------------+

chmod 700 ~/.ssh
#对~/.ssh设置700权限,这里不赘述权限相关的内容,有兴趣的同学可以自己查资料

chmod 600 /user/.ssh /id_rsa 
#对私钥赋予 600 的权限

#上传公钥(/user/.ssh /id_rsa.pub)到VPS

brew install ssh-copy-id
#安装ssh-copy-id工具

ssh-copy-id -i /user/.ssh /id_rsa.pub  A@IP_address
#把公钥 /user/.ssh /id_rsa.pub
#上传到账户 A 中的 /home/A/.ssh/authorized_keys
 
The authenticity of host 'XXXXXX (XXXXXXX)' can't be established.
RSA key fingerprint is XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Are you sure you want to continue connecting (yes/no)? #输入yes

Warning: Permanently added 'XXXXXXXX' (RSA) to the list of known hosts. user@XXXXXXXX's password:  Now try logging into the machine, with "ssh 'user@XXXXXX'", and check in: 
~/.ssh/authorized_keys  to make sure we haven't added extra keys that you weren't expecting.

5、设置公钥权限

chmod 400 /home/A/.ssh/authorized_keys
#将authorized_keys 的权限设置为对拥有者只读,其他用户没有任何权限
 
chattr +i /home/A/.ssh/authorized_keys
#保证 authorized_keys 的权限不会被改掉
 
chattr +i /home/A/.ssh
#设置 ~./ssh 的 immutable 位权限,
#防止重命名 ~/.ssh ,然后新建新的 ~/.ssh 目录和 authorized_keys 文件 攥改密码

6、新建一个CMD或terminal,检验A是否能够用SSHKey登陆,因为SSH可重复登陆VPS,所以不用关闭原有的CMD terminal

ssh -i  /Users/.ssh/id_rsa  A@XXXXX
#尝试登陆,若成功就关闭CMD

7、转回CMD_1或terminal_1

vi /etc/ssh/sshd_config
#编辑 config 文件,按i编辑

利用滚轮下翻,确保各条目所示的状态和教程对应(去掉注释#)
RSAAuthentication      yes  #允许 RSA 认证
PubkeyAuthentication   yes  #允许公钥认证
PermitRootLogin        no  #禁止 ROOT 通过SSH登陆
PermitEmptyPasswords no #禁止空密码登陆
PasswordAuthentication  no  #禁止密码登陆
ChallengeResponseAuthentication no # 禁止使用任何的密码登陆
修改端口, 将 #Port 22 改为  Port XXXX #改掉默认端口

按 esc 退出编辑,输入:wq  #保存并退出 sshd_config

chkconfig iptables on #将 iptables 加入到系统服务,随系统启动而启动
service iptables start #直接启动 iptables 服务

iptables -A INPUT -p tcp --dport XXXX -j ACCEPT
iptables -I OUTPUT -p tcp --sport XXXX -j ACCEPT
#开放刚才改掉的端口,以免以后无法登陆A账户和ROOT账户

service iptables save  #保存

#iptables命令示例
#Iptables -D INPUT 5    #删除INPUT 中第五条规则
#Iptables -I INPUT 6    #新建规则插入到INPUT中 为第6条


service sshd restart
##重启 SSH

8 、在本机设置 config 文件方便 SSH-Key 登陆,转回CMD_2或terminal_2

vi ~/.ssh/config  #在私钥所在的.ssh 文件夹内新建一个 config 文件
 
按 i 编辑,复制以下内容
Host          vps                       #这个名字随意,感觉像调用函数
HostName      IP_address                #IP 地址,即VPS的域名
Port          XXXXX                     #服务器端开放的 ssh 端口,第 7 步中改的端口
User          A                         #登录的用户名
IdentityFile  ~/.ssh/ id_rsa            #使用的密钥文件密钥文件,本地私钥地址

按 esc 退出编辑,输入:wq 退出并保存。

ssh vps
#输入ssh vps来验证能否登陆A

9、设置fail2ban,防止暴力破解

sudo su 
#输密码,转回ROOT

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install fail2ban
#安装fail2ban

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
#复制配置文件

vi /etc/fail2ban/jail.local
#按i编辑配置文件

保持默认
[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime  = 3600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

##把dest=root改成dest=XXXX,因为刚才把端口22改成了XXXX

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, [email protected]]
logpath  = /var/log/secure
maxretry = 5

按 esc 退出编辑,:wq  #保存并退出

sudo service fail2ban restart
#重启 fail2ban

10、VPS端安装Shadowsocks

yum install python-setuptools && easy_install pip
yum install libevent
yum install python-devel
pip install gevent
yum install openssl-devel
yum install swig
pip install M2Crypto
pip install shadowsocks

vi /etc/shadowsocks.json  
#按i编辑 

{
    "server":"0.0.0.0",
    "server_port":XXX,#自定义
    "local_address":"127.0.0.1",
    "local_port":"1080",
    "password":"自定义",   #自定义
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}
# ESC退出  :wq保存

sudo ssserver -c /etc/shadowsocks.json  -d start --user A 
#用ssuser这个用户来运行ss

echo 'ssserver -c /etc/shadowsocks.json -d start' >> /etc/rc.local 
#开机启动

iptables -I INPUT -p tcp --dport XXXX -j ACCEPT
#开放SS中的端口

service iptables save
#保存iptables的更改

11、安装电脑端的SS

OS X ShadowsocksX: 2.6.3.dmg

https://github-cloud.s3.amazonaws.com/releases/7338354/873bb5f0-1d9c-11e5-99b0-092c95a759b3.dmg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJMK3TQ%2F20160428%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20160428T152120Z&X-Amz-Expires=300&X-Amz-Signature=42669ee7917691180fd7685206795d7c60c36a4257bad341a4a97553ee56bbb7&X-Amz-SignedHeaders=host&actor_id=16444568&response-content-disposition=attachment%3B%20filename%3DShadowsocksX-2.6.3.dmg&response-content-type=application%2Foctet-stream

Windows 7 or above: 2.5.6.zip

https://github-cloud.s3.amazonaws.com/releases/7600409/0ab4f47c-4643-11e5-89c9-c1b4d6d00267.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJMK3TQ%2F20160428%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20160428T152230Z&X-Amz-Expires=300&X-Amz-Signature=bd0ec9db0c6d7fffc71ada9b418d321338716fc897f8b9e5c4efca450df74f45&X-Amz-SignedHeaders=host&actor_id=16444568&response-content-disposition=attachment%3B%20filename%3DShadowsocks-win-2.5.6.zip&response-content-type=application%2Foctet-stream

@ Windows8.1/Windows7/Windows 10下视频教程

链接:http://pan.baidu.com/s/1dDkwJwX 密码: y4ej

@ Mac OSX下使用教程

链接:http://pan.baidu.com/s/1eQ7vBgA 密码: mfet

12、VPS端安装FS

rm -f install_fs.sh
wget  http://fs.d1sm.net/finalspeed/install_fs.sh
chmod +x install_fs.sh
./install_fs.sh 2>&1 | tee install.log
#一键安装

tail -f /fs/server.log
#查看日志,如果有success字样则表示成功安装

chmod +x /etc/rc.local
#设置开机启动

vi /etc/rc.local
#按i编辑,加入一条 sh /fs/start.sh

crontab -e
#每天晚上3点自动重启,加入0 3 * * *  sh /fs/restart.sh

sh /fs/restart.sh; tail -f /fs/server.log
#重新启动

13、电脑端安装FS

http://www.ip4a.com/t/513.html

14、流量统计

yum install git 
#安装git

yum install bc
#安装计算器

git clone https://github.com/hellofwy/ss-bash
#安装ss-bash

ssserver -c /etc/shadowsocks.json  -d stop
#先把SS停止运行

sudo ss-bash/ssadmin.sh add port password  limits
#例如sudo ss-bash/ssadmin.sh add 8388 123456 10G
#表示8388端口的密码是123456,流量限制10G
#只有ssmlt.json在此文件中的用户才能正常使用SS

sudo ss-bash/ssadmin.sh start
#启动

sudo ss-bash/ssadmin.sh help
#具体用法见此命令

##设置开机启动  vi /etc/rc.local  按i进入insert编辑
##可以看到有刚才让SS开机启动的命令,你可以在它前面加#注释掉
##加一句 sudo ss-bash/ssadmin.sh start  让ss-bash开机启动
##按ESC  :wq 退出并保存

一些常用的命令

ifconfig eth0
#查阅vps的ip

ssserver -c /etc/shadowsocks.json  -d restart; tail  -f -n 20 /var/log/shadowsocks.log
#重启SS+查看最后20行

pip show shadowsocks
#查看当前版本

sh /fs/restart.sh; tail -f -n 20 /fs/server.log
#重启+查看日志最后20行

Iptables -D INPUT X #删除INPUT 
Iptables -I INPUT X  #新建规则插入到第六6条
iptables -A INPUT -p all -j REJECT

sudo ssserver -c /etc/shadowsocks.json  -d stop #停止SS 

shadowsocks桌面端下载

https://shadowsocks.org/en/download/clients.html

Telegram 下载

安卓 (Goolge play apk)

https://apps.evozi.com/apk-downloader/?id=org.telegram.messenger

IOS

https://itunes.apple.com/app/telegram-messenger/id686449807

WP

https://www.microsoft.com/zh-cn/store/apps/telegram-messenger/9wzdncrdzhs0

Chrome 扩展

https://chrome.google.com/webstore/detail/telegram/clhhggbfdinjmjhajaheehoeibfljjno

firefox

https://marketplace.firefox.com/app/telegram/

win

https://updates.tdesktop.com/tsetup/tportable.0.9.44.zip

OS X

https://updates.tdesktop.com/tmac/tsetup.0.9.44.dmg

Linux 64

https://updates.tdesktop.com/tlinux/tsetup.0.9.42.tar.xz

Linux 32

https://updates.tdesktop.com/tlinux32/tsetup32.0.9.42.tar.xz