centos ssr一键脚本_CentOS7一键安全加固及系统优化脚本

该脚本从GitHub获取并基于原文档进行了调整,旨在为CentOS7系统进行安全加固和性能优化。内容包括:禁用SELinux和firewalld,配置BBR加速,创建交换分区,调整内核参数,优化updatedb,启用IPv6,设置账户锁定策略等18个步骤。脚本执行后,系统将被记录为已初始化,避免重复运行。
摘要由CSDN通过智能技术生成

点击上方"walkingcloud"关注

cd39bc8fe6b6382604c35fdc72ea824a.png

CentOS7一键安全加固及系统优化脚本

init_centos7.sh 脚本内容如下

脚本说明:本脚本在 https://github.com/vtrois/spacepack上下载,并在其脚本基础上做了调整,根据前期CentOS7安全加固系列文章,添加了部分加固项

#!/usr/bin/env bash## Author:       Seaton Jiang # Github URL:   https://github.com/vtrois/spacepack# License:      MIT# Date:         2020-08-13export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/binRGB_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/init_centos7_record.logtool_info() {    echo -e "========================================================================================="    echo -e "                              Init CentOS 7 Script                                       "    echo -e "          For more information please visit https://github.com/vtrois/spacepack          "    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 "${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 "${RGB_SUCCESS}Configuration Success${RGB_END}"}disable_software() {    echo "============= selinux firewalld =============" >> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    setenforce 0 >> ${LOCK} 2>&1    sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config    systemctl disable firewalld.service >> ${LOCK} 2>&1 systemctl stop firewalld.service >> ${LOCK} 2>&1    echo -e "${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 "${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/centos7init.sh <> ${LOCK} 2>&1    echo -e "${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 <> ${LOCK} 2>&1    echo -e "${RGB_SUCCESS}Configuration Success${RGB_END}"}kernel_optimum() {    echo "============= kernel optimum =============" >> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    [ ! -e "/etc/sysctl.conf_bak" ] && /bin/mv /etc/sysctl.conf{,_bak}    cat > /etc/sysctl.conf <> ${LOCK} 2>&1    cat /etc/sysctl.conf >> ${LOCK} 2>&1    echo -e "${RGB_SUCCESS}Configuration Success${RGB_END}"}updatedb_optimum() {    echo "============= updatedb optimum =============" >> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    sed -i 's,media,media /data,' /etc/updatedb.conf    cat /etc/updatedb.conf >> ${LOCK} 2>&1    echo -e "${RGB_SUCCESS}Configuration Success${RGB_END}"}open_ipv6() {    echo "============= open ipv6 =============" >> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    echo '# IPV6' >> /etc/sysctl.conf    echo 'net.ipv6.conf.all.disable_ipv6=0' >> /etc/sysctl.conf    echo 'net.ipv6.conf.default.disable_ipv6=0' >> /etc/sysctl.conf    echo 'net.ipv6.conf.lo.disable_ipv6=0' >> /etc/sysctl.conf    sysctl -p >> ${LOCK} 2>&1    cat /etc/sysctl.conf >> ${LOCK} 2>&1    echo -e "${RGB_SUCCESS}Configuration Success${RGB_END}"}disable_cad() {    echo "============= disable cad =============" >> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    systemctl mask ctrl-alt-del.target >> ${LOCK} 2>&1    echo -e "${RGB_SUCCESS}Configuration Success${RGB_END}"}remove_users() {    echo "============= remove users =============" >> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    for u in adm lp sync shutdown halt mail operator games ftp     do    userdel ${u} >> ${LOCK} 2>&1    done    cut -d : -f 1 /etc/passwd >> ${LOCK} 2>&1    for g in adm lp mail games ftp     do    groupdel ${g} >> ${LOCK} 2>&1    done    cat /etc/group >> ${LOCK} 2>&1    echo -e "${RGB_SUCCESS}Configuration Success${RGB_END}"}sys_permissions() {    echo "============= sys permissions =============" >> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    chmod 644 /etc/passwd >> ${LOCK} 2>&1    chmod 644 /etc/group >> ${LOCK} 2>&1    chmod 000 /etc/shadow >> ${LOCK} 2>&1    chmod 000 /etc/gshadow >> ${LOCK} 2>&1    ls -la /etc/passwd >> ${LOCK} 2>&1    ls -la /etc/group >> ${LOCK} 2>&1    ls -la /etc/shadow >> ${LOCK} 2>&1    ls -la /etc/gshadow >> ${LOCK} 2>&1    echo -e "${RGB_SUCCESS}Configuration Success${RGB_END}"}password_policy() {    echo "============= password policy =============" >> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    sed -i 's/^PASS_MAX_DAYS.*$/PASS_MAX_DAYS   90/' /etc/login.defs    sed -i 's/^PASS_MIN_DAYS.*$/PASS_MIN_DAYS   10/' /etc/login.defs    cat /etc/login.defs >> ${LOCK} 2>&1    cat >>/etc/security/pwquality.conf <> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    sed -i 's/^INACTIVE.*$/INACTIVE=180/' /etc/default/useradd    cat /etc/default/useradd >> ${LOCK} 2>&1    echo -e "${RGB_SUCCESS}Configuration Success${RGB_END}"}sec_ssh() {    echo "============= sec ssh =============" >> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    sed -i 's/UseDNS.*$/UseDNS no/' /etc/ssh/sshd_config    sed -i 's/^#LoginGraceTime.*$/LoginGraceTime 60/' /etc/ssh/sshd_config    sed -i 's/^#PermitEmptyPasswords.*$/PermitEmptyPasswords no/' /etc/ssh/sshd_config    sed -i 's/^#PubkeyAuthentication.*$/PubkeyAuthentication yes/' /etc/ssh/sshd_config    sed -i 's/^#MaxAuthTries.*$/MaxAuthTries 3/' /etc/ssh/sshd_config    sed -i "s/#ClientAliveInterval 0/ClientAliveInterval 30/g" /etc/ssh/sshd_config     sed -i "s/#ClientAliveCountMax 3/ClientAliveCountMax 3/g" /etc/ssh/sshd_config    sed -i "s/X11Forwarding yes/X11Forwarding no/g" /etc/ssh/sshd_config    sed -i "s/#Banner none/Banner /etc/issue.net/g" /etc/ssh/sshd_config    echo "Authorized users only. All activity may be monitored and reported.">/etc/issue.net    systemctl restart sshd.service >> ${LOCK} 2>&1    cat /etc/ssh/sshd_config >> ${LOCK} 2>&1    echo -e "${RGB_SUCCESS}Configuration Success${RGB_END}"}timeout_config() {    echo "============= timeout config =============" >> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    echo "export TMOUT=1800" >> /etc/profile.d/centos7init.sh    cat /etc/profile.d/centos7init.sh >> ${LOCK} 2>&1    echo -e "${RGB_SUCCESS}Configuration Success${RGB_END}"}lockout_policy() {    echo "============= lockout policy =============" >> ${LOCK} 2>&1    echo -en "${RGB_WAIT}Configuring...${RGB_END}"    [ ! -e "/etc/pam.d/system-auth_bak" ] && /bin/mv /etc/pam.d/system-auth{,_bak}    cat > /etc/pam.d/system-auth <= 1000 quietauth        [default=1 ignore=ignore success=ok]         pam_localuser.soauth        sufficient                                   pam_unix.so nullok try_first_passauth        [default=die]                                pam_faillock.so  authfail  audit  deny=3  unlock_time=300auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_successauth        sufficient                                   pam_sss.so forward_passauth        required                                     pam_deny.soaccount     required                                     pam_unix.soaccount     sufficient                                   pam_localuser.soaccount     sufficient                                   pam_succeed_if.so uid  /etc/pam.d/password-auth <= 1000 quietauth        [default=1 ignore=ignore success=ok]         pam_localuser.soauth        sufficient                                   pam_unix.so nullok try_first_passauth        [default=die]                                pam_faillock.so  authfail  audit  deny=3  unlock_time=300auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_successauth        sufficient                                   pam_sss.so forward_passauth        required                                     pam_deny.soaccount     required                                     pam_unix.soaccount     sufficient                                   pam_localuser.soaccount     sufficient                                   pam_succeed_if.so uid > ${LOCK} 2>&1    cat /etc/pam.d/etc/pam.d/system-auth >> ${LOCK} 2>&1    cat /etc/pam.d/password-auth >> ${LOCK} 2>&1    echo -e "${RGB_SUCCESS}Configuration Success${RGB_END}"}reboot_os() {    echo -e "${RGB_WARNING}Please restart the server and see if the services start up fine.${RGB_END}"    echo -en "${RGB_WARNING}Do you want to restart OS ? [y/n]: ${RGB_END}"    while :; do        read REBOOT_STATUS        if [[ ! "${REBOOT_STATUS}" =~ ^[y,n]$ ]]; then            echo -en "${RGB_DANGER}Input error, please only input 'y' or 'n': ${RGB_END}"        else            break        fi    done    [ "${REBOOT_STATUS}" == 'y' ] && reboot}main() {    echo -e "${RGB_INFO}1/18 : Start Init CentOS7 Script ${RGB_END}"    echo -e "${RGB_INFO}2/18 : Customize the profile (color and alias)${RGB_END}"    custom_profile    echo -e "${RGB_INFO}3/18 : Time zone adjustment${RGB_END}"    time_zone    echo -e "${RGB_INFO}4/18 : Disable selinux and firewalld${RGB_END}"    disable_software    echo -e "${RGB_INFO}5/18 : Disable Ctrl+Alt+Del${RGB_END}"    disable_cad    echo -e "${RGB_INFO}6/18 : Kernel parameter optimization${RGB_END}"    kernel_optimum    echo -e "${RGB_INFO}7/18 : The updatedb optimization${RGB_END}"    updatedb_optimum    echo -e "${RGB_INFO}8/18 : Adding swap space${RGB_END}"    new_swap    echo -e "${RGB_INFO}9/18 : Adjustment of ulimit${RGB_END}"    adjust_ulimit        echo -e "${RGB_INFO}10/18 : Enable tcp bbr congestion control algorithm${RGB_END}"    open_bbr    echo -e "${RGB_INFO}11/18 : Enable IPV6${RGB_END}"    open_ipv6    echo -e "${RGB_INFO}12/18 : Remove unnecessary users and user groups from the system${RGB_END}"    remove_users    echo -e "${RGB_INFO}13/18 : System permissions for sensitive files${RGB_END}"    sys_permissions    echo -e "${RGB_INFO}14/18 : Modify Account Password Survival Policy${RGB_END}"    password_policy    echo -e "${RGB_INFO}15/18 : Maximum number of days an account is valid after password expiration strategy${RGB_END}"    change_useradd    echo -e "${RGB_INFO}16/18 : Secure configuration of SSH${RGB_END}"    sec_ssh    echo -e "${RGB_INFO}17/18 : Timeout Auto-Logout Configuration${RGB_END}"    timeout_config    echo -e "${RGB_INFO}18/18 : Configure account login failure lockout policy${RGB_END}"    lockout_policy    reboot_os}cleartool_infocheck_rootcheck_oscheck_lockmain

