上手Linux:提高安全性:改用户,改端口,改密码

502 阅读4分钟

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第2篇文章,点击查看活动详情

sshd 服务

在 Linux 操作系统上,所有的软件都是以进程的方式提供服务。要使用一个命令,必然有一个在后台运行着的服务。比如使用 systemctl 命令,对应的就是 systemd 服务。而使用 ssh 方式登录,背后就是 sshd 服务。

sshd 服务使用 SSH 协议,可以用来进行远程控制, 或在计算机之间传送文件,相比较之前用 telnet 方式来传输文件要安全很多,因为telnet使用明文传输,ssh是加密传输。

本文,来讲述一些 sshd 服务的配置,帮助打造一个更安全的服务器环境。

拿到新服务器的第一步,出于安全考虑,先禁用掉 root 用户修改默认的 22 端口号

这是因为所有 linux 系统默认的管理员用户名就是 root默认的 SSH 协议通信端口就是 22

如果有黑客尝试暴力破解,又如果你的口令设置的很简单,那么很容易就会置于不安全的环境。

创建一个普通用户,并实现 SSH 免密登录

创建新用户

先使用 root 用户登录到服务器,使用 useradd 命令创建一个用户账号:

# 创建一个新用户
useradd kunwu
​
# 给用户设置密码。注意密码中不能包含用户名。
passwd kun

image-20220810150227964

使用 useradd 命令创建的用户帐号,会保存在 /etc/passwd 文件中。

查看下刚才新添加的用户的记录:

[root@ecs-221238 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
...... 
kunwu:x:1000:1000::/home/kunwu:/bin/bash

此时在本地可以以 kunwu 的身份,去登陆服务器了,但是还是需要密码:

image-20220810151342524

本地计算机创建 SSH 密钥并部署到服务器

如果本地电脑已经生成过 SSH 密钥,可以直接用。如果还没有,下面的步骤都可以参考上文。

在本地计算机,生成一对 SSH 密钥:

ssh-keygen -t rsa

将 SSH 公钥,以 kunwu 的用户身份部署到服务器上,配置免密登录:

ssh-copy-id kunwu@<服务器 IP>

image-20220810151608370

之后,在本地计算机中,就可以使用 kunwu 进行免密登录了:

ssh kunwu@<服务器 IP>

image-20220810151733161

现在可以使用一个 普通用户登录实现免密登录了,但是普通用户不具备管理员权限,所以接下来要给这个普通用户赋予管理员的权限。

配置 kunwu 用户支持 sudo 命令

使用 root 用户登录服务器,配置 kunwu 支持 sudo 命令

vim /etc/sudoers

找到 "Allow root to run any commands anywhere "这一行:

image-20220810152108910

i 进入编辑模式,会提示该文件只读,是否确认修改:

image-20220810152220141

继续修改,新添加一行配置:

image-20220810152301892

然后保存退出,会再次提示是只读文件,要使用 ! 强制保存:

image-20220810152407849

image-20220810152453608

到这里,就创建好了一个具有管理员权限的用户。

本地电脑使用 kunwu 用户登录,尝试使用 sudo 命令。

普通用户是无法访问 root 目录的:

image-20220810152705580

使用 su 命令切换为管理员身份,切换时是需要输入用户密码的:

su - kunwu

image-20220810152857341

现在 kunwu 就具备了 root 用户的权限了。

修改 sshd 的配置

现在到了重头戏了。

使用 root 用户,编辑 sshd 服务的配置文件:

vim /etc/ssh/sshd_config

主要修改三个地方:

  1. 禁用 root 用户登录。PermitRootLogin no
  2. 修改 22 端口为其他。Port 23456
  3. 禁用密码登录。只支持受信任的机器通过 SSH 公钥免密登录。PasswordAuthentication no

找到这几个地方,打开注释并修改掉:

image-20220810154330782

image-20220810154247083

然后保存退出。

一般情况下,个人的服务器不需要这么严格的配置,难免有使用其他机器登录服务器的时候,所以我只修改了禁止 root 登录和端口号,并没有禁止掉使用密码登录。这个配置视需求而定。

重启 sshd 服务

修改完配置,需要重启 sshd 服务。

systemctl restart sshd

注意事项:修改 sshd 配置文件时,一定要小心。如果语法出现错误,sshd 服务会退出,此时只能去云服务器控制台中远程登录解决了。

这之后,需要重新配置一番,到云服务器控制台安全组中开放新的23456端口,并且以后再登录服务器,只能使用 kunwu 用户了

在使用 ssh 命令时,需要通过 -p 来指定新的端口号了:

ssh kunwu@<服务器 IP> -p 23456

image-20220810160003494

使用 root 用户,或者使用默认的 22 端口号,都会报错:

image-20220810160116846

这样,基本上就避免了黑客通过暴力破解的方式,使用 root 用户通过 22 端口登录服务器。

小结

对于个人使用的服务器,一般设置一个新的端口号,禁止使用 root 用户登录就足够了。

设置的过程有些繁琐,需要在多个环境中,多个用户身份中切来切去,一定要耐心。