母盘设定(rhel9.6)

1.关闭并禁用 firewalld 防火墙服务

bash 复制代码
[root@localhost ~]#  systemctl disable --now firewalld.service     #立即停止并禁用 firewalld 服务;
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
[root@localhost ~]# systemctl mask firewalld.service     屏蔽 firewalld 服务,防止它被意外启动;
Created symlink /etc/systemd/system/firewalld.service → /dev/null.
[root@localhost ~]# reboot     #重启刷新防火墙状态;
[root@localhost ~]# systemctl status firewalld.service  #查看防火墙状态;
○ firewalld.service
     Loaded: masked (Reason: Unit firewalld.service is masked.)
     Active: inactive (dead)   #处于关闭状态;

2.完全禁用 SELinux

bash 复制代码
[root@localhost ~]# vim /etc/sysconfig/selinux     # 进入SELinux 的配置文件(/etc/selinux/config),并且编辑SELINUX=disabled;

作用:

优:

  • 某些应用程序运行更顺畅,不会因权限问题报错

  • 简化系统管理,减少权限相关的故障排查

劣:

  • 失去强制访问控制(MAC)保护

  • 进程以传统 Linux 权限(DAC)运行,安全性降低

  • 如果服务被入侵,攻击者更容易横向移动

bash 复制代码
[root@localhost ~]# reboot     #重启刷新SELinux状态;
[root@localhost ~]# getenforce     #查看SELinux状态;
Disabled    #处于完全禁用状态;

3.传统网卡命名

bash 复制代码
[root@localhost ~]# vim /boot/loader/entries/85f3e750b4e741bba69c3730fd8505e6-5                                                            .14.0-570.12.1.el9_6.x86_64.conf     #编辑系统启动的加载信息文件,并且在最长的一行后写入net.ifnames=0启用传统网卡命名;
bash 复制代码
[root@localhost ~]# reboot     #重启刷新网卡命名;

4.本地仓库搭建

bash 复制代码
[root@localhost ~]# cd /etc/yum.repos.d/  #进入 yum 仓库配置目录;
[root@localhost yum.repos.d]# ll  #查看目录内容(total 0 表示为空)
total 0
[root@localhost yum.repos.d]# vim rhel.repo  #创建并编辑本地仓库配置文件,内容如下:
[AppStream]                               # 仓库ID标识,方括号内为唯一标识符
name = AppStream                          # 仓库描述名称,可自定义显示名称
baseurl = file:///rhel/AppStream          # 软件包来源地址,file://表示本地文件系统,路径为/rhel/AppStream
gpgcheck = 0                              # 禁用GPG签名验证,0表示不检查软件包签名(生产环境建议设为1)

[BaseOS]                                  # 仓库ID标识,基础操作系统仓库
name = BaseOS                             # 仓库描述名称
baseurl = file:///rhel/BaseOS             # 本地基础系统软件包路径,指向挂载的ISO镜像中BaseOS目录
gpgcheck = 0                              # 禁用GPG签名验证,简化离线环境配置(有安全风险)
[root@localhost ~]# mkdir /rhel   #创建挂载点目录;
[root@localhost ~]# mount /dev/cdrom /rhel/    #挂载光盘到 /rhel 目录;
mount: /rhel: WARNING: source write-protected, mounted read-only.
[root@localhost ~]# vim /etc/rc.d/rc.local   #编辑开机启动脚本,并且写入mount /dev/cdrom  /rhel/启用开机自动挂载;

5.自定义网卡IP、主机重命名和选择是否需要网关路由

