网安等保 | 主机安全之CentOS8服务器配置优化与安全加固基线文档脚本分享

这篇具有很好参考价值的文章主要介绍了网安等保 | 主机安全之CentOS8服务器配置优化与安全加固基线文档脚本分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

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


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

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

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


本章目录:

centos8 优化,公众号付费专栏,安全,服务器,运维

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

免责申明:本文分享旨在给网络安全从业人员、网站开发人员以及运维管理人员在日常工作中进行安全攻防测试以及防范恶意攻击, 请勿恶意使用下面介绍技术进行非法网络攻击,作者不为此承担任何责任,所有渗透都需获取授权,谨防从入门到入狱!

【中华人民共和国网络安全法】: http://www.npc.gov.cn/npc/c30834/201611/270b43e8b35e4f7ea98502b6f0e26f8a.shtml


0x00 前言简述

描述: 千呼万唤始出来,网安等保系列之Linux系统主机安全加固文章又更新了,由于作者的【安全开发运维】运维学习答疑群(PS: 公众号回复【微信交流群】即可进入哟)的小伙伴们企业中需要针对CentOS8服务器系统进行安全加固,以通过等保3级的主机安全合规检查,作为群主大大的我必须响应群员们的号召,在工作之余,边带娃,边编写该系统加固脚本, 遂在昨日完成该脚本的编写以及验证,可谓是真不容易呀。

centos8 优化,公众号付费专栏,安全,服务器,运维

原文地址:网安等保 | 主机安全之CentOS8服务器配置优化与安全加固基线文档脚本分享当前企业中还有大量的服务器上使用了CentOS8服务器操作系统,为满足于企业中需要针对CentOS8系统进行安全加固的道友,文章脚本中实现了CentOS8 系统基础运维配)、安全加固配置、系统优化配置等方法,若不全之处也希望大佬们多多指正。https://mp.weixin.qq.com/s?__biz=MzIwNDA3ODg3OQ==&mid=2648002806&idx=1&sn=a449482c593bfa8f3915f1cd654095ca&chksm=8ee45a86b993d390cd9bd01ecc51ea4a82fd1395308fd295d15f1b7b08da75b024e740a09613#rd

当前由于 CentOS Linux/Stream 8 即将停止更新维护(EOL)了,作者已经在2021年底基本将企业中CentOS服务器上的业务进行迁移,我是迁移到了Ubuntu和KylinOS 银河麒麟国产Linux系统之上, 当然网上也有其他迁移方案,此处不再累述。

虽然 CentOS 8 生命周期即将结束了,但是企业中还是有大量的服务器机器上使用了CentOS8服务器操作系统,所以本文也满足于企业中需要针对CentOS8系统进行安全加固的道友,也帮助Liunx初学者快速配置一个安全的CentOS8服务器(加固脚本也是值得学习借鉴的哟),文章脚本中实现了CentOS8 系统基础运维配、安全加固配置、系统优化配置等方法,若不全之处也希望大佬们多多指正。

请在【全栈工程师修炼指南】公众号中回复【CentOS8安全加固】或【10006】关键字,获取演示视频、CentOS8安全加固文档和脚本(本文末尾获取下载链接)。

