• Centos7 安全优化脚本


    1、1.0版本

    #!/bin/bash
    #当前版本仅支持CentOS7的系统
    
    
    if [ `whoami` != 'root' ]; then
        echo -e "e[1;31m 请使用root执行... e[1;31m"
        exit 1
    fi
    
    SYSTEM_VERSION=`lsb_release  -i|awk '{print $NF}'`
    KERNEL_VERSION=`uname -r|awk -F'.' '{print $1}'`
    RELEASE_VERSION=`lsb_release -r|awk -F"[ 	]+"+ '{print $2}'`
    #终端超时时间
    TMOUT=600
    #密码最小长度
    PASS_MIN_LEN=8
    #密码最大有效期
    PASS_MAX_DAYS=90
    #修改密码的最小间隔时间
    PASS_MIN_DAYS=2
    
    
    centos7_system_security_strengthening(){
        #datetime=`date +%Y%m%d%H%M`
        cp /etc/profile{,.security_default.bak}
        cp /etc/login.defs{,.security_default.bak}
        cp /etc/pam.d/system-auth{,.security_default.bak}
        cp /etc/pam.d/sshd{,.security_default.bak}
        cp /etc/pam.d/login{,.security_default.bak}
        cp /etc/ssh/sshd_config{,.security_default.bak}
        cp /etc/pam.d/password-auth{,.security_default.bak}
        cp /etc/pam.d/system-auth{,.security_default.bak}
        
        sed -i "/`grep 'HISTSIZE='  /etc/profile`/a TMOUT=${TMOUT}"  /etc/profile
        sed -ri "s#^(PASS_MAX_DAYS)([	 ]+)([0-9]+)#12${PASS_MAX_DAYS}#g" /etc/login.defs
        sed -ri "s#^(PASS_MIN_LEN)([	 ]+)([0-9]+)#12${PASS_MIN_LEN}#g" /etc/login.defs
        sed -ri "s#^(PASS_MIN_DAYS)([	 ]+)([0-9]+)#12${PASS_MIN_DAYS}#g" /etc/login.defs
        
        #启用登录失败处理功能
        echo "password requisite pam_cracklib.so retry=3 difok=2 minlen=8 lcredit=-1 dcredit=-1" >> /etc/pam.d/system-auth
        echo "auth required pam_tally2.so  onerr=fail  deny=3  unlock_time=60 even_deny_root root_unlock_time=60" >> /etc/pam.d/system-auth
        echo "auth required pam_tally2.so deny=3 unlock_time=60 even_deny_root root_unlock_time=60" >> /etc/pam.d/sshd
        echo "auth required pam_tally2.so deny=3 unlock_time=60 even_deny_root root_unlock_time=60" >> /etc/pam.d/login
        
        
        #sshd
        sed -ri  "s:^(#LogLevel)([ ]+)(.*):LogLevel2 INFO:g"  /etc/ssh/sshd_config 
        sed -ri  "s:^(#)(ClientAliveInterval)([ ]+)([0-9]+):23900:g"  /etc/ssh/sshd_config 
        sed -ri  "s:^(#)(ClientAliveCountMax)([ ]+)([0-9]+):230:g"  /etc/ssh/sshd_config 
        sed -ri  "s:^(#)(PermitEmptyPasswords)([ ]+)([a-z]+):234:g"  /etc/ssh/sshd_config 
        sed -ri  "s:^(#)(MaxAuthTries)([ ]+)([0-9]+):234:g"  /etc/ssh/sshd_config
        if [ `grep -i  Protocol /etc/ssh/sshd_config|wc -l` -eq 0 ]; then
            sed -i "20a Protocol 2" /etc/ssh/sshd_config
        else
            sed  -ri "s#^(Protocol)([ ]+)([0-9])#122#g" /etc/ssh/sshd_config
        fi
        
        #重启sshd
        systemctl  restart sshd
        
        
        #文件权限修改
        chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow
        chmod 644 /etc/group 
        chmod 644 /etc/passwd 
        chmod 400 /etc/shadow 
        chmod 400 /etc/gshadow
        
        
        #开启地址空间布局随机化
        sysctl -w kernel.randomize_va_space=2
        
        #强制用户不重用最近5个使用的密码,降低密码猜测攻击风险
        sed -ri "s#^(password    sufficient)(.*)#12 remember=5#g" /etc/pam.d/password-auth
        sed -ri "s#^(password    sufficient)(.*)#12 remember=5#g"  /etc/pam.d/system-auth
        
        #检查密码长度和密码是否使用多种字符类型
        sed -ri "s:^(# )(minlen = )([0-9]):210:g"  /etc/security/pwquality.conf
        sed -ri "s:^(# )(minclass = )([0-9]):23:g"  /etc/security/pwquality.conf
        
        #内核优化
    
    }
    
    centos_reset(){
        cp -f /etc/profile.security_default.bak             /etc/profile   
        cp -f /etc/login.defs.security_default.bak          /etc/login.defs
        cp -f /etc/pam.d/system-auth.security_default.bak   /etc/pam.d/system-auth
        cp -f /etc/pam.d/sshd.security_default.bak          /etc/pam.d/sshd
        cp -f /etc/pam.d/login.security_default.bak         /etc/pam.d/login
        cp -f /etc/ssh/sshd_config.security_default.bak     /etc/ssh/sshd_config
        cp -f /etc/pam.d/password-auth.security_default.bak /etc/pam.d/password-auth
        cp -f /etc/pam.d/system-auth.security_default.bak   /etc/pam.d/system-auth
        rm -f /etc/profile.security_default.bak            
        rm -f /etc/login.defs.security_default.bak         
        rm -f /etc/pam.d/system-auth.security_default.bak  
        rm -f /etc/pam.d/sshd.security_default.bak         
        rm -f /etc/pam.d/login.security_default.bak        
        rm -f /etc/ssh/sshd_config.security_default.bak    
        rm -f /etc/pam.d/password-auth.security_default.bak
        rm -f /etc/pam.d/system-auth.security_default.bak 
        systemctl restart sshd 
    }
    
    is_system_version(){
        case $SYSTEM_VERSION in
            CentOS)
            if [ `echo $RELEASE_VERSION 7 8|xargs  -n 1|sort  -V|awk NR==2` == $RELEASE_VERSION ]; then
                centos7_system_security_strengthening
            else
                echo -e "e[1;31m 当前脚本仅支支持CentOS7系统... e[1;31m"
                exit 3
            fi
            ;;
            *)
            echo -e "e[1;31m 当前系统部署CentOS系统 e[1;31m"
            exit 4
            ;;
        esac
    
    }
    
    
    case $1 in
        reset)
        if [ -f /etc/profile.security_default.bak -a -f /etc/login.defs.security_default.bak -a -f /etc/pam.d/system-auth.security_default.bak -a -f  /etc/pam.d/login.security_default.bak -a -f /etc/ssh/sshd_config.security_default.bak -a -f /etc/pam.d/password-auth.security_default.bak -a -f /etc/pam.d/system-auth.security_default.bak ]; then
            centos_reset
        else
            echo -e "e[1;31m 安全优化备份文件不存在... e[1;31m"
            exit 2
        fi
        ;;
        '')
        is_system_version
        ;;
        *)
        echo -e "e[1;31m 仅允许传输reset与空内容 e[1;31m"
        exit 5
        ;;
    
    esac
    系统安全优化
  • 相关阅读:
    Python基本语法_输入/输出语句详解
    集成骨骼动画Spine的几点经验
    标量 ,数组,hash 引用
    阿里RDS中插入emoji 表情插入失败的解决方案
    Target runtime Apache Tomcat v7.0 is not defined.
    销售行业ERP数据统计分析都有哪些维度?
    mysql 基于时间点恢复
    perl 闭包
    房地产企业营销分析系统建设中的关键性指标是什么?
    Python基本语法_运算符详解
  • 原文地址:https://www.cnblogs.com/zhangb8042/p/14308144.html
Copyright © 2020-2023  润新知