云计算百科
云计算领域专业知识百科平台

网安等保 | 主机安全之CentOS7服务器系统安全加固与优化实践指南

747fe41f984c760d076fab51e52041c2.gif

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

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

文章目录:

b040106642a79b1c8d59dc59a0bc1f47.png

0x00 前言简述

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

完整链接:网安等保 | 主机安全之CentOS7服务器系统安全加固与优化实践指南在当今数字化时代,企业服务器承载着核心业务和数据,其安全性至关重要,当下虽然CentOS7早已停止维护更新了,但是企业中还是有大量的服务器上使用此版本系统,同时编写道友所需CentOS7服务器系统安全加固脚本,以通过等保三级主机安全合规检查https://mp.weixin.qq.com/s/tH_dXclrbpzL7QPcj-TbFA

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

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

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

请在【全栈工程师修炼指南】公众号中回复【CentOS7安全加固】关键字获取CentOS7安全加固视频及其文档,在文末获取此安全脚本的网盘链接。

此处作者我,已经将其写成一个Shell项目,各位看官可以直接运行加固,大大的节省了我们运维人的时间,最后我会将CentOS7 安全加固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}"
echo"温馨提示:使用前先请配置机器上网环境及其在config文件夹中的CentOS7.conf配置进行对应配置."
exit 0
}

1a3934dbea20372027353ab3436b8685.png

weiyigeek.top-CentOS7脚本安全加固脚本图

CentOS7-InitializeReinforce 安全加固脚本的使用语法:

# 常用命令示例:
# 网络设置(需要提前在centos7.cong进行配置)
./CentOS7-InitializeReinforce –network

# 进行自动安全加固
./CentOS7-InitializeReinforce –start

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

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

系统主机加固后的登录系统系统,显示信息如下所示:

ssh -p 20211 admin@10.20.172.232
************************* [ 安全登陆 (Security Login) ] *************************
Authorized users only. All activity will be monitored and reported.By IT Department Security Center.
Manager: IT Department
Security Center: https://sec.weiyigeek.top

bf0b89285e347b9b63d1293433bb9306.png

weiyigeek.top-系统加固后登录图

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

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

  • Ubuntu-22.04-LTS系统安全加固:https://mp.weixin.qq.com/s/dO1bV0tfXKn4ZmqlMcUrrQ

  • KylinOS-V10系统安装配置:https://mp.weixin.qq.com/s/eBF_Q-WkiZHKGdEG1MODNQ

  • KylinOS-V10系统安全加固: https://mp.weixin.qq.com/s/yqd1Qtog9wy8L5sgvgcEOQ

  • CentOS Steam 8 系统安全加固:https://mp.weixin.qq.com/s/WrwzkNaTGQ_xss727_ag9g

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

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

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

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

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


0x01 主机系统配置

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

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

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

1.主机系统网络配置

描述: 一台新安装的主机必须配置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/ifcfg-${VAR_NETINTERFACE} /tmp

# 创建网卡配置脚本文件及权限赋予
if [ ! -f /opt/init/ ];then
  mkdir -vp /opt/init/
sudo tee /opt/init/network.sh <<'EOF'
#!/bin/bash
# @Description: Configure CentOS Linux 7 Network
# @Author: WeiyiGeek
# @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=none/"${CURRENT_FILE}|| echo"BOOTPROTO=none" >> ${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
# 修改 IP 地址和掩码
  sudo ip addr add ${2} dev ${1}
# 修改默认网关
  sudo ip route add default via ${3} dev ${1}
# 若存在 nmcli 命令则可以使用如下命令
# 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
EOF
sudo chmod +x /opt/init/network.sh

# 执行网卡配置脚本文件
echo"Try Run: /opt/init/network.sh ${VAR_NETINTERFACE} ${VAR_IP} ${VAR_GATEWAY} ${VAR_DNS_SERVER}"
/opt/init/network.sh ${VAR_NETINTERFACE}${VAR_IP}${VAR_GATEWAY}${VAR_DNS_SERVER}

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

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

完整链接:网安等保 | 主机安全之CentOS7服务器系统安全加固与优化实践指南在当今数字化时代,企业服务器承载着核心业务和数据,其安全性至关重要,当下虽然CentOS7早已停止维护更新了,但是企业中还是有大量的服务器上使用此版本系统,同时编写道友所需CentOS7服务器系统安全加固脚本,以通过等保三级主机安全合规检查https://mp.weixin.qq.com/s/tH_dXclrbpzL7QPcj-TbFA

赞(0)
未经允许不得转载:网硕互联帮助中心 » 网安等保 | 主机安全之CentOS7服务器系统安全加固与优化实践指南
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!