[攻略] 自己的VPN自己架:基础建设篇

楼主: Akaz (Akaz)   2015-06-11 18:23:05
经过测试,ConoHa 无法架设 PPTP VPN,OpenVPN无问题
一、前言
本文旨在协助没有资讯相关背景的朋友能够建立自己的、安全的VPN。
文章将分为两部分:基础建设、OpenVPN架设。
本次将以 ConoHa VPS 搭配 Debian 8 (64bit) 来做示范。
如果你的VPS服务商只提供 Ubuntu 14.04 LTS,请别担心,大致上所有内容都通用。
(可能有细微差异)
如果你的VPS服务商只提供 Debian 6 / 7,请与我连络,我会详细解释如何升级。
如果你的VPS服务商只提供 CentOS 7,请容我说声抱歉,
因为撰文的时间关系,本次教学将不会涵盖 CentOS。
如果你的VPS服务商只提供 FreeBSD,那它还没倒真是个奇蹟(X)。
由于 ConoHa 似乎已经取消验证手机的1500 JPY免费额度,
且经过测试 ConoHa 无法架设 PPTP VPN,(推测是GRE协定被挡)
还请斟酌是否要使用,或者寻求其他供应商。
文章内容若有任何疑问或者本人有所疏忽的地方,欢迎发表推文或来信。
二、开始使用VPS
首先到 ConoHa VPS 的官方网站注册一个帐号。
注册后会要求手机号码验证与选择缴费方式。
ConoHa 可以储值的方式使用,提供信用卡、PayPal等等的方式。
注册手续完成后就可以到 Server List,
点击右上角的 Add 或左上角的 Add Server 进入添加服务器的画面。


在添加服务器的画面请点击“Debian”并选择 8 (64bit)。
在 root Password 字段填入 root 密码。


(root 是 Linux 系统中的“超级使用者”,拥有所有的权限)
建议使用大小写字母、数字、底线、问号等符号混杂的密码,且避开既有单词。
这里有一个 Intel 的页面可以测试密码强度。
https://www-ssl.intel.com/content/www/us/en/forms/passwordwin.html
请注意不要在这个页面打上真正的密码,而只是测试密码的“形式”。
题外话,我试了一下,fxxkutanaka居然要12年?
第三部分 Option 的地方,请取消勾选 Port Permission IPv6 的 Allow All。


接着就可以按右下角的 Add 新增机器。


等到红圈处变成 Running 就可以继续下一步。
三、基本设置
这部分将使用PieTTY做为远端连线至VPS的软件。


PieTTY可以在这边下载到:http://ntu.csie.org/~piaip/pietty/
打开PieTTY会是这样的画面:


首先请记录VPS的IP。VPS的IP可以在这里找到:






同时请先点击最上方的“Shutdown”关闭VPS,
然后点击第三项的“VPS Setup”并将 Console Key-map 改为 en-us。


如果跳出红色的讯息告诉你设定失败就代表VPS还没有关机。
修改完毕后点击上方的“Start”。
接着把IP填回PieTTY。


点下连线后应该会跳出类似这样的东西:


点击“是”就可以了。
接下来PieTTY会问你要用什么身分登入(login as:),
请填入root,然后打上密码登入。


使用root登入非常危险
使用root登入非常危险
使用root登入非常危险
但因为 ConoHa VPS 没有默认的使用者,我们还是要危险这一次。
登进去之后首先做基本的安全设定。
首先是开启一个新的使用者。
在命令列打上“adduser xxx”,xxx可为你希望使用的使用者名称。
(全小写、不可数字开头)
root@xxx:~# adduser xxx


然后指定密码。请不要和root使用同样的密码,
并请使用大小写字母、数字、底线、问号等符号混杂的密码,且避开既有单词。
除了密码以外的设定基本上可以留空直接 Enter。


接着我们要禁止使用root登入。
首先要赋予刚刚新增的使用者操作系统的权限。
root@xxx:~# visudo
找到 # User privilege specification
并在 root ALL=(ALL:ALL) ALL后面新增一行如图。


