Ubuntu 16.04服务器的初始化设置

2018/09/20 技术笔记

最近在服务器的安全性这个问题上吃了点亏,于是决定写几篇Linux服务器初始化相关的文章,来记录这次踩坑的成果。尽早的设置会让服务器更加的安全,提高它的可用性,为后续的部署程序打下基础。

一、root登录

在我们买下一台云服务器之后,就可以从控制台中拿到服务器的ip以及账号密码。这时我们可以通过

ssh root@SERVER_IP_ADDRESS

这个命令来连接服务器。如果出现了接受有关主机的真实性的警告,就选择同意,在输入密码之后,就能完成登录过程。

root是什么

在Unix与类Unix系统中,root是在所有模式(单/多用户)下对所有文件与程序拥有一切权限的用户(也即超级用户)的约定俗成的通名。

二、创建新用户

root账号的权限是非常大的,所以在我们第一次登录了root账号之后,我们就应该准备一个新账号,以后登录就使用这个新账号。所以接下来的步骤我们准备创建一个新用户。

例如我要创建一个名为”leon”的新用户。

adduser leon

确认之后,我们需要先给账户设置一个密码。之后系统会问我们一些信息,包括全名,家庭电话,工作电话等等。如果可以的话,给账户设置一个强度较高的密码并且记住,也可以选择性的留下你的其他信息。

三、赋予root权限

我们刚刚创建的leon是一个常规账户权限的账户,但是我们在日常的使用中可能需要超级管理员的权限,使用这一权限的方法是在命令前加上sudo,例如:

sudo vi /etc/hosts

为了避免权限不够的情况,我们要酌情的给一些确实需要并且值得信任的账户root权限,当我们使用root账户登录时这样操作,

usermod -aG sudo leon

现在我们的用户leon就已经有了运行超级用户权限的命令。

四、使用ssh来登录服务器

使用ssh密钥来登录服务器可以很好的提高服务器的安全性,这个操作我在之前的博客里已经写过,在这里我就贴个链接吧。

使用ssh-key免密码登录服务器

在完成ssh登录服务器的配置之后,我们来说说怎么禁用密码的验证方式来提高服务器的安全性。

五、设置禁用密码登录

如果我们允许服务器能通过密码验证登录的话,那么任意一个得到我们账号密码的坏人,就可能登录到服务器上进行破坏性的操作。所以为了服务器的安全考虑,我推荐大家禁止使用密码验证的方式来登录服务器。毕竟我们在信任的电脑上已经配置了ssh-key了。

警告⚠️:一定要配置好ssh-key能够登录服务器了,才执行这一步的操作,否则你的服务器就永远登录不上去了,只能重装恢复了,可能会导致数据丢失。

使用root账户或者sudo命令,打开ssh的配置文件:

sudo vi /etc/ssh/sshd_config

查找Passwordauthentication选项,删除他前面的注释#,然后将他的值改为no

# sshd_config 禁用密码登录设置
PasswordAuthentication no

接下来找到如下两个配置,如果跟我下面保持一致,则不更改,否则更改为一致,默认配置就是如下的值:

PubkeyAuthentication yes

ChallengeResponseAuthentication no

当你完成这些更改后,保存并使用, 使用:wq保存退出。

重启ssh的程序

sudo systemctl reload sshd

现在密码验证就已经关闭了,你只能使用ssh来进行身份验证。

在你退出这个登录连接之前,最好开一个新窗口,对自己的配置进行验证,首先确认ssh可以成功登录,免得等一下无法登录,再尝试使用另一个账号来登录服务器,如果拒绝了密码访问,那么我们的配置就成功了。

六、设置防火墙

Ubuntu 16.04服务器可以使用UFW防火墙来确保只允许与某些服务的连接。我们可以很容易地使用这个应用程序设置基本的防火墙。

不同的应用程序可以在安装时向UFW注册其配置文件。这些配置文件允许UFW按名称管理这些应用程序。 OpenSSH,该服务允许我们现在连接到我们的服务器,已在UFW注册了一个配置文件。

您可以通过键入以下内容查看此内容:

sudo ufw app list

可以看到以下内容

Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

我们需要确保防火墙允许ssh连接,所以我们通过如下命令来允许这些连接:

sudo ufw allow OpenSSH

使用如下命令来启用防火墙:

sudo ufw enable

我们也可以自行查看防火墙的状态:

sudo ufw status

可以看到:

Status: active

To                         Action      From
--                         ------      ----
Apache Full                ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
Apache Full (v6)           ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

例如iOS的api接口,微信小程序的配置需要使用https协议,那我们要打开443的端口访问,可以使用如下命令打开端口:

sudo ufw allow 443 允许外部访问443端口

到这里我们的服务器的基本配置也就已经完成了,接下来就可以单独为数据库打造安全访问的配置了。

Search

    Table of Contents