购买linux vps 之后的一些安全设置

创建普通用户

为了安全,平时我们应该以普通用户的身份操作 VPS。所以需要创建一个普通用户。

# useradd -m hello
# passwd hello
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

给用户添加 sudo 命令的使用权限:

# echo -e "\nhello ALL=(ALL) ALL\n" >> /etc/sudoers
# tail -3 /etc/sudoers

hello ALL=(ALL) ALL

如果不想每次使用 sudo 都输入 root 密码,上面的命令修改为:

# echo -e "\nhello ALL=(ALL) NOPASSWD:ALL\n" >> /etc/sudoers
# tail -3 /etc/sudoers

hello ALL=(ALL) NOPASSWD:ALL

使用 SSH 密匙认证登录 VPS

SSH 密钥对可以让您方便的登录到 SSH ,再加上使用密码短语 (passphrase) 的使用,安全性会更上一层楼。 同时,我们可以使用 SSH agent 来帮助我们记住密码短语,无需我们记住每一个密钥对的密码短语,减轻了我们的负担。

使用 ssh-keygen 命令生成密钥对

ssh-keygen -t rsa -b 4096

如果您要生成 RSA (768-16384 bit) 或者 DSA (1024 bit) 密钥对,需要使用 -t rsa 或者 -t dsa,并修改 -b 选项。-b 可以省略,ssh-keygen 会生成一个默认大小的密钥对。

具体可以参考SSH_KEYS

将公钥复制到远程服务器上

$ scp ~/.ssh/id_rsa.pub username@remote-server.org:

将公钥上传到服务器。注意,该命令最末的 : 不可省略。上传成功之后,先使用口令登录到服务器,将公钥文件重命名为 authorized_keys,并移动到 ~/.ssh 下,若 ~/.ssh 不存在则新建一个。上述操作等价于

$ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

好了,从此你再登录,就不需要输入密码了。如果还是不行,就打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行前面”#”注释是否取掉。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

保证 authorized_keys 文件的安全

将 authorized_keys 的权限设置为对拥有者只读,其他用户没有任何权限:

$ chmod 400 ~/.ssh/authorized_keys

为保证 authorized_keys 的权限不会被改掉,您还需要设置该文件的 immutable 位权限:

# chattr +i ~/.ssh/authorized_keys

然而,用户还可以重命名 ~/.ssh,然后新建新的 ~/.ssh 目录和 authorized_keys 文件。要避免这种情况,您需要设置 ~./ssh 的 immutable 位权限:

# chattr +i ~/.ssh

注意: 如果您需要添加新的公钥,您需要移除 authorized_keys 的 immutable 位权限。然后,添加好新的公钥之后,按照上述步骤重新加上 immutable 位权限。 禁用

禁用密码登录

将公钥上传到 SSH 服务器上之后,您就不再需要输入 SSH 账户密码来登录了。直接使用账户密码登录容易受到暴力破解的攻击。倘若您没有提供 SSH 私钥,默认情况下,SSH 服务器就会让您直接使用密码登录,这就有可能让不法之徒来猜测您的密码,有一定的安全隐患。要禁用这一行为,您需要编辑 SSH 服务器上的 ` /etc/ssh/sshd_config:`

/etc/ssh/sshd_config
PasswordAuthentication no
ChallengeResponseAuthentication no

配置防火墙

未完待续 Minamoto // CORE GAWQE-F9ATC-7P278-R8JRD-J95X3-JC3HV-DVERX-78WWE-A9KCV-BBY3G-NGEK7-SC38V-GKTPT-G2F2G-C2UXC-A