运维实践 | 运维打工人必备 CentOS-Linux/Stream-8 服务器系统基础安装与配置实践...

news2024/12/24 20:58:48

欢迎关注「全栈工程师修炼指南」公众号

点击 👇 下方卡片 即可关注我哟!

设为星标⭐每天带你 基础入门 到 进阶实践 再到 放弃学习

专注 企业运维实践、网络安全、系统运维、应用开发、物联网实战、全栈文章 等知识分享

  花开堪折直须折,莫待无花空折枝 


作者主页:[ https://www.weiyigeek.top ]  

博客:[ https://blog.weiyigeek.top ]

作者<开发安全运维>学习交流群,回复【学习交流群】即可加入


文章目录:

663c898e3f81cf8ae9722b761ed99a51.png

本文为作者原创文章,为尊重作者劳动成果禁止非授权转载爬取,若需转载请在【全栈工程师修炼指南】公众号留言,或者发送邮件到 [master@weiyigeek.top] 中我将及时回复。


0x00 前言简述

描述:本章主要记录了作者在工作生产环境中使用 redhat社区版本 CentOS Linux 8 / CentOS Stream 8 说明以及服务器系统安装基础设置,和CentOS发行版版本新特性配置实践,帮助各位运维人快速入手运维配置,由于CentOS即将停止维护了,本文也可能后续不在进行更新,算是针对CentOS 8 系统运维的一个总结,希望大家多多支持我哟。

若需要CentOS8安全加固脚本的童鞋可以在公众号中回复【CentOS8安全加固】关键字留言。

a0a10e56486cd669afaef36ea2c3c8cb.png

百度百科介绍:

  •  CentOS 8 是CentOS项目发布的开源类服务器操作系统,于2019年9月24日正式发布。

  •  CentOS 8 是一个稳定、高预测性、高管理性、高重复性的Linux平台,由RedHat企业级Linux(RHEL)的源代码进行再发行。CentOS 8基于Fedora 28和内核版本4.18,为用户提供一个稳定的、安全的、一致的基础以跨越混合云部署,并支持传统和新兴工作负载所需的工具。

1.CentOS Stream 8 将停止更新维护?

目前CentOS官方提供两种Linux发行版:

CentOS Linux: 一致、可管理的平台,适合各种部署。对于一些开源社区来说,它是一个坚实的、可预测的基础。
CentOS Stream: 持续交付的发行版,在Red Hat Enterprise Linux(RHEL)开发之前跟踪,定位为Fedora Linux和RHEL之间的中游(最新)。

在 2020 年 12 月所宣布的,CentOS 计划已将重点从 CentOS Linux 转移到 CentOS Stream,但是 CentOS Stream 8 也将于 2024 年结束迭代更新补丁, 所以推荐大家使用其他发行版本(例如,作者企业中线上环境使用的是Ubuntu及KylinOS(银河国产系统),或者debian也是不错的选择,但是可能国产化系统是趋势【虽然多半是套壳😳】),

以下是CentOS官网针对各种版本的预期生命周期结束 (EOL) 日期的说明,所以迁移已经非常紧急了。

  • CentOS Linux 7 EOL:2024-06-30

  • CentOS Linux 8 EOL:2021-12-31 (已经停止维护了)

  • CentOS Stream 8 EOL:2024-05-31

  • CentOS Stream 9 EOL:预计 2027 年,取决于 RHEL9 结束的“全面支持阶段”

其 CentOS Linux 与 CentOS Stream 两者间的区别, 有兴趣的朋友可以了解: https://www.centos.org/cl-vs-cs/ ,大致如下:

  • 上游与下游:CentOS Linux是Red Hat Enterprise Linux(RHEL)的重建版本(即它是RHEL的下游),另一方面 CentOS Stream 是 RHEL 的上游公共开发分支,CentOS Stream 8 是 RHEL 8 下一个次要版本的上游。

  • 更新频率: CentOS Linux 新的次要版本由大量更新组成, 次要版本之间提供较小批次的更新。CentOS Stream 更新不会批量发布到次要版本中,而是在准备就绪时发布。

  • 贡献模型: CentOS Linux 更改涉及到为发行版中包含的上游项目做出贡献(需要周期时间长),Cento Stream 提供了一种直接贡献的方式,将这一过程缩短到几周或几天。

  • 测试过程:针对 CentOS Linux 和 Cento Stream 的测试非常相似,但主要不同于发生事件的时间。

温馨提示: 若有需要安装使用KylinOS V10服务器操作系统,可以参考作者的发布的KylinOS(银河麒麟国产系统)入门安装配置相关文章。

  • 企业实践 | 国产操作系统之光? 银河麒麟KylinOS-V10(SP3)高级服务器操作系统基础安装篇 【 https://mp.weixin.qq.com/s/yqd1Qtog9wy8L5sgvgcEOQ 】

  • 企业实践 | 如何在阿里云裸金属服务器上使用UEFI模式实践安装国产银河麒麟V10操作系统入门配置篇 【 https://mp.weixin.qq.com/s/489ALphpt1nx1pvFcGpD9g 】

2.CentOS Linux/Stream 8 系统镜像下载

描述: 我们访问CentOS官网点击Download或者直接访问https://www.centos.org/download/进行CentOS Steam 8版本,并且选择对应系统架构,例如此处我服务器架构是X86_64, 即点击此进行下载。

ISO 版本说明:

  • X86_X64 带64位的32位扩展版(一般安装这个)

  • ARM64 (aarch64) 嵌入式,适用于微端(树莓派,机械臂,机械中控)

  • IBM Power (ppc64le) 专用于IBM POWER服务器

官方链接: http://isoredirect.centos.org/centos/8-stream/isos/x86_64/
镜像站下载地址如下所示,此处作者下载的是CentOS-Stream-8-x86_64-latest-boot.iso原来的mini版本,其iso提交最小。

  • http://mirrors.aliyun.com/centos/8-stream/isos/x86_64/CentOS-Stream-8-x86_64-latest-boot.iso

  • http://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/isos/x86_64/

7d0bca93fe373a91c953e8bbe403051b.png

CentOS Linux 8 已经停止维护了,CentOS官方默认未显示其下载ISO链接,但我们可以通过国内的镜像源站进行对应ISO镜像下载, CentOS Linux 8 当前最后版本为8.5.2111,例如 阿里云镜像源站。

官方链接:http://isoredirect.centos.org/centos/8/isos/x86_64/ (基本已经失效了)
镜像站下载:http://mirrors.aliyun.com/centos/8.5.2111/isos/x86_64/

f18eb2dfd7b6a88a766dc4b9619c4d4d.png

温馨提示: 截止日期为2024年,适用于CentOS Stream 8和CentOS Linux 7。有关升级和迁移选项的信息,请查看CentOS博客文章 [ https://blog.centos.org/2023/04/end-dates-are-coming-for-centos-stream-8-and-centos-linux-7/ ] 。

参考地址:
CentOS 官网: https://www.centos.org
CentOS 帮助文档: https://docs.centos.org


0x01 系统安装

安装 CentOS Linux 8

安装环境说明

  • 1.CentOS Linux 8.0.1905

  • 2.vSphere 6.7 (Hypervisor)

安装简约流程

  • Step1.加载ISO镜像到系统启动,选择安装CentOS8.X即可;

f7690b5d7c85a634d4ef3b779e71b5e9.png

  • Step2.进行选择安装信息摘要安装,按照图中上述序号进行配置(重点配置根据需要进行安装目的地选择以及自定义分区swap分区大小)

3f7ed8217ec5ed18a47215bc33c1feb1.png

  • Step3.选择安装选择一般选择前三个选项(带GUI的服务器,服务器,最小安装);

06f9fb696d41c120f875f0e3325e1d12.png

  • Step4.点击下一步进行安装然后,设置用户根密码即可,等待安装完成重启机器即可;

7b6b71458f9e9ea846fec938fe1b22af.png

温馨提示: 由于 CentOS Linux 8 已经停止维护了,官方建议从CentOS Linux 8转换为CentOS Stream 8,可以执行如下命令进行转换。

dnf --disablerepo '*' --enablerepo extras swap centos-linux-repos centos-stream-repos
dnf distro-sync

安装 CentOS Stream 8

描述: 实际上CentOS Stream 8 的安装类似于 CentOS Linux 8 的安装,具体安装流程可以查看作者安装CentOS8服务器系统视频。

B站专栏视频地址:https://space.bilibili.com/385802642/video


0x02 基础配置

1.系统网络配置

描述:由于CentOS8已经弃用network.service来管理网络,而采用nmcli进行网络所以本节简单的记录如何采用nmcli进行CentOS8网络的配置;

方式1.采用手动进行网络配置文件

# 网卡配置文件目录: /etc/sysconfig/network-scripts
# 配置修改
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-ens192
sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=static/g' /etc/sysconfig/network-scripts/ifcfg-ens192
sed -i 's/BOOTPROTO=\"dhcp\"/BOOTPROTO=\"static\"/g' /etc/sysconfig/network-scripts/ifcfg-ens192
cat >> /etc/sysconfig/network-scripts/ifcfg-ens192 <<EOF
IPADDR=10.20.172.241
NETMASK=255.255.255.0
GATEWAY=10.20.172..1
EOF

# 重启网卡
ifdown ens192
ifup ens192

# 若没有上述命令也可以采用nmcli命令
nmcli conn up eth0
nmcli conn down eth0

方式2.采用nmcli进行OS8网络的配置
1.初始CentOS8静态IP设置:(配置文件参考上面)

nmcli connect delete '有线连接 1' && nmcli disconnect ens192 && nmcli connect ens192 && nmcli c load /etc/sysconfig/network-scripts/ifcfg-ens192

2.初始CentOS8动态IP设置:

nmcli connect delete '有线连接 1' 
nmcli connect add type ethernet con-name ens192 ifname ens192 ipv4.method manual

3.切换建立指定的 Connection 链接

nmcli conn add type ethernet con-name eth0 ifname ens192 ipv4.addr 100.20.172.242/24 ipv4.gateway 100.20.172.1 ipv4.dns '223.6.6.6,223.5.5.5' ipv4.method manual
nmcli conn up eth0

补充说明:

  • ipv4.method:设置为manual表示BOOTPROTO=none即只有静态ip。如果设置为auto则表示动态获取IP;

  • 也可以通过nmtui 命令进行图形化界面的管理设置网卡;


配置网卡支持及自动获取IPV6

描述:通常默认当前安装的CentOS系统是支持IPV6,如果机器网卡IPV6未启用可以参照如下方式。

# 开启系统ipv6支持,修改 /etc/sysctl.conf 并增加下列配置。
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

# 验证是否生效
sysctl -a | grep ipv6 | grep disable

# 修改网卡配置文件增加IPv6配置选项,自动获取IPV6地址(注意需要交换机或者路由器开启ipv6地址分配)。
vim /etc/sysconfig/network-scripts/ifcfg-{网卡名称}
DHCPV6C=yes

# 增加IPv6默认路由
vim /etc/sysconfig/network-scripts/route6-eth0
default dev {网卡名称}

# 重启网络
service network restart

2.系统DNS配置

描述: 我们可以使用如下Shell命令快速配置系统的上游DNS。

# Modify the DNS server
# DNSPod: 119.29.29.29      Alidns: 223.5.5.5 223.6.6.6
# Google: 8.8.8.8 8.8.4.4   Cloudflare: 1.1.1.1 1.0.0.1
# Baidu: 114.114.114.114
# Internal : Your intranet domain name resolution server
VAR_DNS_SERVER=( "223.5.5.5" "119.29.29.29 " "192.168.10.254"  )

# 此处配置的是阿里云IPV4 DNS与阿里云IPV6 DNS
sed -i -e "s/^#FallbackDNS=.*/FallbackDNS=223.6.6.6 2400:3200::1 2400:3200:baba::1/" -e "s/^#DNSSEC=.*/DNSSEC=allow-downgrade/" -e "s/^#DNSOverTLS=.*/DNSOverTLS=opportunistic/" /etc/systemd/resolved.conf

# 此处配置DNSPod 以及 阿里云 DNS
for dns in ${VAR_DNS_SERVER[@]};do 
  grep -q "${dns}" /etc/systemd/resolved.conf 
  if [ $? != 0 ];then  
    echo -e "\033[32mnameserver ${dns} \033[0m]"
    sed -i "/#DNS=/i DNS=${dns}" /etc/systemd/resolved.conf;
  fi
done

# 重启 systemd-resolved 解析服务
systemctl restart systemd-resolved && systemctl enable systemd-resolved

# 创建 resolv.conf 软连接
find /etc/resolv.conf -delete
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

3.yum仓库镜像配置

描述: CentOS Linux/Stream 镜像源配置说明,在2022年1月31日,CentOS 团队从官方镜像中移除CentOS8的所有包,直接使用yum下载会出现 ERROR:Cannot prepare internal mirrorlist: No URLs in mirrorlist,故需要设置yum源,否则无法提供下载, 由于其发行版本有差异此处将Stream版本以及原始版本都进行验证。

# CentOS 过期源(centos-vault):https://developer.aliyun.com/mirror/centos-vault
# CentOS arm源(centos-altarch):https://developer.aliyun.com/mirror/centos-altarch/
# CentOS Stream源(centos-stream):https://developer.aliyun.com/mirror/centos-stream
# CentOS debuginfo源(centos-debuginfo):https://developer.aliyun.com/mirror/centos-debuginfo/

快速配置系统镜像源shell命令如下:

# CentOS-Stream 8 
local repo_name
if [ -f /etc/yum.repos.d/CentOS-Stream-BaseOS.repo ];then
  repo_name="-BaseOS.repo"
  echo -e "\033[32m 备份 /etc/yum.repos.d/${repo_name} 文件中...... \033[0m"
  # rename '.repo' '.repo.bak' /etc/yum.repos.d/*.repo
  cp /etc/yum.repos.d/${repo_name}.bak ${BACKUPDIR}
  sed -i -e 's|mirrorlist=|#mirrorlist=|g' -e 's|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-*
fi

# CentOS-Linux-8
if [ -f /etc/yum.repos.d/CentOS-Base.repo ];then
  repo_name="CentOS-Base.repo"
  echo -e "\033[32m 备份 /etc/yum.repos.d/${repo_name} 文件中...... \033[0m"
  rename '.repo' '.repo.bak' /etc/yum.repos.d/*.repo
  cp /etc/yum.repos.d/${repo_name}.bak ${BACKUPDIR}
  # centos8 官方源已下线,建议切换centos-vault源
  curl -o /etc/yum.repos.d/${repo_name} https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
  # 删除"mirrors.cloud.aliyuncs.com" 及 "mirrors.aliyuncs.com" 字符串所在的行.
  sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/${repo_name}
  # sed -i 's/releasever\//releasever-stream\//g' /etc/yum.repos.d/${repo_name}
fi

# 清理缓存并创建仓库元数据
sudo dnf clean all && sudo yum makecache

# Centos 8 - Epel 阿里云镜像快速配置
yum install -y epel-release 
sed -i -e 's|metalink=https://mirrors.fedoraproject.org|#metalink=https://mirrors.fedoraproject.org|g' \ 
        -e 's|#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|g'  /etc/yum.repos.d/epel.repo
dnf repolist epel -v

4.同步时间配置

描述: 在CentOS8.0中默认不再支持ntp软件包,时间同步将由chrony来实现,所以实现时间同步可以采用以下方法

  • chrony :推荐使用

  • ntp :继续使用它只不过需要额外安装

时间时区:

# 方式1
cp /etc/localtime{,.bak}
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 方式2
timedatectl
timedatectl list-timezones
timedatectl set-timezone Asia/Shanghai

chrony服务时间同步

# Modify the NTP server
VAR_NTP_SERVER=("ntp.aliyun.com" "ntp.tencent.com"  "192.168.10.254" )

# 安装 Chrony 客户端配置
if [[ $(rpm -qa | grep -c "chrony") -eq 0 ]];then
  dnf install -y chrony
fi

# 备份 /etc/chrony.conf 文件
cp /etc/chrony.conf{,.bak}
grep -E -q "^server" /etc/chrony.conf | sed -i 's/^server/# server/g' /etc/chrony.conf 
grep -E -q "^pool" /etc/chrony.conf | sed -i 's/^pool/# pool/g' /etc/chrony.conf 

# 配置上游DNS
for ntp in ${VAR_NTP_SERVER[@]};do 
  log::info "ntp server => ${ntp}"
  if [[ ${ntp} =~ "ntp" ]];then
    echo "pool ${ntp} iburst maxsources 4" >> /etc/chrony.conf;
  else
    echo "pool ${ntp} iburst maxsources 1" >> /etc/chrony.conf;
  fi
done

# 重启服务
systemctl enable chronyd.service && systemctl restart chronyd.service

ntp服务时间同步 (丢弃)

描述: CentOS Stream 8 中不在支持 ntpdate 命令的使用,推荐使用 chronyd 处理时间同步

# 将通过wlnmp提供的源,来安装ntp服务
# 添加wlnmp源 - 时间同步 - 时间同步
rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm && yum install wntp && ntpdate ntp1.aliyun.com

# 也可以编写定时任务,实现每3分钟向ntp1.aliyun.com同步一次时间,并将系统时间设置为硬件时间
crontab -l && systemctl enable crond.service
$crontab -e
*/3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &> /dev/null;/usr/sbin/hwclock -w

5.用户登录失败锁定配置

描述: 在 CentOS 8 中,您可以使用 pam_faillock.so 模块来配置登录失败锁定功能,该模块可以防止恶意用户通过暴力破解密码的方式尝试登录。

要配置 pam_faillock.so,您需要进行以下步骤:

  1. 打开 /etc/pam.d/system-auth 文件进行编辑:

    sudo vi /etc/pam.d/system-auth
  2. 在文件中找到 auth 部分,添加以下行:

    auth        required      pam_faillock.so preauth silent audit deny=3 unlock_time=600
    auth        [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600

    这些行将在用户进行身份验证之前和之后执行相关的 pam_faillock.so 模块功能。第一行是在用户身份验证之前执行,第二行是在用户身份验证失败后执行。
    audit 表示如果登录的用户没有找到,则将用户名信息记录到系统日志中。
    deny=3 表示用户在连续 3 次登录失败后将被锁定。您可以根据需要更改此值。
    unlock_time=600 表示用户被锁定后将在 600 秒(10 分钟)后自动解锁。您可以根据需要更改此值。

    af7e5cf23b94648bc846d5c5433c3322.png

  3. 保存并关闭文件。

  4. 重复步骤 1-3,编辑以下文件:

    sudo vi /etc/pam.d/password-auth

    这是针对密码更改操作的文件,在这个文件中进行相同的配置更改。

完成以上步骤后,您已成功配置了 pam_faillock.so 模块,登录失败的用户将会被临时锁定,直到达到锁定阈值或解锁时间结束。

通过 pam_faillock 模块,将登录尝试失败的数据储存在 /var/run/faillock 目录下每位用户的独立文件中,并且可以通过 faillock 命令查看,如下图所示:

# 查询是否有暴力破解
faillock
  # admin:
  # When                Type  Source                                           Valid
  # 2023-06-15 15:32:55 RHOST 192.168.228.1                                        V
  # .....  
  # 2023-06-15 15:33:31 RHOST 192.168.228.1                                        V

# 重置失败次数
faillock --user admin --reset

a2543046ad299d963739c744c91db0b4.png

温馨提示:
  • 如果只配置 password-auth 文件,输入密码错误3次后,通过tty终端登录的时候是没问题,可以限制住;但是如果通过其它普通用户用:su - admin2切换过来,则没有限制住;

  • 如果只配置 system-auth 文件,则不会锁住,也不会生成登录失败日志 /var/run/faillock,执行命令faillock也不会有登录失败日志)


偷偷的告诉你哟?极客全栈修炼】微信小程序已经上线了,

可直接在微信里面直接浏览博主博客了哟,后续将上线更多有趣的小工具。


6.用户密码加密类型配置

描述: 在 CentOS 8 中,pam_unix.so 模块是用于进行基本的用户名和密码验证的模块,authtok_type 参数用于指定通过哪种方式传递用户密码给 PAM 模块进行验证。

authtok_type 参数有以下几个选项可供使用:

  • clear:明文方式传递密码。这是默认选项,密码以明文形式传递给 PAM 模块进行验证。

  • md5:使用 MD5 哈希算法对密码进行加密后传递给 PAM 模块进行验证。

  • sha256:使用 SHA-256 哈希算法对密码进行加密后传递给 PAM 模块进行验证。

  • sha512:使用 SHA-512 哈希算法对密码进行加密后传递给 PAM 模块进行验证。

要使用 authtok_type 参数进行配置,您可以按照以下步骤进行操作:

  1. 打开 /etc/pam.d/system-auth 文件进行编辑:

    sudo vi /etc/pam.d/system-auth
  2. 在文件中找到 auth 部分的 pam_unix.so 行添加 authtok_type 参数。例如,如果您想使用 SHA-512 加密算法,则将行修改为:

    auth        sufficient    pam_unix.so try_first_pass use_authtok authtok_type=sha512 nullok sha512 shadow remember=3

    这将使 pam_unix.so 模块使用 SHA-512 加密算法来验证密码, 并且记录三次用户历史命令。

  3. 保存并关闭文件。

  4. 重复步骤 1-3,编辑以下文件:

    sudo vi /etc/pam.d/password-auth

    这是针对密码更改操作的文件。在这个文件中进行相同的配置更改。

完成以上步骤后,您已成功配置了 authtok_type 参数,PAM 模块将以指定的加密方式验证用户密码,增加了密码的安全性。

温馨提示: 请注意如果您更改了 authtok_type 参数,请确保用户密码已使用相应的加密算法进行存储,其历史密码被加密存储在cat /etc/security/opasswd文件中

# 加密方式为 SHA512 
VAR_PASS_ENCRYPT=SHA512
# 加密类型一定要对应
egrep -q "^\s*ENCRYPT_METHOD\s+\S*(\s*#.*)?\s*$" /etc/login.defs && sed -ri "s/^(\s*)ENCRYPT_METHOD\s+\S*(\s*#.*)?\s*$/ENCRYPT_METHOD ${VAR_PASS_ENCRYPT}/" /etc/login.defs || echo "ENCRYPT_METHOD  ${VAR_PASS_ENCRYPT}" >> /etc/login.defs


7.用户密码复杂度配置

描述: 在 CentOS 8 中,pam_pwquality.so 模块用于配置密码策略,以提高密码的安全性。下面是在 CentOS 8 中使用 pam_pwquality.so 的示例:

  1. 首先,确保已经安装了 pam_pwquality.so 模块。如果没有安装,可以使用以下命令进行安装:

    sudo dnf install pam_pwquality
  2. 打开 /etc/pam.d/system-auth 文件,这是系统级别的 PAM 配置文件。

  3. 在文件中找到 password 部分,并添加以下行:

    password    requisite     pam_pwquality.so try_first_pass local_users_only enforce_for_root minlen=12 retry=3 difok=6 minclass=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 usercheck=1

    这个配置表示密码必须包含至少8个字符,并且至少包含一个数字、一个小写字母、一个大写字母和一个特殊字符。

    minlen=12 设置的新密码的最小长度
    retry=3 表示在密码不符合要求时,用户有3次重试机会
    difok=6 表示设置的新密码中允许的最大连续相同字符数
    minclass=3 表示设置的新密码的包含几种字符类型(大小写、数字、其他)
    dcredit=-1 表示密码中至少包含一个数字
    ucredit=-1 表示密码中至少包含一个大写字母
    lcredit=-1 表示密码中至少包含一个小写字母
    ocredit=-1 表示密码中至少包含一个特殊字符
    usercheck=1 表示新密码中不能包含用户名字符串

    你可以根据需要进行自定义配置。

  4. 保存文件并关闭。

现在,当用户尝试更改密码时,pam_pwquality.so 模块将强制执行密码策略,并确保密码的安全性。

8.用户历史密码记录配置

描述: 在 CentOS 8 中,pam_pwhistory.so 模块用于配置密码历史记录策略,以防止用户在一段时间内多次使用相同的密码。下面是在 CentOS 8 中使用 pam_pwhistory.so 的示例:

  1. 首先,确保已经安装了 pam_pwhistory.so 模块。如果没有安装,可以使用以下命令进行安装:

    sudo dnf install pam_pwhistory
  2. 打开 /etc/pam.d/system-auth 文件,这是系统级别的 PAM 配置文件。

  3. 在文件中找到 password 部分,并添加以下行:

    password    required    pam_pwhistory.so remember=5 retry=3 use_authtok

    这个配置表示密码历史记录中将记住最近5个密码,用户在更改密码时将无法使用这些密码。
    retry=3 表示在密码不符合要求时,用户有3次重试机会
    use_authtok 参数表示将使用用户输入的密码进行验证。

    你可以根据需要进行自定义配置,比如将 remember 的值更改为其他数字。

  4. 保存文件并关闭。

现在,当用户尝试更改密码时,pam_pwhistory.so 模块将检查密码是否与最近的密码重复,并阻止用户使用重复的密码。这有助于增加密码的安全性。


0x03 应用部署

CentOS8中快速安装Docker容器环境

描述: 多的不说,直接上脚本吧,运行如下脚本直接在机器上安装好 Docker 容器运行环境。

# 1.卸载旧版本 
  sudo yum remove docker docker-engine docker.io containerd runc
  sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

  # 2.安装相关依赖包
  sudo yum install -y yum-utils

  # 3.设置稳定镜像源存储库,此处采用阿里的docker源(CentOS8)
  # DOCKER_COMPOSE_MIRRORS='https://github.com'
  # DOCKER_CE_MIRRORS='https://download.docker.com'
  # DOCKER_MIRRORS='https://docker.io'

  # Official
  # sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  # sed -i 's#download.docker.com#mirrors.aliyun.com/docker-ce#' /etc/yum.repos.d/docker-ce.repo
  yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  # 使用 CentOS 8 的源
  # echo "8" > /etc/yum/vars/centos_version
  # sed -i 's/$releasever/$centos_version/g'  /etc/yum.repos.d/docker-ce.repo

  # 4.查看Docker特定的相关版本,使用如下命令列出可用的版本
  dnf list docker-ce  --showduplicates | sort -r | head -n 2
  dnf list docker-ce-cli --showduplicates | sort -r | head -n 2
  dnf list containerd.io --showduplicates | sort -r | head -n 2

  # 5.安装Docker最新版本,此处我们指定的是最新版本。
  # 使用第二列中的版本字符串安装特定的版本,例如:containerd.io.x86_64  1.6.9-3.1.el8 docker-ce-stable
  # $sudo apt-get install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
  # dnf install docker-ce-3:23.0.1-1.el8 docker-ce-cli-1:23.0.1-1.el8 containerd.io-1.6.9-3.1.el8 -y
  sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

  # 6.将当前(低)用户加入docker用户组然后重新登陆当前用户使得低权限用户
  sudo gpasswd -a ${VAR_USER_NAME} docker

  # 7.配置docker后台守护进程
  mkdir -vp /etc/docker/
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "data-root":"/var/lib/docker",
  "registry-mirrors": ["https://xlx9erfu.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "100m",
    "max-file": "10"
  },
  "live-restore": true,
  "dns": ["223.6.6.6","114.114.114.114"],
  "insecure-registries": [ "harbor.weiyigeek.top"]
}
EOF

  # 8.自启与启动
  sudo systemctl daemon-reload
  sudo systemctl enable docker.service
  sudo systemctl restart docker.service

  # 9.验证安装的 docker 服务
  systemctl status docker.service --no-pager -l
  docker info

  # 10.启动一个 hello-world 容器,验证是否正常
  docker run --rm hello-world

执行效果:

83f56f01076869027cc95468b46fdf7e.png


0x04 入坑解决

1.CentOS8.x忘记密码后如何更改?

1.重启服务器在选择内核版本界面上按e进入编辑Grub界面,将cl-root 后的ro 变成 rw init=/sysroot/bin/bash

b2023bb3eb3b68a2e267f8a0fa692ed3.png

2.同时按住Ctrl和x键,系统进入emergency(紧急情况)模式。

3.运行命令 "chroot /sysroot/" 切换回原始系统然后即可修改密码,修改完密码运行命令“touch /.autorelabel”,使SELinux生效密码生效。

/# chroot /sysroot/
/# LANG=en         (把语言改为英文)
/# passwd
/# touch /.autorelabel

4.同时按住Ctrl和d键,输入reboot,回车,系统重新启动。

亲,文章就要看完了,不关注一下【全栈工程师修炼指南】吗?

a6d884b58df0a0ed0ac8928176f57061.jpeg


2.CentOS8.x系统时间差8个小时如何解决?

问题描述:查看系统时间发现系统时间和Universal time时间相差8个小时,实际上是时区配置的问题,很简单直接上解决办法。

$date
Thu May 14  21:13:32 UTC 2020

$timedatectl
      Local time: 一 2020-05-14 21:13:19 CST
  Universal time: 一 2020-05-14 13:13:19 UTC  #实际应该的时间
        RTC time: 一 2020-05-14 13:13:19
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

解决方法:

#1.查看系统时区并删除当前系统所处的分区
ls /usr/share/zoneinfo/
sudo rm /etc/localtime

#2.从/usr/share/zoneinfo/中创建软连接以替换当前的时区信息,直接选择Universal:
sudo ln -s /usr/share/zoneinfo/Universal /etc/localtime

#3.再次查看系统时间时间恢复正常

本文至此完毕,更多技术文章,尽情等待下篇好文!

原文地址: https://blog.weiyigeek.top/2020/1-18-197.html

如果此篇文章对你有帮助,请你将它分享给更多的人! 

cc71c0a1552bb823a903e7176f096a3f.gif

e6d5af29f8486ff0be0259460ff279fe.png 学习书籍推荐 往期发布文章 06cff758350084c3f0886abe812ee830.png

公众号回复【0008】获取【Ubuntu22.04安装与加固脚本】

公众号回复【10001】获取【WinServer安全加固脚本】

公众号回复【10002】获取【KylinOS银河麒麟安全加固脚本】

公众号回复【0011】获取【k8S二进制安装部署教程】

公众号回复【0014】获取【Nginx学习之路汇总】

公众号回复【0015】获取【Jenkins学习之路汇总】

公众号回复【10005】获取【adb工具刷抖音赚米】

 热文推荐  

  • 企业运维实践-如何在K8S集群环境Gitlab+Jenkins+Jmeter+Grafana技术中实现自动化分布压力测试数据展示

  • 企业运维 | Nginx服务在Docker与Kubernetes容器环境中快速搭建部署实践

  • 【企业运维实践】丢弃手中的docker build ,使用Kaniko直接在K8S集群或Containerd环境构建推送容器镜像

  • 企业实践 | 国产操作系统之光? 银河麒麟KylinOS-V10(SP3)高级服务器操作系统基础安装篇

  • 网安等保-国产Linux操作系统银河麒麟KylinOS-V10SP3常规配置、系统优化与安全加固基线实践文档

欢迎长按(扫描)二维码 取更多渠道哟!

ed134a357188aff91e3713409cdc007b.gif

欢迎关注 【全栈工程师修炼指南】(^U^)ノ~YO

添加作者微信【weiyigeeker 】 一起学习交流吧!

关注回复【学习交流群】即可加入【安全运维沟通交流小群

温馨提示: 由于作者水平有限,本章错漏缺点在所难免,希望读者批评指正,若有问题或建议请在文章末尾留下您宝贵的经验知识,或联系邮箱地址

master@weiyigeek.top 或 关注公众号 [全栈工程师修炼指南] 留言。

点个【赞 + 在看】吧!

点击【"阅读原文"】获取更多有趣的知识!   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/652891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode】python 主要元素 摩根投票法

目录 题目&#xff1a; 题解&#xff1a; 1.纯暴力&#xff08;字典&#xff09; 2. 摩根投票法 题目&#xff1a; 数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组&#xff0c;找出其中的主要元素。若没有&#xff0c;返回 -1 。请设计时间复杂度为 O(N) 、空…

电脑中的个人私密视频该怎么加密?

因为电脑内存空间较大&#xff0c;所以很多人喜欢将拍摄的视频存放在电脑中&#xff0c;这其中就会有一些比较私密&#xff0c;不适合被其他人看到的视频。为了保护这些视频的安全&#xff0c;我们需要合适的方法对其进行加密保护。下面我们就一起来了解一下电脑中的个人私密视…

GAMES101笔记 Lecture 01

目录 Overview of Computer Graphics图形学的应用场景Video GamesMoviesAnimationsDesignVisualizationVirtual RealityDigital IllustrationSimulationGraphical User InterfacesTypography 为什么要学习计算机图形学&#xff1f;Fundamental Intellectual Challenges(图形学很…

Opencv-C++笔记 (5) : opencv-形态学

文章目录 1、形态学运算与结构2、腐蚀膨胀运算3、膨胀4、自定义结构元素5、开闭运算开运算闭运算 6、形态学梯度7、其他形态学-顶帽、黑帽、击中不击中8、核函数矩形核十字形核椭圆核 1、形态学运算与结构 形态学运算是针对二值图像依据数学形态学(Mathematical Morphology)的集…

Prefix-Tuning: Optimizing Continuous Prompts for Generation

《Prefix-Tuning: Optimizing Continuous Prompts for Generation》阅读笔记 论文题目&#xff1a;Prefix-Tuning: Optimizing Continuous Prompts for Generation论文链接&#xff1a;https://arxiv.org/pdf/2101.00190论文来源&#xff1a;Arxiv &#xff08;2021&#xff0…

CentOS 7安装 Postgre

零、前置条件 系统CentOS 7&#xff0c;并已联网&#xff0c;已安装gcc或者g编译器&#xff0c;GNU make版本3.80或以上&#xff0c;系统有至少一个除root之外的普通用户user gcc安装-参考链接查看make命令的版本——make --version更新make版本-参考链接postgresql的使用一般…

【nginx】网页上传文件报错413 Request Entity Too Lange

前言 413 Request Entity Too Lange&#xff0c;由于您的请求实体太长&#xff0c;服务器无法处理。请尝试缩短请求体的内容或者采取其他方式进行操作。如果问题仍然存在&#xff0c;请检查您的请求是否符合服务器的限制和要求&#xff0c;并尝试联系服务器管理员寻求帮助 可以…

轻松掌握 Postman Newman API 测试技巧

目录 前言&#xff1a; Postman Newman 是什么&#xff1f; Postman Newman 的作用 如何使用 Postman Newman&#xff1f; 第一步&#xff1a;安装 Node.js 第二步&#xff1a;全局安装 Newman 第三步&#xff1a;导出集合或环境变量为 JSON 格式 第四步&#xff1a;使…

Python-Selenium-定位详解

目录 前言&#xff1a; 一、id定位 二、name定位 三、class_name定位 四、xpath定位 五、css_selector定位 六、tag_name定位 七、link_text 定位 八、Xpath&Css定位方法速查表 九、By定位 十、elements复数定位 十一、JS的定位 前言&#xff1a; Python是一种…

Jetpack Compose中的LaunchedEffect与rememberCoroutineScope

Jetpack Compose中的LaunchedEffect与rememberCoroutineScope 深入了解Compose副作用API LaunchedEffect和rememberCoroutineScope。 探索使用LaunchedEffect和rememberCoroutineScope的区别和使用场景。 什么是副作用&#xff1f; 副作用是指在可组合函数范围之外发生的任何…

2024考研408-计算机组成原理第三章-存储系统

文章目录 前言一、存储器概述1.1、层次结构1.2、存储器分类1.2.1、层次分类1.2.2、存储介质分类1.2.3、存取方式1.2.4、按照信息的可更改性&#xff08;读写、只读区别&#xff09; 1.3、存储器性能指标知识回顾 二、主存储器2.1、主存储器的基本组成&#xff08;介绍DRAM&…

Axios和Spring MVC[前端和后端的请求和响应处理]

在前后端交互中&#xff0c;Axios和Spring MVC扮演着不同的角色&#xff0c;分别负责前端和后端的请求和响应处理。它们之间的作用如下&#xff1a; Axios&#xff08;前端&#xff09;&#xff1a; 发送HTTP请求&#xff1a;前端使用Axios库发送HTTP请求到后端。可以使用Axi…

HarmonyOS 极客马拉松2023 正式启动,诚邀极客们用键盘码出无限可能!

原文&#xff1a;HarmonyOS 极客马拉松2023 正式启动&#xff0c;诚邀极客们用键盘码出无限可能&#xff01;&#xff0c;点击链接查看原文进入报名通道。 2023年6月15日&#xff0c; HarmonyOS极客马拉松2023开赛&#xff01;期待各位开发者极客朋友一起&#xff0c;探索移动应…

IT自动化运维工具优势与劣势分析-行云管家

随着自动化技术的进步&#xff0c;目前市面上出现了不少IT自动化运维工具。但很多人对于IT自动化运维工具优劣势不是很清楚&#xff0c;这里我们就来一起简单分析分析。 IT自动化运维工具优势 1、提高IT运维工作人员工作效率&#xff0c;提升整体项目效率&#xff1b; 2、提…

HQChart使用教程30-K线图如何对接第3方数据37-如何绘制圆点

HQChart使用教程30-K线图如何对接第3方数据37-如何绘制圆点 效果图步骤json格式nametypeDrawDraw.DrawTypeDraw.DrawData[] HQChart代码地址 效果图 步骤 步骤和第3方指标替换一样&#xff0c; 通过网络协议回调&#xff0c;知道需要执行的指标&#xff0c; 替换自己的数据。这…

chatgpt赋能python:Python中的整数筛选与小数筛选

Python中的整数筛选与小数筛选 Python是一种高级编程语言&#xff0c;常见于各种领域的编程工作中。在Python中&#xff0c;我们可以很方便地筛选整数和小数&#xff0c;用于数据分析、算法计算、图像处理等多个方向。本文将从Python中的整数筛选和小数筛选两个方面进行介绍和…

90%电子工程师都没学透的3W规则,这篇文章一次性告诉你

在PCB设计中&#xff0c;了解和应用3W规则是非常重要的&#xff0c;能帮助工程师在设计阶段时考虑到电路板的功率分布、热管理和可靠性&#xff0c;但很多电子工程师对3W规则只处于皮毛学习阶段&#xff0c;没有做到真正掌握&#xff0c;导致电子设计技术没长进&#xff0c;所以…

​一些常见网络安全术语​

1、黑帽 为非法目的进行黑客攻击的人&#xff0c;通常是为了经济利益。他们进入安全网络以销毁&#xff0c;赎回&#xff0c;修改或窃取数据&#xff0c;或使网络无法用于授权用户。这个名字来源于这样一个事实&#xff1a;老式的黑白西部电影中的恶棍很容易被电影观众识别&…

Mac中开发常用的软件

Mac中开发常用的软件 https://pan.baidu.com/ 开发软件 IDEA2021IntelliJ IDEA 2022 for Mac(最好用的Java开发工具)永久激活版SnailSVNRedisDesktopManagerTermius终端SourceTree&#xff08;Git&#xff09;Microsoft Remote Desktop&#xff08;远程桌面&#xff09; 数据…

flutter系列之:做一个图像滤镜

文章目录 简介我们的目标带滤镜的图片打造filter按钮打造可滑动按钮最后要解决的问题 简介 很多时候&#xff0c;我们需要一些特效功能&#xff0c;比如给图片做个滤镜什么的&#xff0c;如果是h5页面&#xff0c;那么我们可以很容易的通过css滤镜来实现这个功能。 那么如果在…