温馨提示: 此处为了防止伸手党,以及尊重作者编写脚本及实践成果,象征性的设置为收费合集(#网络安全攻防等保 点击查看 ),付费后可直接联系作者发加固脚本或者文章末尾获取下载链接,希望大家理解支持!

此处作者我,已经将其写成一个Shell项目,各位看官可以直接运行加固,大大的节省了我们运维人的时间,最后我会将CentOS8安全加固shell脚本,下载链接放在文章末尾, 以供各位看友使用实践参考,若有错误欢迎在【全栈工程师修炼指南】公众号留言。

## 名称: Start::Help 
## 用途:程序执行帮助命令
## 参数: 无
Start::Help ()
{
  echo -e "\nUsage: $0 [--start ] [--network] [--function] [--clear] [--version] [--help]"
  echo -e "Option: "
  echo -e "  --start            Start System initialization and security reinforcement."
  echo -e "  --network          Configure the system network and DNS resolution server."
  echo -e "  --function         PCall the specified shell function."
  echo -e "  --clear            Clear all system logs, cache and backup files."
  echo -e "  --info             Print System information and exit."
  echo -e "  --version          Print version and exit."
  echo -e "  --help             Print help and exit."
  echo -e "\nMail bug reports or suggestions to <master@weiyigeek.top> or pull request (pr)."
  echo -e "current version : ${VAR_VERSION}"
  log::warning "温馨提示:使用前先请配置机器上网环境及其在config文件夹中的CentOS8.conf配置进行对应配置."
  exit 0
}

centos8 优化,公众号付费专栏,安全,服务器,运维

此加固脚本的使用方法,请参照演示视频:

# 常用命令示例:
# 进行自动安全加固
./CentOS8-InitializeReinforce --start

# 使用function参数指定优化加固
./CentOS8-InitializeReinforce  --function

# 使用info参数打印系统相关信息
./CentOS8-InitializeReinforce  --info

在实践前,也请大家多多支持我的【#网络安全攻防等保(点击查看)】付费合集,后续将推出更多网安入门学习、企业安全实践与漏洞挖掘实践文章, 也将持续更新CentOS7安全加固实践文章以及安全加固脚本。

温馨提示: 针对于 Ubuntu 22.04 以及 KylinOS V10 服务器操作系统,作者都编写对应安全加固实践文章,有想了解的童鞋可以访问如下文章链接:

  • 网安等保-主机安全测评之Linux服务器Ubuntu-22.04-LTS操作系统安全加固制作基线系统脚本分享与实践

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

好了废话不多说,此处我将本文其分为三个章节,没小节包含了配置Shell脚本片段:
第一个章节主要针对 CentOS8 系统初始化运维配置实践,
第二个章节主要针对 CentOS8 系统内核参数及服务优化实践,
第三个章节主要针对 CentOS8 系统安全加固实践,


0x01 主机系统配置

重要提示: 在线上生产环境中,进行系统安全加固操作时,请注意备份操作文件,以便于异常时及时回退。

重要提示: 在线上生产环境中,进行系统安全加固操作时,请注意备份操作文件,以便于异常时及时回退。

重要提示: 在线上生产环境中,进行系统安全加固操作时,请注意备份操作文件,以便于异常时及时回退。

1.主机IP和网关地址设置

描述: 一台新安装的主机必须配置IP地址才能方便我们通过远程连接,所以第一步肯定是把网络打通,主要根据配置的IP地址与网络地址环境变量进行对应设置,例如下述部分脚本片段。

示例片段:

# Modify the IP/MASK and Gateway
VAR_NETINTERFACE=ens192
VAR_IP=192.168.4.201/24
VAR_GATEWAY=192.168.4.1

cp -a /etc/sysconfig/network-scripts/* /tmp

if [ ! -f /opt/init/ ];then 
  mkdir -vp /opt/init/
sudo tee /opt/init/network.sh <<'EOF'
#!/bin/bash
# @Author: WeiyiGeek
# @Description: Configure CentOS Linux/Stream 8 Server Network
# @E-mail: master@weiyigeek.top
# @Blog: https://www.weiyigeek.top
if [[ $# -lt 4 ]];then
  echo "Usage: $0 NetInterface IP/NETMASK GATEWAY DNS"
  echo "Example: $0 ens192 192.168.12.12/24 192.168.12.1 223.6.6.6"
  echo "@Author: WeiyiGeek"
  echo "@Blog: https://blog.weiyigeek.top"
  exit
fi
echo "Setting Network interface card: ${1}, IP: ${2} , GATEWAY: ${3}"
CURRENT_IP=$(hostname -I | cut -f 1 -d " ")
CURRENT_GATEWAY=$(hostname -I | cut -f 1,2,3,4 -d ".")
CURRENT_FILE=/etc/sysconfig/network-scripts/ifcfg-${1}
CONFIG_IP=${2%%/*}
CONFIG_PREFIX=${2##*/}

echo "Original Network info: IP: ${CURRENT_IP} , GATEWAY: ${CURRENT_GATEWAY}"
echo "Setting Network interface card: ${1}, IP/NETMASK: ${2} , GATEWAY: ${3}, DNS: ${4}"

if [[ -f ${CURRENT_FILE} ]];then
  # 已存在网卡配置文件的情况下
  egrep -q "^\s*ONBOOT=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*ONBOOT=.*$/ONBOOT=yes/" ${CURRENT_FILE}|| echo "ONBOOT=yes" >> ${CURRENT_FILE}
  egrep -q "^\s*BOOTPROTO=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*BOOTPROTO=.*$/BOOTPROTO=static/" ${CURRENT_FILE}|| echo "BOOTPROTO=static" >> ${CURRENT_FILE}
  egrep -q "^\s*IPADDR=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*IPADDR=.*$/IPADDR=${CONFIG_IP}/" ${CURRENT_FILE}|| echo "IPADDR=${CONFIG_IP}" >> ${CURRENT_FILE}
  egrep -q "^\s*PREFIX=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*PREFIX=.*$/PREFIX=${CONFIG_PREFIX}/" ${CURRENT_FILE}|| echo "PREFIX=${CONFIG_PREFIX}" >> ${CURRENT_FILE}
  egrep -q "^\s*GATEWAY=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*GATEWAY=.*$/GATEWAY=${3}/" ${CURRENT_FILE}|| echo "GATEWAY=${3}" >> ${CURRENT_FILE}
  egrep -q "^\s*DNS1=.*$" ${CURRENT_FILE} && sed -ri "s/^\s*DNS1=.*$/DNS1=${4}/" ${CURRENT_FILE}|| echo "DNS1=${4}" >> ${CURRENT_FILE}
