专栏首页WalkingCloudCentOS7.9安全加固镜像制作流程梳理

CentOS7.9安全加固镜像制作流程梳理

CentOS7.9安全加固镜像制作流程梳理

1、先准备一台CentOS7.9虚拟机

准备虚拟机用于后面脚本的优化

(图片可放大查看)

确定好分区方案

(图片可放大查看)

2、yum update更新

  • 先yum update 检查是否新的更新
  • 完成后再yum check-upate

注意yum update 与yum upgrade的区别

(图片可放大查看)

是否删除原低版本内核的启动项 这个可以自行决定

(图片可放大查看)

3、YUM软件源配置

YUM源及EPEL源设置

4、常用软件包的安装

例如vim lrzsz bash-completion net-tools wget git

(图片可放大查看)

当然也可以加入排查需要的一些工具包nmap htop nmon iftop ncdu nethogs tcpdump

以上初始环境完成后,建议对该虚拟机做一下快照

因为下面编写安全加固脚本是一件很冗杂的事,需要初始环境作为沙盘来进行反复测试与验证加固脚本

5、编写安全加固脚本

脚本需要从诸如账号管理,口令策略,授权管理,服务管理,配置管理,网络管理,权限管理等多个角度提高CentOS Linux的安全性。

例如SSH的一些安全加固项

(图片可放大查看)

6、借助云厂商的基线检查自动化工具进行验证

上传安全加固脚本并执行

(图片可放大查看)

(图片可放大查看)

通过自动化基线检查不断完善加固脚本

(图片可放大查看)

(图片可放大查看)

脚本涉及加固项

  • 1)、/etc/pam.d/sshd 中加入pam_tally2.so 设置多次登录失败锁定
  • 2)、/etc/logrotate.conf中修改系统相关日志轮转及保留时间
  • 3)、历史命令添加时间戳格式
  • 4)、rsyslog日志转发到日志服务器
  • 5)、SELINUX关闭
  • 6)、umask值
  • 7)、登陆超时时间设置TMOUT

等等,这里不详细列举了

总之你能想到的加固项越全面越好,可以集思广益,不断来完善脚本

我这边改写的脚本部分内容如下

#!/usr/bin/env bash
# Author:       yuanfan 
# Date:         2021-07-03 
#sec_system.sh 系统加固脚本
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

RGB_DANGER='\033[31;1m'
RGB_WAIT='\033[37;2m'
RGB_SUCCESS='\033[32m'
RGB_WARNING='\033[33;1m'
RGB_INFO='\033[36;1m'
RGB_END='\033[0m'

CHECK_CENTOS=$( cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/' )
CHECK_RAM=$( cat /proc/meminfo | grep "MemTotal" | awk -F" " '{ram=$2/1000000}{printf("%.0f",ram)}' )

LOCK=/var/log/sec_centos7_record.log

tool_info() {
    echo -e "========================================================================================="
    echo -e "                             InitSec CentOS 7 Script                                     "
    echo -e "========================================================================================="
}

check_root(){
    if [[ $EUID -ne 0 ]]; then
        echo -e "${RGB_DANGER}This script must be run as root!${RGB_END}"
        exit 1
    fi
}

check_lock() {
    if [ ! -f "$LOCK" ];then
        touch $LOCK
    else
        echo -e "${RGB_DANGER}Detects that the initialization is complete and does not need to be initialized any further!${RGB_END}"
        exit 1
    fi
}

check_os() {
    if [ "${CHECK_CENTOS}" != '7' ]; then
        echo -e "${RGB_DANGER}This script must be run in CentOS 7!${RGB_END}"
        exit 1
    fi
}

new_swap() {
    echo "============= swap =============" >> ${LOCK} 2>&1
    if [ "${CHECK_RAM}" -le '2' ]; then
    echo -en "${RGB_WAIT}Configuring...${RGB_END}"
    dd if=/dev/zero of=/swapfile bs=1024 count=1048576 >> ${LOCK} 2>&1
    chmod 600 /swapfile >> ${LOCK} 2>&1
    mkswap /swapfile >> ${LOCK} 2>&1
    swapon /swapfile >> ${LOCK} 2>&1
    echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
    echo '# Swap' >> /etc/sysctl.conf
    echo 'vm.swappiness = 10' >> /etc/sysctl.conf
    sysctl -p >> ${LOCK} 2>&1
    sysctl -n vm.swappiness >> ${LOCK} 2>&1
    echo -e "\r${RGB_SUCCESS}Configuration Success${RGB_END}"
    else
    echo -e "${RGB_SUCCESS}Skip, no configuration needed${RGB_END}"
    fi
}

open_bbr() {
    echo "============= bbr =============" >> ${LOCK} 2>&1
    echo -en "${RGB_WAIT}Configuring...${RGB_END}"
    echo "# BBR" >> /etc/sysctl.conf
    echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
    #echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
    sysctl -p >> ${LOCK} 2>&1
    sysctl -n net.ipv4.tcp_congestion_control >> ${LOCK} 2>&1
    lsmod | grep bbr >> ${LOCK} 2>&1
    echo -e "\r${RGB_SUCCESS}Configuration Success${RGB_END}"
}

disable_selinux() {
    echo "============= selinux  =============" >> ${LOCK} 2>&1
    echo -en "${RGB_WAIT}Configuring...${RGB_END}"
    setenforce 0 >> ${LOCK} 2>&1
    sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config
    echo -e "\r${RGB_SUCCESS}Configuration Success${RGB_END}"
}

time_zone() {
    echo "============= time zone =============" >> ${LOCK} 2>&1
    echo -en "${RGB_WAIT}Configuring...${RGB_END}"
    rm -rf /etc/localtime >> ${LOCK} 2>&1
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> ${LOCK} 2>&1
    ls -ln /etc/localtime >> ${LOCK} 2>&1
    echo -e "\r${RGB_SUCCESS}Configuration Success${RGB_END}"
}

custom_profile() {
    echo "============= custom profile =============" >> ${LOCK} 2>&1
    echo -en "${RGB_WAIT}Configuring...${RGB_END}"
cat > /etc/profile.d/history_command_record.sh  << \EOF
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`] "
export PROMPT_COMMAND='\
if [ -z "$OLD_PWD" ];then
        export OLD_PWD=$PWD;
fi;
if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then
        logger -t `whoami`_shell_cmd "[$OLD_PWD]$(history 1)";
fi;
export LAST_CMD="$(history 1)";
export OLD_PWD=$PWD;'
export PATH=$PATH:$HISTTIMEFORMAT:$PROMPT_COMMAND
EOF
    cat > /etc/profile.d/centos7custom.sh << EOF
PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[35;40m\]\W\[\e[0m\]]\\\\$ "
GREP_OPTIONS="--color=auto"
alias l='ls -AFhlt'
alias grep='grep --color'
alias egrep='egrep --color'
alias fgrep='fgrep --color'
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S  "
EOF
    cat /etc/profile.d/centos7custom.sh >> ${LOCK} 2>&1
    echo -e "\r${RGB_SUCCESS}Configuration Success${RGB_END}"
}

adjust_ulimit() {
    echo "============= adjust ulimit =============" >> ${LOCK} 2>&1
    echo -en "${RGB_WAIT}Configuring...${RGB_END}"
    sed -i '/^# End of file/,$d' /etc/security/limits.conf
    cat >> /etc/security/limits.conf <<EOF
# End of file
* soft core unlimited
* hard core unlimited
* soft nproc 1000000
* hard nproc 1000000
* soft nofile 1000000
* hard nofile 1000000
root soft core unlimited
root hard core unlimited
root soft nproc 1000000
root hard nproc 1000000
root soft nofile 1000000
root hard nofile 1000000
EOF
    cat /etc/security/limits.conf >> ${LOCK} 2>&1
    echo -e "\r${RGB_SUCCESS}Configuration Success${RGB_END}"
}

7、清理操作

在制作镜像前需要做一些清理

  • 1)清空历史命令及系统的一些日志 echo > /root/.bash_histroy history -c /var/log/目录下系统日志进行清理 如果是公有云平台,云厂商制作镜像时自动把这些操作包含进去
  • 2)删除相关基线检查自动化工具
  • 3)删除加固脚本 等等清理操作,总之保证制作镜像前环境是干净的

8、关闭虚拟机制作镜像

关闭虚拟机制作镜像

(图片可放大查看)

最后使用自定义镜像创建实例进行验证

如果要在生产环境中使用的话,还需要进行稳定性测试

本文分享自微信公众号 - WalkingCloud(WalkingCloud2018),作者:yuanfan2012

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-07-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 利用蒲公英组建个人私有网络的简单教程

    制作带有 Intel 2.5G网卡驱动的镜像来解决ESXi7.0U2安装时找不到板载有线网卡问题

    yuanfan2012
  • Vagrant Box 镜像准备:Packer 打包 Centos 7.9 系统

    使用 vagrant 的前提是要有 box 镜像盒子来初始化系统,网上有很多 box 可以下载,但是用自己的不是更香吗?自己动手,丰衣足食!

    Lucifer三思而后行
  • CentOS7下离线安装KubeSphere3.0集群

    KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。...

    yuanfan2012
  • CentOS-7.9 手把手安装教程(多图+贴镜像文件 | 虚拟机)

    继 6.8 以后这一篇 7 大版本的搁着挺久没弄了,后面准备重新整理的 Redis 准备用 linux 来讲,所以正好重装一台虚拟机,顺便贴一下过程

    BWH_Steven
  • 开源虚拟化平台oVirt4.3简单搭建实践

    oVirt是一套开源分布式虚拟化解决方案,是RedHat虚拟化管理平台RHEV的开源版本,oVirt基于开源社区项目构建,包括libvirt,Gluster,P...

    yuanfan2012
  • 大蕉说k8s(2)-Docker&Docker化 No.198

    之前聊过,容器跟虚拟机的区别,就在于虚拟机使用了名为 Hypervisor 的 软件 它通过硬件虚拟化功能,模 拟出了运行一个操作系统需 要的各种硬件,比如 C...

    大蕉
  • 基于Kubernetes 构建.NET Core 的技术体系

    很多公司技术支持岗位的工作,如配置域名,部署环境,修改复位配置,服务重启,扩容缩容,梳理和完善监控,根据开发的需要查找日志等工作,需要和开发进行大量的沟通,如什...

    张善友
  • CC1310空中升级笔记02 CC26xx_CC13xx_BLE_OAD_例程梳理

    在CC1310空中升级笔记01中,TI员工提到了CC26系列已经有实现的OAD的例程。本文大部分资料参考了《CC2640 Over-the-Air Downlo...

    twowinter
  • DLink RCE漏洞CVE-2019-17621分析

    上一篇文章分了一下ARM系统的路由器漏洞,本次打算尝试一下MIPS系统,于是选了最近DLink路由器的漏洞CVE-2019-17621作为目标。同样一路走来各种...

    FB客服
  • 蓝队反入侵工作经验分享

    何为反入侵?那就要先知道什么是入侵行为,这里的入侵主要指通过各种方式进入企业公司内部,获取权限,盗取数据的行为,也就是咱们通常所说的红队的成功的入侵行为,而反入...

    信安之路
  • 腾讯代码安全指南开源,涉及C/C++、Go等六门编程语言

    腾讯代码安全指南旨在梳理API层面的风险点并提供详实可操作的编码指引,是我们开展DevSecOps安全左移实践探索过程中,梳理沉淀面向开发人员的代码安全参考材料...

    腾讯安全应急响应中心
  • 『高级篇』docker之gitlab和jenkins安装(42)

    PS:可能有的插件安装不了,不要慌老铁,进入到jenkins的管理页面会提示你更新jenkins更新下,然后插件又可以自动下载安装完毕了。

    IT架构圈
  • TKEStack适配ARM架构之路

    腾讯TKEStack作为面向私有云业务场景的开源容器平台,应对的场景也会比较多样,比如国产服务器有一大阵营是基于arm架构的,那在国产化趋势下,客户的服务器架构...

    哈里
  • SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战

    本文章主要讲述Docker、Jenkins、GitLab、Git、JDK、SpringBoot、Maven等技术结合实现自动化运维部署(DevOps)应用工程,...

    JAVA葵花宝典
  • 【腾讯云】云镜-主机安全防护解决方案

    主机安全,其核心内容包括安全应用交付系统、应用监管系统、操作系统安全增强系统和运维安全管控系统。它的具体功能是指保证主机在数据存储和处理的保密性、完整性,可用性...

    云加社区
  • 云帮社区版5月升级,全面支持后端服务高可用,修复了若干Bug

    Rainbond开源
  • 案例 | 信安运维基于 TKE 平台的容器技术实践

    汤英康,腾讯高级工程师、Kubernetes 开源协同 PMC,负责TEG信息安全部的容器化上云相关工作。 引言 截止到2021年5月,TEG 信安运维团队历...

    腾讯云原生
  • Openshift容器云安全加固措施70项

    前言 企业中使用容器承载业务,除了考虑到容器的优势之外,容器的安全更是很多客户关心的话题。本篇文章就此进行讨论。本文在书写过程中,参考了一些文档,文后给出了链接...

    魏新宇
  • 资产安全管理的“智胜法宝”|资产识别篇

    早在2015年,斗象科技在首届FIT互联网安全创新大会上提出了以IT资产为核心构建企业安全风险检测防御体系,并以此为核心理念自主研发了全息智能安全威胁分析系统—...

    FB客服

扫码关注云+社区

领取腾讯云代金券