Linode VPS主机购买与配置全流程攻略
购买
因为我主要的考量不是价格,而是主机的效能与稳定性,还有是否有提供备份的机制,linode 的稳定性大家都说不错,还可以加 25% 的费用备份整台主机,所以我就选择了 linode 的 vps,以下是我在 linode 注册与购买 vps 的过程记录。
step 1
首先到 linode 的官方网站,填入自己的 e-mail、账号名称与自选的密码。
填完送出之后,linode 会先寄一封确认信到自己的 e-mail 信箱。
step 2
到自己的 e-mail 信箱收信,点选上面的确认连结。
step 3
点选 e-mail 中的确认连结后,就会开启注册的资料填写网页。
这里除了填入基本资料之外,还要输入信用卡预先储值。而优惠代码的部分,则可以上网搜寻「linode promo code」。
step 4
注册完成之后,就可以马上建立 vps 主机了,linode 上面有各种等级的方案,刚开始用可以选择最基本的「linode 1024」,每个月收费是 10 元美金。
linode 在全球各地有好几的资料中心,您可以选择自己想要的地点,如果是一般的中文网站,服务对象以东亚为主,可以选择今年四月刚成立的新加坡资料中心。
日本东京的资料中心因为主机售罄,目前无法提供给新的主机进驻,linode 正在兴建第二个日本资料中心,有兴趣的人可以关注 linode 的部落格。
step 5
建立好一个虚拟主机之后,点选它进入管理界面。
step 6
点选「deploy an image」,安装系统。
step 7
选择 linux 发行版,并指定硬盘空间的配置,以及 root 管理者的密码。
step 8
安装好之后,点选「boot」开机。
step 9
从「remote access」签页中可以看到服务器的 ip 信息,还有各种远端登入的方式。
您可以使用传统的 ssh 登入,或是使用 linode 所提供的 console access 功能。我是感觉它的「lish via ajaxterm」非常好用,只要从网页上点选「launch lish ajax console」,就会接出现这样的 console,完全不需要安装任何东西。
这种从 console 登入的方式跟 ssh 登入是完全不同的(虽然看起来很像),它最棒的地方就是它不是透过主机的网络出来的,所以不会受到主机防火墙的影响,这个在变更防火墙设定时非常有用,管理者完全不必担心自己设错防火墙规则把自己挡在门外。
linode 也有提供简单的 cpu 使用量、网络流量与硬盘 io 的统计图,这些图是 linode 自动产生的,不会影响到主机的运作,当然也不需要安装。
ubuntu的基本设定
这里介绍 linode vps 在安装 ubuntu linux 系统之后,需要马上进行的一些基本安全性设定。
在购买 linux vps 虚拟专属主机之后,只要鼠标点几下,花个几秒钟就可以装好一个 ubuntu linux 系统,不过后续还有很多安全性设定必须自己动手处理,以下是各种设定的步骤教学。
1.更新系统套件
安装好 ubuntu linux 后,最先要做的就是更新系统套件:
sudo apt-get update
sudo apt-get upgrade
2.主机名称与 fqdn
主机名称(hostname)可以自己任意取,他跟网址与 e-mail 位址等没有直接关系,各主机的名称不可以重复,有些人喜欢用星球、动物或是伟人的名字来命名,您可以自己想一个喜欢的名字,不过请避免使用 www 这类太过于一般化的名称。
ubuntu linux 可以下列指令变更主机名称:
echo "einstein" > /etc/hostname
hostname -f /etc/hostname
这样会将主机名称设定为 einstein。
接着编辑 /etc/hosts,设定 fqdn(fully qualified domain name)。假设我们的主机名称为 einstein,网功能变量名称称(domain name)为 gtwang.org,fqdn 为 einstein.gtwang.org,主机对外的 ip 位址为 12.34.56.78,则将 /etc/hosts 设定为:
127.0.0.1 localhost.localdomain localhost
12.34.56.78 einstein.gtwang.org einstein
如果有使用 ipv6 的话,也要连同 ipv6 的位址一起加入:
127.0.0.1 localhost.localdomain localhost
12.34.56.78 einstein.gtwang.org einstein
2600:3c01::a123:b456:c789:d012 einstein.gtwang.org einstein
这里设定的 ip 位址与 fqdn 的对应必须跟 dns 的 a 纪录吻合,若有使用 ipv6 的话,dns 服务器上也要有对应的 aaaa 纪录。
3.时区
将时区(timezone)调整为自己所在地的时区,可以让系统纪录档上的时间戳记看起来更直觉。
linode 的 linux 时区预设是使用格林威治标准时间(utc),我们可以使用下列指令更改时区的设定:
dpkg-reconfigure tzdata
更改完成后,再用 date 确认一下:
看看输出的时间是否正确。
4.新增使用者
在 linode 上刚装好的 ubuntu linux 是直接用 root 登入的,没有一般使用者账号,但如果所有的动作都使用 root 来操作,会给系统带来很大的风险,通常我们都会一般账号来登入,必要时才切换成 root 权限,以避免下错指令等意外发生。
在 ubuntu linux 下新增一个使用者:
adduser myuser
将 myuser 这个使用者加入 sudo 群组:
usermod -a -g sudo myuser
这样设定好之后,在用这个账号以 ssh 登入:
ssh myuser@12.34.56.78
然后测试看看是否能使用 sudo:
sudo su
如果能取得 root 权限就表示没问题了。
5.ssh 金钥认证登入
ssh 公开金钥认证可以大幅增加服务器的安全性,我们可以使用 ssh-keygen 在自己的计算机中产生金钥后,再将公钥放进服务器中:
ssh-keygen
scp ~/.ssh/id_rsa.pub myuser@12.34.56.78:
接着再到服务器上,建立 .ssh 目录,把公钥放置在 .ssh/authorized_keys:
mkdir .ssh
mv id_rsa.pub .ssh/authorized_keys
设定好档案权限:
chown -r myuser:myuser .ssh
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
设定好之后,记得要测试 myuser 这个使用者是否可以不需要密码登入 ssh。
6.停用 ssh 密码登入
编辑 /etc/ssh/sshd_config,将密码登入功能关闭:
passwordauthentication no
同时也停用 root 登入:
permitrootlogin no
重新启动 ssh 服务器:
sudo service ssh restart
7.防火墙
防火墙我习惯使用 ufw 来设定:
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow http/tcp
sudo ufw allow https/tcp
ufw allow from 12.34.0.0/16
这里开启 ssh、http 与 https 这几个连接埠,另外对 12.34.0.0/16 这个子网域开放所有的连线,用来开发与测试用。
8.fail2ban
fail2ban 可以用来阻挡一些来自网络上的恶意攻击,当它侦测到来自网络的某个 ip 不断尝试入侵系统时,会建立一个暂时性的防火墙规则,将攻击者的 ip *。fail2ban 可以用下列指令安装:
sudo apt-get install fail2ban
安装完成后,fail2ban 预设只会对 ssh 进行监控,若要更改设定可以将自己的设定写在 /etc/fail2ban/jail.local 设定档中,在这个档案中,我们也可以设定当侦测到几次登入失败后才开始阻挡 ip(maxretry),还有每次阻挡 ip 的时间长度(bantime)。修改设定之后,记得重新启动 fail2ban:
service fail2ban restart