else
  nmcli dev show ${1}
  nmcli conn add connection.id ${1}-staic connection.interface-name ${1} connection.autoconnect yes type Ethernet ifname ${1} ipv4.method manual ipv4.address ${2} ipv4.gateway ${3} ipv4.dns ${4} ipv4.ignore-auto-dns true
fi
sudo nmcli c reload

read -t 5 -p "Heavy load network card, It is recommended to enter N during initialization (Y/N): " VERTIFY
if [[ ${VERIFY:="N"} == "Y" || ${VERIFY:="N"} == "y" ]]; then
  sudo nmcli c up ${1}
  sudo nmcli d reapply ${1}
else
  echo "Please reload the network card manually, run sudo nmcli d reapply ${1}."
fi
EOF

# 权限赋予
sudo chmod +x /opt/init/network.sh
/opt/init/network.sh ${VAR_NETINTERFACE} ${VAR_IP} ${VAR_GATEWAY} ${VAR_DNS_SERVER}

2.主机DNS服务器地址配置

描述: 在完成系统主机的IP地址的配置后,便需要为主机配置私有DNS服务器或者公共的DNS服务器,以便解析内部或外部域名。

示例片段:

# Show  Script Execute result (Y/N)
VAR_VERIFY_RESULT=Y
# 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" "114.114.114.114"  "192.168.4.254")

cp /etc/systemd/resolved.conf /tmp

local flag
# 此处配置的是阿里云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

# 重启相关服务
systemctl restart systemd-resolved && systemctl enable systemd-resolved

# 创建解析文件映射
find /etc/resolv.conf -delete
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

if [[ ${VERIFY:="N"} == "Y" || ${VERIFY:="N"} == "y" ]]; then
  echo "/etc/resolv.conf"
  grep -Ev '^#|^$' /etc/resolv.conf | uniq
  echo "/etc/systemd/resolved.conf"
  grep -Ev '^#|^$' /etc/systemd/resolved.conf | uniq
fi

3.主机系统软件镜像源配置

描述: 使用国外的操作系统,例如CentOS、Ubuntu、Debian、Alpine等操作系统,通常为了加快Linux系统中下载安装软件的速度,我们是需要配置软件镜像源,但此处为了防止小伙伴们更改过该镜像源,我也将各发行版镜像源配置罗列出来。

示例片段:

# 1.获取操作系统发行版
local release
# release=$(grep -e "^VERSION=" /etc/os-release | cut -f 2 -d "=" | tr -d '[:punct:][:space:]')
release=$(cat /etc/redhat-release)
echo -e "\033[32m[${COUNT}] ${release} \033[0m"