bash 复制代码
[root@localhost ~]# vim /bin/vmset.sh     #创建虚拟机网络配置脚本在系统二进制命令目录,存放可执行程序;
#!/bin/bash
[ "$#" -lt "3" ] && {                                          # 检查参数数量是否小于3个,$#表示传入的参数个数
  echo "error!!"                                               # 参数不足时输出错误信息
  exit                                                         # 退出脚本执行
}
CONNECTION=`nmcli connection show | awk "/$1/"'{print $1}'|grep $1`   # nmcli connection show显示所有网络连接,awk过滤匹配第一个参数的连接名,grep确认是否存在
[ "$?" -ne "0" ] && {                                          # 检查上条命令退出状态,$?表示上个命令的返回值,-ne表示不等于0(即未找到连接)
  echo "$1" is in used !!                                      # 提示该连接名已被使用
  nmcli connection delete $CONNECTION                            # nmcli connection delete删除已存在的网络连接
}
[ "$4" = "noroute" ] && {                                      # 判断第四个参数是否为"noroute",用于区分是否配置默认网关
cat >> /etc/NetworkManager/system-connections/$1.nmconnection <<EOF   # 将后续内容追加到NetworkManager连接配置文件中,$1为网卡名
[connection]                                                   # 连接配置段开始
id=$1                                                          # 连接标识符,使用网卡名
type=ethernet                                                  # 连接类型为以太网
interface-name=$1                                              # 网卡接口名称


[ipv4]                                                         # IPv4配置段开始
method=manual                                                  # 手动配置IP地址(非DHCP自动获取)
address1=$2/24                                                 # 设置IP地址和子网掩码,$2为传入的IP地址,/24表示255.255.255.0
EOF                                                            #  here-document结束标记
}||{                                                           # 如果第四个参数不是"noroute",则执行以下配置(包含网关)
cat >> /etc/NetworkManager/system-connections/$1.nmconnection <<EOF   # 同样追加到NetworkManager配置文件
[connection]                                                   # 连接配置段开始
id=$1                                                          # 连接标识符
type=ethernet                                                  # 以太网类型
interface-name=$1                                              # 网卡接口名称


[ipv4]                                                         # IPv4配置段开始
method=manual                                                  # 手动配置IP地址
address1=$2/24,172.25.254.2                                    # IP地址/掩码,默认网关地址(172.25.254.2为网关)
dns=8.8.8.8;                                                   # DNS服务器地址,使用Google公共DNS
EOF                                                            # here-document结束标记
}

chmod 600 /etc/NetworkManager/system-connections/$1.nmconnection   # chmod 600设置配置文件权限为所有者可读写,其他用户无权限(NetworkManager要求)
nmcli connection reload                                        # nmcli connection reload重新加载NetworkManager连接配置
nmcli connection up $1                                         # nmcli connection up激活指定网络连接,$1为网卡名
hostnamectl hostname $3                                        # hostnamectl hostname设置系统主机名,$3为传入的主机名参数

cat > /etc/hosts<< EOF                                         # cat > 覆盖写入/etc/hosts文件,配置本地主机名解析
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4   # IPv4本地回环地址解析
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6   # IPv6本地回环地址解析
$2     $3                                                      # 将设置的IP地址与主机名绑定,实现本地解析
EOF                                                            # here-document结束标记

