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

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

640.jpg

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


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


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

640.jpg

确定好分区方案


640.jpg


2、yum update更新


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


注意yum update 与yum upgrade的区别

640.png


640.png

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


640.jpg


3、YUM软件源配置


YUM源及EPEL源设置


4、常用软件包的安装


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

640.png

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

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


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


5、编写安全加固脚本


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


例如SSH的一些安全加固项

640.jpg

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


上传安全加固脚本并执行

640.jpg

640.jpg

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

640.jpg


640.jpg

脚本涉及加固项


  • 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_histroyhistory -c/var/log/目录下系统日志进行清理如果是公有云平台,云厂商制作镜像时自动把这些操作包含进去
  • 2)删除相关基线检查自动化工具
  • 3)删除加固脚本等等清理操作,总之保证制作镜像前环境是干净的


8、关闭虚拟机制作镜像


关闭虚拟机制作镜像

640.png



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


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

相关文章
|
2月前
|
Linux 开发工具 数据安全/隐私保护
CentOS7安装流程步骤详细教程
【8月更文挑战第22天】
287 2
CentOS7安装流程步骤详细教程
|
2月前
|
缓存 运维 Linux
深入解析:一步步掌握 CentOS 7 安装全流程及运维实战技巧
深入解析:一步步掌握 CentOS 7 安装全流程及运维实战技巧
|
2月前
|
Java Linux Docker
CentOS7 Docker 安装,配置国内镜像
CentOS7 Docker 安装,配置国内镜像
597 2
|
2月前
|
Ubuntu Linux 测试技术
下载ISO镜像的方法 Debian、Red Hat 、CentOS、Ubuntu、Kali Linux🌐
Debian、Red Hat、CentOS、Ubuntu与Kali Linux均为知名Linux发行版。下载Debian须访问官网并按计算机架构选ISO文件。Red Hat下载通常需订阅账户,可从官网登录后获取。CentOS可从官网或镜像站点下载,注意CentOS 8已停更。Ubuntu下载简便,官网直接选取版本及架构即可。Kali Linux专为安全测试设计,官网提供直接下载ISO镜像服务。
292 0
|
4月前
|
弹性计算 安全 Cloud Native
Alibaba Cloud Linux镜像系统超好用!兼容CentOS生态,性能稳定性绝对可以!
Alibaba Cloud Linux是阿里云的自研Linux发行版,兼容CentOS/RHEL,提供长期免费支持。它针对云服务器ECS优化,适用于多种场景,如Web服务、云原生应用等。Alibaba Cloud Linux 3基于Anolis OS 8,提供安全、高性能、十年维护及丰富的开源生态。用户可在ECS购买时选择镜像安装,支持多架构并提供热补丁、解决方案和快速启动版。更换ECS操作系统是免费的。
429 5
|
3月前
|
Linux Shell 数据安全/隐私保护
centos 开机启动流程、开机运行级别
centos 开机启动流程、开机运行级别
|
4月前
|
Java Linux Maven
Centos7.6安装Maven3.8.3并配置阿里云镜像
Centos7.6安装Maven3.8.3并配置阿里云镜像
480 0
|
4月前
|
Linux
centos7安装maven3.8.1并配置阿里云镜像
centos7安装maven3.8.1并配置阿里云镜像
420 0
|
4月前
|
缓存 Linux 开发工具
win10下docker desktop:使用dockerfile基于CentOS:8创建可以使用vim的镜像
win10下docker desktop:使用dockerfile基于CentOS:8创建可以使用vim的镜像
179 0
|
5月前
|
存储 Linux Docker
CentOS7修改Docker容器和镜像默认存储位置
CentOS7修改Docker容器和镜像默认存储位置
下一篇
无影云桌面