最近在服务器的安全性这个问题上吃了点亏,于是决定写几篇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登录服务器的配置之后,我们来说说怎么禁用密码的验证方式来提高服务器的安全性。
五、设置禁用密码登录
如果我们允许服务器能通过密码验证登录的话,那么任意一个得到我们账号密码的坏人,就可能登录到服务器上进行破坏性的操作。所以为了服务器的安全考虑,我推荐大家禁止使用密码验证的方式来登录服务器。毕竟我们在信任的电脑上已经配置了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端口
到这里我们的服务器的基本配置也就已经完成了,接下来就可以单独为数据库打造安全访问的配置了。