【网安等保】OpenEuler 24.03系统主机安全加固及配置优化实践指南

发布于:2025-05-09 ⋅ 阅读:(12) ⋅ 点赞:(0)

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ]

📢 大家好,我是 WeiyiGeek,一个正在向全栈工程师(SecDevOps)前进的计算机技术爱好者,欢迎各位道友一起学习交流、一起进步 🚀,若此文有帮助请点个关注,后续追番不迷路 ❤️。

文章目录:

image.png


0x00 前言简述

描述: 随着国产化进程加速,国产化操作系统正逐步应用于政府及企业关键领域(大趋势),预计将于2028年全面替换为国产操作系统。在众多商业国产操作系统中银河麒麟(KylinOS)、中科方德、统信UOS,此三家持续版本迭代超15年的其生态市场及占有率最高, 另外还有红旗Linux、共创Linux、凝思磐石、新支点、深度Linux、Start OS、思普操作系统、云针OS、鸿蒙OS、YunOS、OpenCloudOS等国产操作系统,除此之外也有使用人数较多开源的国产操作系统,例如:欧拉OpenEuler(华为)、龙蜥操作系统(Anolis OS)(阿里)等。

看过前面我的文章的童鞋应该知道,作者企业中部分服务是运行在银河麒麟(KylinOS)V10 SP3 版本的国产系统上,但是对于个人或者中小型企业来说是有一定使用成本的,所以很多中小型企业会选择使用开源免费的国产操作系统。在此需要点之上,作者选择了华为的欧拉 OpenEuler 24.03 LTS 版本国产操作系统进行实践,并实践验证该系统是否可以承载现有业务,并且为满足网络安全等保2.0主机安全配置(三级)要求,遂针对该系统进行安全加固及常规初始优化操作,设置安全基线镜像,以保证基础业务运行环境安全。

这里作者就不在针对 欧拉 OpenEuler 国产操作系统进行详细介绍与下载安装讲解,有兴趣的朋友可以查看【运维 | 国产操作系统遥遥领先? 新手必备 OpenEuler(欧拉) 开源操作系统快速安装配置指南】此文。

此处作者我,已经将其写成一个Shell项目,各位看官可以直接运行加固,大大的节省了我们运维人的时间,最后我会将 OpenEuler 24.03 LTS 安全加固shell脚本下载链接放在文章末尾, 以供各位看友使用实践参考,若需观看视频实践演示,视频将介绍如何对 OpenEuler 进行安装与安全加固。请关注【全栈工程师修炼指南】公众号并回复【OpenEuler安全加固】或【2025050512】关键字获得加固脚本下载链接,若有错误欢迎在【全栈工程师修炼指南】公众号留言,也可通过加入作者『 全栈工程师修炼指南』知识星球获取最新加固脚本。

脚本涵盖:

  • 系统初始化配置:关闭非必要服务,优化内核参数。

  • 账户与权限管理:强化口令策略,限制高危权限。

  • 网络安全加固:配置防火墙规则,禁用高风险协议。

  • 日志与审计:启用审计服务,记录关键操作。

  • 安全基线镜像制作:一键生成合规镜像,快速部署安全环境。