修改完后按Ctrl+X,再按Y,再按Enter存盘。
接着禁止使用root登入。
root@xxx:~# nano /etc/ssh/sshd_config
找到 PermitRootLogin yes,把yes改成no。改完后一样Ctrl+X、Y、Enter。


接着要重新开启ssh服务让它使用新的设定档。
root@xxx:~# systemctl restart ssh.service
然后离开VPS。
root@xxx:~# exit
接着重新打开PieTTY,并用刚刚建立的使用者登入。
登入后测试是否能获取root权限。
xxx@xxx:~$ sudo su -
输入密码后Enter,如果发现变成了“root@xxx:~#”就是成功了。


成功就可以回到一般使用者的状态了。
root@xxx:~# exit
注:如果你和我一样,使用sudo的时候会出现一行
sudo: unable to resolve host xxx-xxx-xxx-xxx
可以这样解:
$ sudo sed -i.bak 's/localhost/localhost '$(hostname)'/' /etc/hosts
接着设定 fail2ban 来阻挡外来攻击者暴力破解密码。
xxx@xxx:~$ sudo apt-get -y update
xxx@xxx:~$ sudo apt-get -y upgrade
xxx@xxx:~$ sudo apt-get -y install fail2ban
然后设定 fail2ban 的设定档。
xxx@xxx:~$ sudo nano /etc/fail2ban/jail.local
打开来确实是一个空白的文件,请不要惊慌。
由于内容有一点多,所以我把它放在codepad.org上:http://codepad.org/diDtliN7
复制之后在PieTTY的黑视窗点一下右键就可以贴上了,注意别点到两下。
一样Ctrl+X、Y、Enter存盘。
然后修改另外一个档案让它可以在重开机时保留原先的黑名单。
xxx@xxx:~$ sudo nano /etc/fail2ban/action.d/iptables-multiport.conf
在里面找到 actionstart,在整段的后面加上
cat /etc/fail2ban/ip.blocklist | while read IP;
do iptables -I fail2ban-<name> 1 -s $IP -j <blocktype>; done
(请合并成一行)


然后找到 actionban,加上
echo <ip> >> /etc/fail2ban/ip.blocklist


