服务器初始化那些操作(一)——安全初始化配置

一. 前言

最近刚买了一台云服务器,在做服务器配置的时候,掏出多年前的笔记开始操作,虽然有些操作我自己知道的,但是确实笔记上的东西有些地方过时了。所以我就在想,嘿,为什么不重新整理下我的笔记和一些新的点,写一波新的笔记呢。

因此,这是一个分享服务器初始化操作的系列。由于个人倾向于使用Ubuntu,所以本系列中文章都将使用Ubuntu 22.04 LTS(当前最新LTS版本)来分享,若读者使用的是其它Linux系统,也都有相同作用的相应操作,还需自行查阅一下。

那么,下面进入本篇文章正题。

当我拿到一个新的服务器后,要做的第一件事就是进行安全初始化配置。服务器在公网被各种扫描和爆破都是家常便饭了,服务器的安全是极其重要的事!

当前我的环境是一台全新原生的ubuntu 22.04 LTS,那么咱们一步步来吧。

二. 创新普通用户

当然这一步是可选的,有的时候默认就存在一个普通用户账号和root账户,比如云服务。

此处,我首次进入服务器,只有一个root用户,所以我需要创建一个普通用户账户来进行日常操作。

对于服务器,日常操作还是建议使用普通用户来登录和操作,不要图省事直接使用root用户!

首先,创建一个普通用户hunter