# 2.验证CentOS8镜像仓库文件,由于其发行版本有差异此处将Stream版本以及原始版本都进行验证。
# 注意:在2022年1月31日,CentOS 团队从官方镜像中移除CentOS8的所有包,针对过期源设置如下。
# 直接使用yum下载会出现ERROR: Cannot prepare internal mirrorlist: No URLs in mirrorlist
# 故需要设置yum源,否则无法提供下载。
# 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/
local repo_name
if [ -f /etc/yum.repos.d/CentOS-Stream-BaseOS.repo ];then
  repo_name="CentOS-Stream-BaseOS.repo"
  echo -e "\033[32m[${COUNT}] 备份 /etc/yum.repos.d/${repo_name} 文件中...... \033[0m"
  # rename '.repo' '.repo.bak' /etc/yum.repos.d/*.repo
  cp /etc/yum.repos.d/${repo_name} ${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

if [ -f /etc/yum.repos.d/CentOS-Base.repo ];then
  repo_name="CentOS-Base.repo"
  echo -e "\033[32m[${COUNT}] 备份 /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(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

read -t ${VAR_VERIFY_TIMEOUT} -p "Please input, Perform system software update and upgrade. (Y/N) : " VERIFY
if [[ ${VERIFY:="N"} == "Y" || ${VERIFY:="N"} == "y" ]]; then
  sudo dnf update -y && sudo dnf upgrade -y
fi

PS: 在2022年1月31日,CentOS 团队从官方镜像中移除CentOS8的所有包, 所以网上设置CentOS8的镜像源地址有变化,建议通过镜像站获取,例如 阿里云的镜像地址:https://developer.aliyun.com/mirror/centos

完整原文地址:网安等保 | 主机安全之CentOS8服务器配置优化与安全加固基线文档脚本分享文章来源地址https://www.toymoban.com/news/detail-757614.html

到了这里,关于网安等保 | 主机安全之CentOS8服务器配置优化与安全加固基线文档脚本分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Centos7十五项安全加固标准配置(结合等保3)

    写在前面:由于所有操作均涉及系统文件,建议所有操作前备份文件及做好相关记录 描述 检查是否存在空口令和root权限的账号 加固建议 对无口令并且可登录的账户,进行密码设置:(注意密码不能包含用户名,也不能少于7位) 具体操作命令和步骤 1、检查空口令账户 aw

    2023年04月08日
    浏览(30)
  • 等保2.0 测评 linux服务器加固 基本安全配置手册

    禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。 #为删除你系统上的用户,用下面的命令: [root@c1gstudio]# userdel

    2024年03月14日
    浏览(34)
  • 利用Figlet工具创建酷炫Linux Centos8服务器-登录欢迎界面-SHELL自动化编译安装代码

    因为我们需要生成需要的特定字符,所以需要在当前服务器中安装Figlet,默认没有安装包的,其实如果我们也只要在一台环境中安装,然后需要什么字符只要复制到需要的服务器中,并不需要所有都安装。同样的,我们也可以利用此生成的字符用到脚本运行的开始起头部分,

    2024年02月12日
    浏览(42)
  • 等保三级安全加固,服务器三权分立设置,mysql密码策略登录策略

    1、安全计算环境 1)数据库、服务器未配置口令复杂度策略。 建议强制配置口令的复杂度策略(复杂度包含字母大小写,数字,特殊字符,密码长度八位以上),防止口令被轻易破解。 2)数据库、服务器未配置口令有效期策略。 建议配置数据库口令有效期策略,最短更改时间

    2024年02月08日
    浏览(54)
  • Centos8服务器中yum安装时的错误Unable to find a match、No URLs in mirrorlist解决

        开始遇到报错后更新了一下源,但发现依然是提示No match for argument Unable to find a match。如下:肯定和Centos8有点关系。 [root@test test]# yum install iftop No match for argument: iftop centos8 Error: Unable to find a match: iftop     有些资料说是Centos8上的yum源里面没有epel,而iftop等一些软件被迁

    2024年04月28日
    浏览(38)
  • 【大数据实验系列】一文轻松搞定云服务器Centos8.x下安装MySQL5.x版本,以阿里云服务器为例!(超详细安装流程)

           本篇博客主要涉及云服务器(以阿里云服务器为例子)Centos8.x下安装MySQL软件。( 通读本篇博客需要10分钟左右的时间) 。         本篇博客内容参考于:centOS8安装MySql5.7 2.1 MySQL rpm源包下载        我们首先点击官网MySQL下载地址,如下图所示:        博主这里选择上

    2024年02月03日
    浏览(47)
  • 等保2.0 Linux主机测评过程

    以下结果以centos 7 为例,按照等保2.0标准,2021报告模板,三级系统要求进行测评。   一、身份鉴别 a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。 输入  more /etc/shadow ,得知系统所有用户,此语句字段格式有九段。

    2024年02月16日
    浏览(30)
  • 服务器主机安全如何保障

    随着互联网的快速发展,服务器主机安全问题日益凸显。服务器主机是网络世界中的核心,其安全性关乎着整个网络系统的稳定性和可靠性。 当前,服务器主机面临着多种安全威胁。其中,网络攻击是最为常见的一种。网络攻击者利用各种手段,如病毒、蠕虫、木马等恶意程

    2024年02月04日
    浏览(37)
  • 等保测评之主机测评——Windows Sever

    目录 (一)身份鉴别 (二)访问控制 (三)安全审计 (四)入侵防范 (五)恶意代码防范 (六)可信验证 (七)数据完整性 (八)数据保密性 (九)数据备份恢复 (十)剩余信息保护 在测评过程中最为常见的是三级系统,所以本文按照三级等保标准进行测评。 本文中

    2024年02月16日
    浏览(29)
  • shell脚本使用(宿主机windows-服务器-centos)--用于使用shell脚本方式控制docker容器

    需求: 我想要使得windows上编写shell脚本,并且在这个shell脚本在linux中也可用 shell脚本在windows上无法直接运行,但是有WSL这个linux子系统的工具 可以使得shell脚本在主机上执行 视频讲解连接 方式1 方式2

    2024年02月07日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包