X
X
发布于 2023-12-04 / 17 阅读
0
0

服务器初始化

背景

买了一台新的云服务器,拿到了root用户名和密码,记录下一些初始化工作

登录服务器

我用的是iTerm2,用root用户ssh登录服务器,如果是在新电脑上首次登录服务器的话,会提示服务器的指纹信息,让你确认是否继续连接,输入yes确认下,然后输入密码回车

密码正确登录成功之后,系统会在你电脑上保存服务器的公钥指纹信息(默认路径是~/.ssh/known_hosts),这样下次再登录这台服务器时,你的电脑发现这台服务器是老熟人,就不用确认了

❯ ssh root@123.123.123.123
The authenticity of host '123.123.123.123 (123.123.123.123)' can't be established.
ED25519 key fingerprint is SHA256:znxptixxxxxxxxxxxxxxxxxxx7w.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '123.123.123.123' (ED25519) to the list of known hosts.
root@123.123.123.123's password:

登录失败记录

如果有人尝试登录你的服务器失败的话,登录信息会告诉你从上次成功登录之后有多少次失败的记录(这里是47次),一般就是被扫描端口,尝试弱口令了。你可以用 lastb 命令查看之前登录失败的记录,失败记录太多的话会刷很久的屏,你可以使用 lastb | more 来分页查看登录失败记录

Last failed login: Thu Nov 23 10:31:50 CST 2023 from 1.2.3.4 on ssh:notty
There were 47 failed login attempts since the last successful login.
Last login: Wed Nov 22 23:03:04 2023 from 1.1.1.1

修改主机名

我有好几台服务器,登录之后为了避免混淆,一般会修改服务器的主机名: 即root@ 后面的 VM-4-2-centos

# 比如我改成 4c8g12m
[root@VM-4-2-centos ~]# hostnamectl set-hostname 4c8g12m
# 修改一下/etc/hosts里的主机名
[root@VM-4-2-centos ~]# sed -i 's/VM-4-2-centos/4c8g12m/g' /etc/hosts

# 然后重启一下服务器 生效
[root@VM-4-2-centos ~]# reboot -f

# 重启之后 再次ssh登录就显示修改之后的主机名(4c8g12m)了
[root@4c8g12m ~]#

新建用户

在Linux系统里,root用户拥有最高的权限。系统会无条件执行,即使你让它自我毁灭。切记不要执行以下命令

# 切记不要执行这条命令
[root@4c8g12m ~]# rm -rf /

因此为了减少误操作的风险,我们日常使用会新建一个普通用户,然后在需要root相关权限的时候,再临时提高权限

[root@4c8g12m ~]# useradd duoduo

这里添加了一个叫duoduo的用户名,背后默认建立一个叫duoduo的用户组,并且设置了用户目录是/home/duoduo

可以在/etc/passwd的最后一行看到新增的用户: duoduo

[root@4c8g12m ~]# cat /etc/passwd |tail -2
lighthouse:x:1000:1000::/home/lighthouse:/bin/bash
duoduo:x:1001:1001::/home/duoduo:/bin/bash

然后设置密码

[root@4c8g12m ~]# passwd duoduo
更改用户 duoduo 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 它基于字典单词
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@4c8g12m ~]#

我设置的密码比较简单,系统给了提醒,忽略,输入两次密码之后,设置成功

提升权限

给新用户一个提升权限的方式,即给sudo权限

# 第一种方式 使用 vim /etc/sudoers

#第二种方式 直接使用visudo 命令

然后模仿root 那一行,新增一行。多出来的NOPASSWD: 意思是当我使用sudo命令时,不需要输入密码

如果通过vim /etc/sudoers 方式修改文件,即使是root用户,再保存的时候:wq! 也要记得加上!,表示强制保存

安全防护

使用密钥登录

你自己的电脑上使用 ssh-copy-id 命令,复制你的公钥到服务器的duoduo用户名下,默认会把公钥拷贝到服务器的 /home/你的用户名/.ssh/authorized_keys 文件里

❯ ssh-copy-id -i .ssh/id_rsa.pub duoduo@123.123.123.123

在服务器端修改sshd的配置,使支持密钥登录

[root@4c8g12m ~]# vim /etc/ssh/sshd_config

如果默认无法使用密钥登录,请打开此项配置;修改为yes 或者去掉前面的注释
PubkeyAuthentication yes

# 禁止密码登录
PasswordAuthentication no

# 禁止root登录
PermitRootLogin no

保存退出 :wq

重新加载下ssh的配置文件
[root@4c8g12m ~]# systemctl reload sshd

这个时候,你就可以直接使用指定密钥登录服务器,不需要输入密码

❯ ssh -i .ssh/id_rsa duoduo@123.123.123.123
[duoduo@4c8g12m ~]$

修改端口

为了防止服务器上无时无刻不在的恶意扫描,我们修改一下SSH默认端口,这里随机高位端口 22222

[root@4c8g12m ~]# vim /etc/ssh/sshd_config

# 为了防止被扫 修改一下默认端口,随机高位端口
Port 22222

保存退出 :wq

重新加载下ssh的配置文件
[root@4c8g12m ~]# systemctl reload sshd

为了更简单方便的登录,我在本地电脑的.ssh/config里配置了:

  • 服务器的别名:4c8g

  • 服务器的用户名:duoduo

  • 服务器的端口:22222

  • 服务器的IP:123.123.123.123

  • 密钥的路径:~/.ssh/id_rsa

打开防火墙

如果你的云服务器厂商有防火墙的话,登录云厂商打开新端口(这里示例端口为:22222)的防火墙

以腾讯云举例:https://cloud.tencent.com/document/product/1207/44577

然后你就可以直接用服务器的别名登录服务器

❯ ssh 4c8g
Last login: Thu Nov 23 20:14:42 2023 from 1.1.1.1
[duoduo@4c8g12m ~]$

如果你的云服务厂商没有限制端口,但是你的服务器有设置防火墙firewall,可以自助打开对应端口,这里是centos7的操作方式

1.开启端口22222
[duoduo@4c8g12m ~]$ firewall-cmd --zone=public --add-port=22222/tcp --permanent

2.重启防火墙
[duoduo@4c8g12m ~]$ firewall-cmd --reload

3.查看已经开放的端口
[duoduo@4c8g12m ~]$ firewall-cmd --list-ports



评论