bash 复制代码
$ adduser hunter
Adding user `hunter' ...
Adding new group `hunter' (1000) ...
Adding new user `hunter' (1000) with group `hunter' ...
Creating home directory `/home/hunter' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for hunter
Enter the new value, or press ENTER for the default
	Full Name []: hunter
	Room Number []: hunter
	Work Phone []:       
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] 

此时,已经创建成功,我们可以看一下/home目录下,已经存在hunter目录了。

bash 复制代码
$ ls /home/
hunter

接着,添加sudo权限。

bash 复制代码
$ usermod -aG sudo hunter

至此,已经创建普通用户完成。

最后,直接用普通用户hunter去登录,输入其密码,即可登录成功,并且拥有sudo权限。

三. 添加登录密钥

SSH 密钥登录是一种通过 SSH 协议连接到远程系统的方式,它使用一对公钥和私钥进行身份验证,而不是依赖于用户名和密码,其安全性更高。

1. 生成密钥

密钥需要在自己本地电脑生成并存储,并且一个公钥可以给多个服务器使用。此处,生成一个密钥,名为id_test_rsa

bash 复制代码
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_test_rsa -C "<your-email>"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/kuari/.ssh/id_test_rsa
Your public key has been saved in /Users/kuari/.ssh/id_test_rsa.pub
The key fingerprint is:
SHA256:ocGd0s+yW1v5/NjkojnzJtHmFrmfH6iV0Y5e8+HYTjU kuari@justmylife.cc
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|     . o .       |
|      + =        |
|       + +    .  |
|      . S o  o E.|
|         o  ..@ o|
|        . . oO X.|
|         o oB+%=*|
|        . ..o@*OO|
+----[SHA256]-----+

其中,需要关注的是:

  • -f参数-f参数指定密钥的名字和位置,一般位置可以就放在~/.ssh下,名字自定义。
  • -C参数-C参数指定邮箱,为注释用,你会在公钥中看到。当服务器公钥多了以后,就可以靠邮箱来区别。
  • 密钥使用密码:可以从执行过程中看到,有一个输入密码的过程,这个是配置密钥的使用密码。也就是说,登录服务器不用输入密码,因为密钥配对完成了验证,但是当使用该密钥连接时,需要输入该密钥的使用密码。因此,不用记多个服务器的密码,仅仅只要记一个密钥的使用密码即可。当然,也可以不设置,直接回车跳过。

执行完成后,将会生成两个文件,分别是一个私钥和一个公钥:

bash 复制代码
$ ls ~/.ssh
id_test_rsa     # 私钥
id_test_rsa.pub # 公钥

2. 服务器放入公钥

在服务器上,此处使用普通用户hunter(或者任何你需要的账户)登录。此处,会发现在~家目录中不一定有.ssh文件夹。

没关系,直接配创建即可,如何你有,那么就跳过。此处,还需要创建公钥需要的文件~/.ssh/authorized_keys,该文件也不一定有,没有也直接创建:

bash 复制代码
$ mkdir ~/.ssh
$ touch ~/.ssh/authorized_keys

创建完文件后,在本地复制刚刚创建的密钥中的公钥匙的内容,可以使用catvim等,直接复制即可。

然后,粘贴到服务器的~/.ssh/authorized_keys文件中,一行一个公钥。粘贴完就像这样:

bash 复制代码
$ cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAA<省略中间>8n7qWN8= <your-email>

3. 本地配置密钥登录

此时,使用ssh登录确实可以指定密钥登录,但是加一个配置文件可以省很多事。

直接打开(没有就创建)~/.ssh/config文件:

bash 复制代码
$ vim ~/.ssh/config

添加内容,如下是格式:

xml 复制代码
Host <自定义服务器名字>
      HostName <服务器公网ip或域名>
      User <登录用户名>
      Port <登录端口>
      IdentityFile <私钥文件地址>   

按照如上格式,添加内容:

javascript 复制代码
Host baidu.com
      HostName 192.168.10.10
      User hunter
      Port 22
      IdentityFile ~/.ssh/id_test_rsa   

那么保存一下,就配置好了。

此时,很快啊,直接使用ssh baidu.com,就可以直接连接了,用户名和密码什么的就完全不需要了!

四. 关闭密码登录

该步骤是可选的,但是你也不想每次打开登录日志,发现ssh端口被疯狂爆破吧?服务器在公网上的话,这些都是日常了...

关闭密码登录是直接极端堵死,安全性更高。

打开ssh配置文件:

bash 复制代码
$ vim /etc/ssh/sshd_config

添加或修改配置为PasswordAuthentication no

然后重启ssh服务:

bash 复制代码
$ systemctl restart ssh

六. 更改默认ssh端口

同样地,为了提高安全性,可以将默认的ssh端口更改为高端口。很多自动化攻击工具和脚本都默认扫描22端口来找寻SSH服务,改为高端口能有效减少这种无目标的攻击尝试。但是,这也不是绝对的,对服务器的端口进行扫描,也是可以扫描出ssh端口的。所以,更改默认ssh端口,只能避免部分恶意扫描和ssh登录。后续文章将来继续针对这个问题来分享一些操作。

Linux默认的ssh端口是22,此处将其改为高端口,比如9527。/笑

需要提醒一下,在执行如下操作前,请确保你的服务器的防火墙、安全组规则配置等等对你需要操作的高端口比如9527是开放的。以前我就干过这种蠢事(个人服务器),改了ssh端口后退出了,结果改后的ssh端口根本没开放...

首先,打开ssh配置文件:

bash 复制代码
$ vim /etc/ssh/sshd_config

接着,找到#Port 22这一行,取消注释(删除前面的#),并将22更改为希望使用的端口号,此处使用9527:

yaml 复制代码
Port 9527

最后,重启一下ssh服务:

bash 复制代码
$ systemctl restart ssh

此处,还需要改一下文章上述提到的本地的ssh配置文件,将Portssh端口改成新的端口。

此时,默认的ssh端口22就没有任何服务了。

七. 结语

本篇文章分享了拿到服务器后的安全初始化操作,除此以后,还需要注意的是对于操作系统的版本的更新要及时,特别留意一些版本的安全补丁。

本系列文章中,我将继续分享关于服务器初始化的操作,除了提升服务器的安全性,还有进一步地提升安全操作、提升服务器的操作便捷性、服务器的简单性能监控和异常报警等。

相关推荐
weixin_437044641 小时前
Netbox批量添加设备——堆叠设备
linux·网络·python
hhy_smile1 小时前
Ubuntu24.04 环境配置自动脚本
linux·ubuntu·自动化·bash
宴之敖者、1 小时前
Linux——\r,\n和缓冲区
linux·运维·服务器
LuDvei1 小时前
LINUX错误提示函数
linux·运维·服务器
未来可期LJ2 小时前
【Linux 系统】进程间的通信方式
linux·服务器
Abona2 小时前
C语言嵌入式全栈Demo
linux·c语言·面试
心理之旅2 小时前
高校文献检索系统
运维·服务器·容器
Lenyiin2 小时前
Linux 基础IO
java·linux·服务器
The Chosen One9852 小时前
【Linux】深入理解Linux进程(一):PCB结构、Fork创建与状态切换详解
linux·运维·服务器
Kira Skyler3 小时前
eBPF debugfs中的追踪点format实现原理
linux