维护您 Gandi VPS 伺服器的安全是您的责任。
这个页面中描述了很多方法可以保护您新创建的伺服器与预设的开启服务,请尽可能的设定一些伺服器的安全防护。
SSH 预设是开启的并且使用只可以用建立伺服器时所输入的密码登入。这个使用者可以执行下列的指令取得 root 权限:
su -
因为预设上 root 密码与使用者密码相同,所以请一定要用 “passwd” 这个命令来变更密码。
在使用 SSH 连接伺服器的时候取代输入密码,您可以建立一对 公开/私有 金钥让您从本地电脑连线到伺服器时不需要输入密码。这个优点在于您不需要熟记密码,金钥在连线时相对安全,越长的金钥长度则越安全。缺点则是在每台需要连线的电脑都必须要安装金钥。
在您的本地端电脑上面执行下列指令来建立金钥:
ssh-keygen -t rsa -b 2048
然后,复制公开金钥到您的远端伺服器(范例中 your_server_ip
要替换成您的 VPS 的 IP 位址):
scp .ssh/id_rsa.pub user@your_server_ip:~/.ssh/authorized_keys
如果 ”~/.ssh/” 目录不存在于 VPS 上,您需要在传送公开金钥之前建立它。
现在,当您使用 SSH 连线时(ssh username@your_server_ip
) 您将不会被要求输入密码。
关于更多公开金钥认证的资讯,请参考 透过 SSH 连结到您的基础伺服器.
在基本的伺服器中都包含了 Gandi 的 SSH 金钥,在 已提供授权 的情况下我们的代管团队会可以登入已协助解决一些紧急或是复杂的状况。
如果您想要关闭它,请修改 ”/etc/default/gandi” 这个档案。
这项技术可以有效减少 SSH 的暴力攻击,透过先 “敲” 别的埠然后 SSH 的连线才会开启。
更多的资讯请参考 Wikipedia.
您应该关闭公开介面上其他您没有使用到的埠。有一些工具使用 iptables(Netfilter/Linux 防火墙规则) 的工具可以达成来增加您的伺服器安全,并且可以通知您有人尝试恶意连接。另外 iptables 可以直接使用命令列模式来进行管理。
在 Unix/BSD 系统上,Packet Filter (PF) 是标准的防火墙。
您可以使用 SELinux 来阻止您伺服器上未经授权的软体安装与设定档修改,并且可以加强存取控制权限。对您的伺服器来说这是一个很重要的强化。
您首先需要透过进阶的硬碟设定启动 SELinux,在您的 Gandi 帐号内打开硬碟管理页面中的核心区段。
在 “开机选项” 底下,选择下列选项:
点选 “送出” 来储存硬碟设定变更。请注意,伺服气在变更选项后需要重新开机设定才会生效。
在您伺服器上使用 root 帐号并输入下列指令来确认是否正常运作:
# cat /proc/cmdline console=hvc0 nosep loglevel=8 selinux=1 security=selinux ro root=/dev/xvda1
接下来,请在 ”/etc/fstab” 这个档案中加入下列资讯:
none /selinux selinuxfs defaults 0 0
最后,请安装下列套件:
libselinux
selinux-policy
selinux-policy-<type>
( <type>
指的是 minimum, targeted…)SELinux 现在应该已经启动了。
如果您重新启动伺服器,您将会需要进行额外的步骤。
您可以使用 “semodule” 来管理伺服器上的 SELinux 原则模组,例如:
# packages="execmem.pp.bz2 unconfined.pp.bz2 unconfineduser.pp.bz2" # semodule -n -r oracle-port -b base.pp.bz2 -i $packages -s \ targeted 2>&1 | grep -v "oracle-port"
在 /usr/share/selinux/<type>/*.pp.bz2
中可以找到可用的套件清单。
您也可以用 “load_policy” 这个指令来读取其他额外的原则档。
如果需要,您可以使用 “fixfiles” 来修复档案。您也可以使用 “sestatus” 来确认 SELinux 的执行状态。
您可以使用 “rpm -q -scripts” 从 selinux-policy-<type> 套件中取得更多资讯,例如: rpm -q –scriptps selinux-policy-minimum
。