Linux系统安全加固脚本

#!/bin/bash
#
#***********************************************************************
#Author:ZHANGhaodong
#Date:2021-12-09
#FileName:kylin_security_force_20211209.sh
#Installation:Mini
#SystemOS(适用os): 1.Kylin Linux Advanced Server release V10 (SP2) /(Sword)-x86_64-Build09/20210524
#                  2.
#Function:
#          1.修改已经存在的账户的密码过期时间
#          2.修改用户命令提示符
#          3.关闭selinux
#          4.关闭防火墙,NetworkManager,iptables等服务
#          5.设置口令失效提示
#          6.禁止root远程登陆
#          7.设置登陆失败账户锁定策略
#          8.设置密码复杂度
#          9.设置口令生存周期
#          10.设置口令重复使用次数
#          11.删除或锁定无关账号
#          12.禁止root远程telnet登录
#          13.设置ssh登录策略
#          14.设置用户所需最小权限
#          15.检查别名文件配置
#          16.启用cron行为日志功能
#          17.禁止ICMP重定向
#          18.关闭IP转发
#          19.设置登录超时策略
#          20.设置历史记录输出条数
#          21.修改SNMP服务默认团体字
#          22.设置ssh登陆前警告
#          23.禁止不必要的系统账号ftp登录
#          24.限制ftp用户权限
#          25.禁止匿名ftp登录
#***********************************************************************
. /etc/init.d/functions

Optional="Optional"
Mandatory="Mandatory"
function insert {
   
        local file=$1
        local type=$2
        local msg=$3
        local line_num=$(cat -n $file | grep -w $type | head -1 | awk '{print $1}')
        local num=$[ $line_num-1 ]
        sed -i "${num}a $msg" $file
}

function backup_cfgfile {
   
        #配置文件要写绝对路径
        local cfgfile=$1
        local bakfile=$cfgfile.bak.$(date +"%Y_%m_%d-%H:%M:%S")
        test -e $cfgfile && /bin/cp -f $cfgfile $bakfile && echo $bakfile >> /tmp/bakfile


}

function prt_msg {
   
        local level=$1
        local msg=$2
        printf "[%-10s] %-50s " $level "$msg"
}

function get_release {
   
        egrep -q "VERSION_ID" /etc/os-release | awk -F'"' '{print $2}'

}
function svc_ctl {
   
        local version=$(get_release)
        local op=$1
        local svcname=$2

        case $version in
                6.*)
                        test -e /etc/rd.d/init.d/$svcname on && \
                        case $op in
                                enable)
                                        chkconfig $svcname on;;
                                disable)
                                        chkconfig $svcname off;;
                                *)
                                        service $svcname $op;;
                        esac;;
                7.*)
                        test -e /usr/lib/systemd/system/$svcname.service && \
                        systemctl $op $svcname;;
        esac
}

#修改已经存在的账户的密码过期时间
function kylin_sec_change_account_expiretime {
   
        #(强制)
        #修改用户最短最长使用时间 2 180
        #
        local cfgfile=/etc/passwd
        local name=$(cat $cfgfile | grep -wE 'bash|sh' | grep -v ^root | awk -F ":" '{print $1}')
        prt_msg $Mandatory "Check exist account and change expire time for password..."
        if [ -n "$name" ];then
                for i in $name
                        do
                                passwd -n 2 -x 180 $i 2>&1 > /dev/null
                done
        printf "OK!\n"
        else
                printf "Do not exist account,OK\n"
        fi
}
#修改用户命令提示符
function kylin_sec_login_prompt {
   
        egrep -q 'PS1' /etc/profile
        if [ $? -ne 0 ];then
                echo 'export PS1="[\u@\h \w]\\$"' >> /etc/profile
                . /etc/profile
        fi
        export PS1='[\u@\h \w]\\$'

        egrep -q 'HISTTIMEFORMAT' /etc/profile
        if [ $? -ne 0 ];then
                echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile
                . /etc/profile
        fi
        export HISTTIMEFORMAT="%F %T `whoami
  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河 静

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值