温馨提示:本文为作者原创文章,为尊重作者劳动成果,象征性的设置为收费合集(#网络安全攻防等保 点击查看 ),希望大家理解支持!

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

好了废话不多说,此处我将本文其分为三个章节,没小节包含了配置Shell脚本函数片段:

  • 第一节,主要针对 OpenEuler 24.03 系统初始化运维配置实践。

  • 第二节,主要针对 OpenEuler 24.03 系统内核参数及服务优化实践。

  • 第三节,主要针对 OpenEuler 24.03 系统安全加固实践。

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

0x01 主机系统配置

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

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

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

实践环境:

# 系统版本
cat /etc/openEuler-release
  # openEuler release 24.03 (LTS-SP1)

# 内核版本
6.6.0-72.0.0.76.oe2403sp1.x86_64

1.主机系统网络配置

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

示例片段

# 0.os-network.sh
# Backup the original network config file
cp -a /etc/sysconfig/network-scripts/ifcfg-${VAR_NETINTERFACE} /tmp

# Modify the IP/MASK and Gateway
VAR_MODE="static"
VAR_NETINTERFACE=ens18
VAR_IP=10.20.172.58/24
VAR_GATEWAY=10.20.172.1
# Modify the DNS server
VAR_DNS_SERVER=( "192.168.10.254""223.5.5.5""119.29.29.29" )

sudo tee /opt/network.sh <<'EOF'
#!/bin/bash
# @Description: Configure OpenEuler 2403 LTS Network
# @Author: WeiyiGeek
# @E-mail: master@weiyigeek.top
# @Blog: https://www.weiyigeek.top
if [[ $# -lt 2 ]];then
echo"Usage: $0 interface mode ip_address/netmask gateway dns-server"
echo"Example: $0 ens18 [dhcp|static] 192.168.12.12/24 192.168.12.1 223.6.6.6"
echo"@Author: WeiyiGeek"
echo"@Blog: https://blog.weiyigeek.top"
exit
fi

# 检查接口是否存在
interface=${1}
mode=${2}
ip link show ${interface} > /dev/null 2>&1 
if [[ $? -ne 0 ]];then
echo"错误: ${1} 网卡未找到."
exit 1
fi

# 网卡配置信息
IP=${3%%/*}
NETMASK=${3##*/}
GATEWAY=${4}
DNS=${5}
CURRENT_IP=$(ip -4 addr show scope global | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -n 1)
CURRENT_GATEWAY=$(ip route show default | awk '/default/ {print $3}')
CURRENT_FILE=/etc/sysconfig/network-scripts/ifcfg-${interface}
echo"当网络信息: IP: ${CURRENT_IP} , GATEWAY: ${CURRENT_GATEWAY}"
echo"预设置网络信息: ${interface}, IP/NETMASK: ${IP}/${NETMASK} , GATEWAY: ${GATEWAY}, DNS: ${DNS}"

# 检查 NetworkManager 服务,验证是否使用 nmcli 命令进行配置
if systemctl is-active --quiet NetworkManager; then
  USE_NMCLI=true
else
  USE_NMCLI=false
fi

# 配置网络模式
case$modein
    dhcp)
        if$USE_NMCLI; then
            nmcli connection modify $interface ipv4.method auto
            nmcli connection up $interface
        else
            egsed -i -e "/BOOTPROTO=/c\BOOTPROTO=dhcp" -e "/ONBOOT=/c\ONBOOT=yes"${CURRENT_FILE}
            systemctl restart network
        fi
        echo"网络已配置为DHCP模式"
        ;;
    static)
        if [[ -z "$IP" || -z "$NETMASK" || -z "$GATEWAY" ]]; then
            echo"错误:静态IP模式需要提供IP地址、子网掩码和网关"
            return 1
        fi

        if$USE_NMCLI; then
            nmcli connection modify $interface \
                ipv4.method manual \
                ipv4.addresses "$IP/$NETMASK" \
                ipv4.gateway "$GATEWAY" \
                ipv4.dns "$DNS"
            nmcli connection up $interface
        else
            # 已存在网卡配置文件的情况下
            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=${IP}/"${CURRENT_FILE}|| echo"IPADDR=${IP}" >> ${CURRENT_FILE}
            egrep -q "^\s*PREFIX=.*$"${CURRENT_FILE} && sed -ri "s/^\s*PREFIX=.*$/PREFIX=${NETMASK}/"${CURRENT_FILE}|| echo"PREFIX=${NETMASK}" >> ${CURRENT_FILE}
            egrep -q "^\s*GATEWAY=.*$"${CURRENT_FILE} && sed -ri "s/^\s*GATEWAY=.*$/GATEWAY=${GATEWAY}/"${CURRENT_FILE}|| echo"GATEWAY=${GATEWAY}" >> ${CURRENT_FILE}
            egrep -q "^\s*DNS1=.*$"${CURRENT_FILE} && sed -ri "s/^\s*DNS1=.*$/DNS1=${DNS}/"${CURRENT_FILE}|| echo"DNS1=${DNS}" >> ${CURRENT_FILE}
            systemctl restart network
        fi
        echo"网络已配置为静态IP模式"
        ;;
    *)
        echo"错误:无效的模式,请使用 dhcp 或 static"
        return 1
        ;;
esac

# 添加 IP 地址和掩码示例
# sudo ip addr add ${IP} dev $interface
# 修改默认网关示例
# sudo ip route add default via ${CURRENT_GATEWAY} dev $interface
# 若存在 nmcli 命令则可以使用如下命令
# nmcli conn add connection.id $interface connection.interface-name ${interface} connection.autoconnect yes type Ethernet ifname ${interface} ipv4.method manual ipv4.address ${IP} ipv4.gateway ${GATEWAY} ipv4.dns ${DNS} ipv4.ignore-auto-dns true
EOF
sudo chmod +x /opt/network.sh

# 执行网卡配置脚本文件
/opt/network.sh ${VAR_NETINTERFACE}${VAR_MODE}${VAR_IP}${VAR_GATEWAY}${VAR_DNS_SERVER}

知识补充:当然在你使用手动方式配置完网络后,你可能需要重新加载或重启网络服务来使更改生效。你可以执行以下命令来实现:

# 重新加载网络配置
# 检查 NetworkManager 服务,验证是否使用 nmcli 命令进行配置
if systemctl is-active --quiet NetworkManager; then
  USE_NMCLI=true
else
  USE_NMCLI=false
fi

if$USE_NMCLI; then
# 重启 NetworkManager 服务(会重载所有配置)然后显式启用连接
  sudo systemctl restart NetworkManager
  sudo nmcli connection up ${VAR_NETINTERFACE}
else
# 重启 network 服务
  sudo systemctl restart network
fi
# 查看配置是否生效
  ip addr show ${VAR_NETINTERFACE}

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

描述: 在完成系统主机的IP地址的配置后,若需要单独为主机配置私有DNS服务器或者公共的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""114.114.114.114""192.168.4.254")

# 备份DNS配置文件
cp -a /etc/resolv.conf /tmp

# 清空原始的DNS配置文件
truncate -s 0 /etc/resolv.conf

# 配置DNS服务器地址
# 添加多个 DNS(最多支持 3 个,空格分隔)
DNS="${VAR_DNS_SERVER[@]}"
# IPV4
sudo nmcli connection modify "${VAR_NETINTERFACE}" ipv4.dns "${DNS}"
# IPV6
# sudo nmcli connection modify "ens18" ipv6.dns "2001:4860:4860::8888 2400:3200::1"
# 使配置立即生效
sudo nmcli connection down "${VAR_NETINTERFACE}" && sudo nmcli connection up "${VAR_NETINTERFACE}"
# 配置验证
nmcli device show "${VAR_NETINTERFACE}" | grep DNS

网站公告

今日签到

点亮在社区的每一天
去签到