存完档后重启 fail2ban。
xxx@xxx:~$ sudo systemctl restart fail2ban.service
然后确认 fail2ban 是否有成功运行。
xxx@xxx:~$ sudo fail2ban-client status
注:fail2ban 最近有过一次设定档更新,而 Debian 8 stable 版本没有更新。
我不太确定 Ubuntu 14.04 LTS 有没有更新这一项。
如果无法正常启动还请告知,我会补上解法。
至此系统环境就大致上完成架设安全的VPN的准备了。
再次提醒,设置密码时,
请使用大小写字母、数字、底线、问号等符号混杂的密码,且避开既有单词。
基础建设篇至此结束,感谢收看;有问题欢迎发表推文或来信。
OpenVPN架设篇已完成,文章代码 #1LU_Gc_9
作者: ian90911 (xopowo)   2015-06-11 18:25:00
お、おう...
作者: caten (原PO不是人)   2015-06-11 18:29:00
O...oh...
作者: judy3116 (坑底生存者)   2015-06-11 18:29:00
教学详细,推一个
作者: angel84326 (吹雪本命!)   2015-06-11 18:30:00
推教学 但这.....疴....
作者: kira925 (1 2 3 4 疾风炭)   2015-06-11 18:30:00
我不是很喜欢sudo 特别你开这种全权限的要这样还不如进去以后用su 双层密码保护说来fxxutanaka用字典攻击法会炸的吧XD恩,ssh key应该是最好的XD
作者: feignego (feign)   2015-06-11 18:33:00
おぅ>△<
作者: proofmax1   2015-06-11 18:34:00
太神啦 一定要M
作者: ttt95217 (略)   2015-06-11 18:38:00
纯推不下
作者: clse0190 (shadow)   2015-06-11 18:38:00
还是别sudo吧
作者: Hitomi29 (ドM14号电探)   2015-06-11 18:49:00
赶快推 不然别人以为我们看不懂!
作者: kira925 (1 2 3 4 疾风炭)   2015-06-11 18:49:00
sudo要很仔细处理权限 不然sudo其实更不安全
作者: krrvincent (krr)   2015-06-11 18:52:00
有点忘记Linux是怎么处理权限继承的问题了 比照Win的话母程序给权限颇危险...
作者: r790528 (羽月於雨月語月)   2015-06-11 18:55:00
测试一下密码 FuckYouTanada要8243年喔w
作者: Sousake (specialist URUZ 7)   2015-06-11 19:02:00
我的砖夜来自堪口雷
作者: kira925 (1 2 3 4 疾风炭)   2015-06-11 19:06:00
@羽月 如果是跑字典档 可能几天就炸裂了XD
作者: darkgerm (黑骏)   2015-06-11 19:19:00
挡 ssh 还是上一下 iptables + sshguard 比较好
作者: Kagero (摩荔枝天(茄汁))   2015-06-11 19:23:00
未看先猜文组的反应都是在看无字天书(X
作者: kuojames2580 (干干干干干)   2015-06-11 19:26:00
明明就是基础篇我却看不懂
作者: Sousake (specialist URUZ 7)   2015-06-11 19:26:00
也有文组知道 加入居居不必选校别 加入勘口雷不必选组别
作者: tom11725 (奥特斯)   2015-06-11 19:28:00
原PO选择ConoHa这个附费VPN有什么优点吗最近也在物色附费VPN,因为太多了不知道该如何选择@@
作者: sodasu11 (LaZyFRoG)   2015-06-11 19:38:00
看不懂照推w
作者: Pmking (猴王)   2015-06-11 19:39:00
至少 加入勘口雷的文组们有八成都知道怎么挂VPN
作者: Kenqr (function(){})()   2015-06-11 20:03:00
conoha酱有点婴儿肥
作者: qooLD (遗忘之都)   2015-06-11 20:42:00
糟糕有点心动...conoha有点可爱...可是我宿舍电脑连不上w
作者: aaaaooo (路过乡民)   2015-06-11 20:55:00
看到freeBSD就知道要推了www
作者: Chimaerason (Petit Mica)   2015-06-11 21:06:00
居然有 FreeBSD XDDD
作者: feignego (feign)   2015-06-11 21:11:00
FreeBSD 是五六年前消失的东西了吧...
作者: kira925 (1 2 3 4 疾风炭)   2015-06-11 21:17:00
OpenBSD还在阿...
作者: werrty (ART)   2015-06-11 21:33:00
快推!不然会被说看不懂!
作者: feignego (feign)   2015-06-11 21:53:00
上一次server从FreeBSD灌成Ubuntu...四五年前了zzz但是自从不当engineer之后,linux语法通通忘光光啦 orz
作者: qooLD (遗忘之都)   2015-06-11 21:59:00
周末在刷卡好了...比较有时间研究怎么写XDD
作者: icons   2015-06-11 22:44:00
舰娘版愈来愈多这类文,不知道算不算好事。虽然我觉得超棒的原PO辛苦了!感谢教学!
作者: kingwilly71 (青色之瞳)   2015-06-11 23:27:00
这还是要有专业知识再动手比较好我自己是有用aws 只是他还要拉一推security group会更麻烦一点
作者: handsomecat (((恐(((′・ω・`)))慌)))   2015-06-11 23:29:00
X你田中 XDDDDDDD
作者: icemango (我是芒果)   2015-06-11 23:46:00
是走错板了腻 XDDDDDDDDDDD
作者: George017 (阿丙)   2015-06-12 00:17:00
小提醒,如果用得是Ubuntu,它默认是没root的喔只能用su把第一个管理员帐号升级成等于root权限指令下sudo时你其实就是在用root等级的权限做事所以一些发行版在第一次输入sudo时会有一行小提示密码强度的部分,不同的系统/服务对同样组成的密码评价不同(在一些服务中显示为高强度;在另一些却只有中)以及不同情境下会有密码长度的限制
作者: kaori9993 (铁骑臣)   2015-06-12 01:10:00
感谢,真的实用,这样就方便多了
作者: mattc123456c (Matt Zhuang)   2015-06-12 01:34:00
我以为我到了Linux版了

Links booklink

Contact Us: admin [ a t ] ucptt.com