Skip to content

Ubuntu 16.04服务器的初始化设置 #107

Description

@originalix

最近在服务器的安全性这个问题上吃了点亏,于是决定写几篇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端口

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions