CentOS8-Boot镜像安装

1. CentOS8介绍

CentOS(Community Enterprise Operating System,社区企业操作系统)是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本,以高效、稳定著称。

因为CentOS8之后不再提供Minimal版镜像,只有网络版Boot和完整版DVD,网络版在安装前需要额外配置网络和下载源,才能够执行最小化的操作系统安装。

  • CentOS 操作系统官方下载地址:Download (centos.org)
  • CentOS 8 镜像列表:CentOS8 Mirrors List(DVD,Boot)

2. 系统安装(网络)

下面是演示在VMware Workstation软件中安装CentOS8-Stream操作系统。预先将系统镜像挂载至新建的虚拟机上,以UEFI的启动方式启动。

2.1. 系统软件安装

2.1.1 此时选择“Install CentOS Stream 8”的选项,进行下一步安装。

CentOS8-Boot镜像安装_第1张图片

2.1.2. 选择语言后进入系统安装的主页面,配置网络下载安装源,硬盘分区和root密码设置。

CentOS8-Boot镜像安装_第2张图片

2.1.3. 开启网卡(默认网卡禁用),开启后默认是DCHP获取IP地址。

CentOS8-Boot镜像安装_第3张图片

2.1.4. 网络连接正常后,配置国内的安装源(默认为空)。

#阿里源:
https://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/
#清华源:
https://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/BaseOS/x86_64/os/

CentOS8-Boot镜像安装_第4张图片

2.1.5. 配置国内的安装源后,进入“软件选择”。

CentOS8-Boot镜像安装_第5张图片

2.1.6. 选择“最小安装”,随后再次选择 “标准安装” 和 “开发工具”。(图形化UI是不需要的)

CentOS8-Boot镜像安装_第6张图片

2.2. 磁盘分区设置

2.2.1 进入安装目录,进项硬盘自定义分区。

CentOS8-Boot镜像安装_第7张图片
2.2.2 选择自定义配置存储,随后点击左上方Done按钮吗,开始自定义分区。

CentOS8-Boot镜像安装_第8张图片

2.2.3 以“标准分区”的方式创建硬盘分区,左下方 + 按钮创建分区。(默认的LVM分区扩容也是可以的,两种分区的磁盘扩容会在后续的文章提及。)

CentOS8-Boot镜像安装_第9张图片

2.2.4 创建boot启动分区、boot\efi引导分区、swap分区以及 / 根目录。
值得注意的是:虚拟机的固件类型是UEFI引导,则需要额外配置/boot/efi分区。

CentOS8-Boot镜像安装_第10张图片

2.3. 完成系统设置

2.3.1 设置操作系统的root用户的密码。

CentOS8-Boot镜像安装_第11张图片

2.3.2 最后完成设置,并开始安装Centos8。

CentOS8-Boot镜像安装_第12张图片

2.3.3 CentOS根据配置的安装源(网络),下载需要的软件包并下载安装,耐心等待系统配置完成后,重启系统即可。

CentOS8-Boot镜像安装_第13张图片

2.3.4 CentOS 8系统重启后,界面显示系统版本信息(内核信息)

CentOS8-Boot镜像安装_第14张图片

3. 网络配置说明

CentOS 8默认只能通过NetworkManager.service(简称NM)进行网络配置,没有传统的network.service。

NM服务是管理和监控网络设置的守护进程,它是一个动态的,事件驱动的网络管理服务。NM服务可以通过多种方式进行管理,如:命令 (nmcli) 、文本界面 (nmtui) 、图形界面 (nm-connection-editor) 等,现在RedHat系、Suse系、Debian/Ubuntu系,均支持NM服务。

3.1. 网络管理命令

3.1.1 nmcli 查看ip地址类

#1、nmcli(查看ip地址类,似于ifconfig、ip addr)
[root@localhost ~]# nmcli

CentOS8-Boot镜像安装_第15张图片

3.1.2 nmcli connection 查看网络连接信息

#2、nmcli connection(查看网络连接信息,查看网卡的配置文件,简写为:nmcli c)
[root@localhost ~]# nmcli c

在这里插入图片描述

3.1.3 nmcli device 查看接口信息

#3、nmcli device (查看接口信息,查看存在的网卡,简写为:nmcli d)
[root@localhost ~]# nmcli d

#接口信息有4种常见状态:
# - connected:		已被NM纳管,并且当前有活跃的网络连接(带颜色字体)
# - disconnected:	已被NM纳管,但是当前没有活跃的网络连接(正常字体)
# - unmanaged:		未被NM纳管
# - unavailable:	不可用,NM无法纳管,通常出现于网卡link为down的时候

在这里插入图片描述

3.2. 网卡配置操作

CentOS 8系统中的网卡配置,无法通过systemctl或者service命令重启网卡,网卡服务由nmcli进行管理和配置。

#1、修改网卡配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160

#2、重新加载网卡配置
[root@localhost ~]# nmcli connection reload ens160

#3、重启网卡
[root@localhost ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

#4.查看网卡配置
[root@localhost ~]# nmcli -f ip4 connection show ens160
IP4.ADDRESS[1]:                         192.168.233.134/24
IP4.GATEWAY:                            192.168.233.2
IP4.ROUTE[1]:                           dst = 192.168.233.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.168.233.2, mt = 100
IP4.DNS[1]:                             114.114.114.114
IP4.DNS[2]:                             233.5.5.5

网卡配置文件参考:

TYPE=Ethernet
#BOOTPROTO=dhcp
BOOTPROTO=static
DEFROUTE=yes
IPADDR=192.168.233.134
NETMASK=255.255.255.0
GATEWAY=192.168.233.2
DNS1=114.114.114.114
DNS2=233.5.5.5
ONBOOT=yes

4. 服务配置调整

4.1. SSH端口变更

调整SSH端口是为了增加系统的安全性。默认情况下,SSH服务使用22端口进行通信,这使得系统容易受到暴力破解和恶意攻击。

通过修改SSH端口,可以减少攻击者对系统的扫描和尝试登录的可能性。因为攻击者通常会扫描常用端口来找到目标系统。通过将SSH端口修改为一个不常用的端口,可以降低被攻击的风险。

注意:SSH端口变更时先保留ssh的22端口监听,防止因配置或权限问题导致22端口也无法访问,新增的SSH端口测试正常后,再关闭22端口。

#1、查看SELinux开放给ssh使用的端口
[root@localhost ~]# semanage port -l|grep ssh
ssh_port_t                     tcp      22

#2、在SELinux上添加新的ssh使用的端口51423
[root@localhost ~]# semanage port -a -t ssh_port_t -p tcp 51423

#3、查看firewall是否开放51423的端口,no是没有放开
[root@localhost ~]# firewall-cmd --permanent --query-port=51423/tcp
no

#4、在firewall上开放51423端口
[root@localhost ~]# firewall-cmd --permanent --add-port=51423/tcp
success

#5、重新加载firewall
[root@localhost ~]# firewall-cmd --reload
success

#6、将ssh配置文件的默认端口注释取消
[root@localhost ~]# sed -i -e 's/#Port 22/Port 22/g' /etc/ssh/sshd_config

#7、在ssh配置文件增加一行ssh端口
[root@localhost ~]# sed -i '/Port 22/a\Port 51423' /etc/ssh/sshd_config

#8、重新加载ssh服务
[root@localhost ~]# systemctl restart sshd

#9、查看端口监听的信息
[root@localhost ~]# ss -tnl 
State        Recv-Q       Send-Q             Local Address:Port              Peer Address:Port       Process       
LISTEN       0            128                      0.0.0.0:51423                  0.0.0.0:*                        
LISTEN       0            128                      0.0.0.0:22                     0.0.0.0:*                        
LISTEN       0            128                         [::]:51423                     [::]:*                        
LISTEN       0            128                         [::]:22                        [::]:*             

#10、在该服务器直接本地访问SSH
[root@localhost ~]# ssh root@localhost -p 51423
The authenticity of host '[localhost]:51423 ([::1]:51423)' can't be established.
ECDSA key fingerprint is SHA256:/+vmg//YZzZ34LPiW3+l2ZxWGQyaQ3ONFv8xEqUEBHE.

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[localhost]:51423' (ECDSA) to the list of known hosts.

root@localhost's password: 
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Tue Sep 19 03:25:23 2023 from 192.168.233.1
[root@localhost ~]# 
[root@localhost ~]# exit
logout
Connection to localhost closed.

#11、重新注释ssh配置文件的默认端口22
[root@localhost ~]# sed -i -e 's/Port 22/#Port 22/g' /etc/ssh/sshd_config

#12、在firewall上关闭22端口的访问
[root@localhost ~]# firewall-cmd --permanent --remove-port=22/tcp
Warning: NOT_ENABLED: 22:tcp
success

#13、重新加载ssh服务和firewall
[root@localhost ~]# systemctl restart sshd
[root@localhost ~]# firewall-cmd --reload

4.2. 调整系统时区

#1、查看是否存在上海时区,新版本Centos才有timedatectl命令
[root@localhost ~]# timedatectl list-timezones | grep Asia/Shanghai
Asia/Shanghai

#2、设置系统时区为上海
[root@localhost ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

4.3. 调整历史命令记录

CentOS系统默认会保留最近的1000条的历史命令,默认情况下查看历史记录是没有时间日期的。

#1、增加历史记录的环境配置
[root@localhost ~]# tee </etc/profile.d/history.sh
export HISTSIZE=500  						# 设置历史命令记录的最大行数
export HISTFILESIZE=10000  					# 设置历史命令记录文件的最大大小
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "  # 设置历史命令记录的时间格式
EOF

#2、重新加载环境变量
[root@localhost ~]# source /etc/profile

5. 网络安全设置

一般情况下当我们将系统初始化完成后会禁用root用户远程SSH访问,再次远程登录时使用其他用户登录至服务器。我们想要的效果:jungout用户通过 private-key + 密码短句 方式远程服务器,再通过sudo命令获取最高权限。

5.1. 创建系统用户

#1、创建一个用户(jungout)
[root@localhost ~]# sudo adduser jungout

#2、将新用户添加到wheel组以获得sudo权限(此时jungout用户没有设置密码)
[root@localhost ~]# sudo usermod -aG wheel jungout

#3、设置jungout用户的密码
[root@localhost ~]# passwd jungout

#4、修改/etc/sudoers文件,让wheel组输入sudo命令免密(wq!强制保存)
[root@localhost ~]# vim /etc/sudoers
# %wheel  ALL=(ALL)       NOPASSWD:ALL

5.2. rsa密钥登录配置

配置密钥登录可以提高服务器的安全性,并提供更方便的登录方式。

接下开设置jungout用户的密钥登录,管理人员通过SSH的“密钥”和“短语”远程登录服务器的wheel用户,用户通过sudo命令切换至root权限。

登录jungout用户,生成SSH密钥对。(路径:/home/jungout/.ssh/id_rsa)

#1、切换至jungout用户
[root@localhost ~]# su - jungout

#2、在本地计算机生成密钥对,包括公钥和私钥。
[jungout@localhost ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jungout/.ssh/id_rsa): /home/jungout/.ssh/jungout # 输入的密钥命名为jungout,公钥默认生成为jungout.pub
Created directory '/home/jungout/.ssh'.
Enter passphrase (empty for no passphrase): #输入密码短语
Enter same passphrase again: 				#确认密码短语
Your identification has been saved in /home/jungout/.ssh/id_rsa.
Your public key has been saved in /home/jungout/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:9cVnAGvBDQwoK+ju1Iz3sYMQHMa8nJ6JFM2roPhNvyc [email protected]
The key's randomart image is:
+---[RSA 3072]----+
| oo      ..+++.  |
| .=o  . .   o+.. |
| +.=.  o  . o o o|
|..B.. .  . o . o |
|=+.+ .  S   .    |
|+.*+.            |
| oo++o.          |
| .o.o.Eo.        |
| ..   +=         |
+----[SHA256]-----+'

#2、将新建的公钥文件复制并重命名为:authorized_keys
[jungout@localhost ~]$ cp .ssh/jungout.pub .ssh/authorized_keys

#3、切换回root用户
[jungout@localhost ~]$ exit
[root@localhost ~]# 

#4、开启密钥认证登录,将PubkeyAuthentication项改为yes(不用关闭密码登录,万一配置错误无法登录)
[root@localhost ~]# sed -i -e 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config

#5、重新加载ssh服务(记得先将公钥和私钥下载保存于本地)
[root@localhost ~]# systemctl restart sshd

#6、本地测试ssh密钥登录(记得先将公钥和私钥下载保存于本地)
[root@localhost ~]# ssh -i /home/jungout/.ssh/jungout jungout@localhost -p51423
Enter passphrase for key '/home/jungout/.ssh/jungout': 
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Mon Dec 11 11:16:36 2023 from ::1
[jungout@localhost ~]$ 

#6.关闭ssh服务的密码登录项,将PasswordAuthentication项改为no(记得先将公钥和私钥下载保存于本地)
[root@localhost ~]# sed -i -e 's/PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config

#7、再次重新加载ssh服务
[root@localhost ~]# systemctl restart sshd

5.3. 禁止root用户远程

为了增加系统的安全性,建议禁用root用户直接登录。需要创建非root用户ssh登录至服务器,否则是没有人可以登录至服务器。

#1、禁用root远程SSH登录,将PermitRootLogin项改为no
[root@localhost ~]# sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config

#2、重新加载ssh服务
[root@localhost ~]# systemctl restart sshd

5.4. 自动注销和禁ping

#1.禁止其他设备ping
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

#2.解除禁止ping
[root@localhost ~]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all   

#3.增加自动注销的环境配置文件
tee <<EOF >/etc/profile.d/timeout.sh
export TMOUT=300 #5分钟后自动注销
EOF
source /etc/profile	#重新加载环境变量

你可能感兴趣的:(Linux操作系统管理,linux,ssh)