ip address show $1                                             # ip address show显示指定网卡的详细网络信息,$1为网卡名(原简写ip a s)
hostname                                                       # hostname显示当前系统主机名
[root@localhost ~]# chmod +x /bin/vmset.sh     #给脚本可执行权限;
#为什么放在 /bin/?
[root@base ~]# echo $PATH     ## 查看环境变量
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin     #/bin 在 PATH 中,所以可以直接执行脚本
[root@localhost ~]# vmset.sh eth0 172.25.254.123 base     #执行脚本,设置网卡IP和重命名主机名,且不需要写完整路径 /bin/vmset.sh;
[root@base ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ca:3a:22 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 172.25.254.123/24 brd 172.25.254.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feca:3a22/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

6.SSH免密登陆

bash 复制代码
#第一步:生成 SSH 密钥对
[root@base ~]# ssh-keygen -f /root/.ssh/id_rsa -P ""     #-f指定私钥文件路径和名称,-p设置空密码(免密登录,无需输入密钥密码);
Generating public/private rsa key pair.  #开始生成 RSA 公私钥对
Your identification has been saved in /root/.ssh/id_rsa   #私钥保存位置(需保密)
Your public key has been saved in /root/.ssh/id_rsa.pub   #公钥保存位置(可以分发)
The key fingerprint is:
SHA256:hC6qy+bYJhYJz9JYLxdmgknyq9E3/x2wEqR5K+YcCFw root@base       #密钥指纹,用于唯一标识
The key's randomart image is:       #随机艺术图像,便于人工比对密钥
+---[RSA 3072]----+
|                 |
|..     .         |
|o+ E  o .        |
|= = += .         |
|oO.*+.+ S        |
|++Bo=o o o       |
| ++++oo . .      |
|==.+ o.. . .     |
|B*. o  .. .      |
+----[SHA256]-----+
#第二步:复制公钥到目标主机
[root@base ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub  root@localhost     #-i指定要复制的公钥文件,root@localhost目标用户和主机(这里是自己);
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'localhost (::1)' can't be established.    #首次连接,主机未知;
ED25519 key fingerprint is SHA256:ZrTviMg6qCDTfGiQgI+ehFmb24skRG2V3hvcWdn9KFI.    #显示主机指纹;
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes     #输入 yes,确认信任该主机;
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@localhost's password:      #输入 root 密码	验证身份以安装公钥;

Number of key(s) added: 1   #公钥成功添加到授权列表;

Now try logging into the machine, with:   "ssh 'root@localhost'"
and check to make sure that only the key(s) you wanted were added.

#实现原理:
┌─────────────────┐                    ┌─────────────────┐
│   客户端(base)   │                    │  服务器(localhost)│
│                 │                    │                 │
│  ┌───────────┐  │      SSH连接       │  ┌───────────┐  │
│  │ id_rsa    │  │◄──────────────────►│  │ authorized│  │
│  │ (私钥)     │  │   公钥验证身份      │  │ _keys     │  │
│  └───────────┘  │                    │  │ (存放公钥) │  │
│  ┌───────────┐  │                    │  └───────────┘  │
│  │ id_rsa.pub│  │ ─────────────────► │                 │
│  │ (公钥)     │  │   ssh-copy-id复制  │                 │
│  └───────────┘  │                    │                 │
└─────────────────┘                    └─────────────────┘

[root@base ~]# vim /etc/ssh/ssh_config     #编辑 SSH 客户端全局配置文件,分别两行写入HOST*和StrictHostKeyChecking no;
[root@base ~]# cp -rp /root/.ssh/ /etc/skel/    #将root 用户的SSH配置递归且保留原文件的属性复制到用户家目录模板;


#/etc/skel/ 的作用:
┌─────────────────────────────────────────┐
│           /etc/skel/ 目录               │
│  (Skeleton Directory,骨架目录)         │
│                                         │
│  新用户创建时,系统会自动将这里的内容       │
│  复制到用户的家目录中                     │
└─────────────────────────────────────────┘
              │
              ▼
    ┌─────────────────┐
    │  useradd 新用户  │
    │  家目录:/home/xxx │
    └─────────────────┘
              │
              ▼
    自动复制 /etc/skel/ 内容到 /home/xxx/
相关推荐
安科士andxe4 小时前
深入解析|安科士1.25G CWDM SFP光模块核心技术,破解中长距离传输痛点
服务器·网络·5g
小白同学_C7 小时前
Lab4-Lab: traps && MIT6.1810操作系统工程【持续更新】 _
linux·c/c++·操作系统os
今天只学一颗糖7 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
2601_949146537 小时前
Shell语音通知接口使用指南:运维自动化中的语音告警集成方案
运维·自动化
儒雅的晴天7 小时前
大模型幻觉问题
运维·服务器
Gofarlic_OMS8 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
通信大师8 小时前
深度解析PCC策略计费控制:核心网产品与应用价值
运维·服务器·网络·5g
dixiuapp9 小时前
智能工单系统如何选,实现自动化与预测性维护
运维·自动化
不做无法实现的梦~9 小时前
ros2实现路径规划---nav2部分
linux·stm32·嵌入式硬件·机器人·自动驾驶
Elastic 中国社区官方博客9 小时前
如何防御你的 RAG 系统免受上下文投毒攻击
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索