测试执行截图如下

bffc3354694245350dedded3f4e83598.png

再次执行脚本会提示已经做了安全加固优化,无须再次执行

f64da0790e203f3e0369e30c931aaf15.png
本处高能:因Frp作者更换新的模块,导致Frp v0.18.0与之前的版本不兼容,如果升级请服务器端同步升级。升级命令: wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh bash install-frps.sh update 首先感谢@sadoneli S大的帮助完成了frp插件web页面的制作。 WARNING:请仔细阅读完本教程1楼和2楼后再动手安装! frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。 *因为frp是go语言写的,所以在路由器上使用的时候,请使用虚拟内存,请使用虚拟内存,请使用虚拟内存。 脚本是业余爱好,英文属于文盲,写的不好,欢迎您批评指正。 安装平台:CentOS、Debian、Ubuntu。 已测试过的平台: CentOS 6 32/64bit CentOS 7 32/64bit Debian 6 32/64bit Debian 7 32/64bit Debian 8 32/64bit Ubuntu 14 32/64bit 一、安装命令这个命令是在你自己的服务器上运行的!是在你自己的服务器上运行的!是在你自己的服务器上运行的!不是在路由器里运行的!不是在路由器里运行的!不是在路由器里运行的! wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh chmod 700 ./install-frps.sh ./install-frps.sh install 二、安装步骤 Loading network version for frps, please wait... frps Latest release file frp_0.8.1_linux_amd64.tar.gz #此步骤会自动获取frp最新版本,自动操作,无需理会 Loading You Server IP, please wait... You Server IP:12.12.12.12 #自动获取你服务器的IP地址 Please input your server setting: Please input frps bind_port [1-65535](Default Server Port: 5443): #输入frp提供服务的端口,用于服务器端和客户端通信 Please input frps dashboard_port [1-65535](Default dashboard_port: 6443): #输入frp的控制台服务端口,用于查看frp工作状态 Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80): #输入frp进行http穿透的http服务端口 Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443): #输入frp进行https穿透的https服务端口 Please input privilege_token (Default: WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq): #输入frp服务器和客户端通信的密码,默认是随机生成的 Please input frps max_pool_count [1-200](Default max_pool_count: 50): #设置每个代理可以创建的连接池上限,默认50 ##### Please select log_level ##### 1: info 2: warn 3: error 4: debug ##################################################### Enter your choice (1, 2, 3, 4 or exit. default [1]): #设置日志等级,4个选项,默认是info Please input frps log_max_days [1-30] (Default log_max_days: 3 day): #设置日志保留天数,范围是1到30天,默认保留3天。 ##### Please select log_file ##### 1: enable 2: disable ##################################################### Enter your choice (1, 2 or exit. default [1]): #设置是否开启日志记录,默认开启,开启后日志等级及保留天数生效,否则等级和保留天数无效 设置完成后检查你的输入,如果没有问题按任意键继续安装 ============== Check your input ============== You Server IP : 12.12.12.12 Bind port : 5443 Dashboard port : 6443 vhost http port : 80 vhost https port: 443 Privilege token : WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq Max Pool count : 50 Log level : info Log max days : 3 Log file : enable ============================================== 安装结束后显示: Congratulations, frps install completed! ============================================== You Server IP : 12.12.12.12 Bind port : 5443 Dashboard port : 6443 vhost http port : 80 vhost https port: 443 Privilege token : WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq Max Pool count : 50 Log level : info Log max days : 3 Log file : enable # 将上面信息添加到你的路由器frp穿透插件中吧 ============================================== frps Dashboard: http://12.12.12.12:6443/ # 这个是frp控制台访问地址 ============================================== 三、更新命令 ./install-frps.sh update 四、卸载命令 ./install-frps.sh uninstall 五、服务器端管理命令 /etc/init.d/frps start /etc/init.d/frps stop /etc/init.d/frps restart /etc/init.d/frps status /etc/init.d/frps config /etc/init.d/frps version 七、更多帮助请移步官方帮助文件 https://github.com/fatedier/frp/blob/master/README_zh.md
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值