购买
因为我主要的考量不是价格,而是主机的效能与稳定性,还有是否有提供备份的机制,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