Linux一键加固自动化脚本,合适自己才是最好的

Posted 赛克安全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux一键加固自动化脚本,合适自己才是最好的相关的知识,希望对你有一定的参考价值。

Linux加固是一个基础性工作,非常的必要,针对Linux的加固一般都比较谨慎,因为加固不慎可能会影响业务正常运行,因此Linux加固分为了两个部分;

第一个部分:针对刚刚做完系统,需要针对性的把基础安全统一加固一下,往往结合无人值守安装+一键加固脚本来执行,这部分需要运维安全对脚本加固内容进行评估,结合业务来指定。非常节省人力。

第二个部分:是针对已经运行上线的Linux服务器,这部分一般都是安全检查,然后评估是否修复,进行人工或者半自动的方式修复。

今天给大家放送的是一键加固的Linux shell 脚本。大家结合自己的业务进行调整即可。大家在这个基础上可以做出远程执行的,可以批量远程处理,具体代码如下:

脚本如下:

#!/bin/bash

#此脚本用于XX现网linux基线修复,涉及18条检查项,检查项列表如下:

#检查是否设置口令更改最小间隔天数

#检查是否设置口令过期前警告天数

#检查系统core dump设置

##检查历史命令设置

#检查密码重复使用次数限制

#检查是否设置口令生存周期

#检查口令最小长度

#检查是否设置命令行界面超时退出

#检查系统是否禁用ctrl+alt+del组合键

#检查设备密码复杂度策略

#检查是否配置用户所需最小权限

#检查是否设置ssh成功登录后Banner

#检查用户umask设置

#检查重要目录或文件权限设置

#检查是否设置ssh登录前警告Banner

##检查是否禁止root用户远程登录

#检查系统openssh安全配置

#检查是否已修改系统banner信息


#脚本开发者:严伟

#版本:第2版


##############################################################################


#脚本运行前备份所有涉及到的文件,共17个

cp /etc/login.defs /etc/login.defs.bak

cp /etc/security/limits.conf /etc/security/limits.conf.bak

cp /etc/profile /etc/profile.bak

cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak

cp /etc/inittab /etc/inittab.bak

cp /etc/motd /etc/motd.bak

cp /etc/xinetd.conf /etc/xinetd.conf.bak

cp /etc/group /etc/group.bak

cp /etc/shadow /etc/shadow.bak

cp /etc/services /etc/services.bak

cp /etc/security /etc/security.bak

cp /etc/passwd /etc/passwd.bak

cp /etc/grub.conf /etc/grub.conf.bak

cp /boot/grub/grub.conf /boot/grub/grub.conf.bak

cp /etc/lilo.conf /etc/lilo.conf.bak

cp /etc/ssh_banner /etc/ssh_banner.bak

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

cp /etc/aliases /etc/aliases.bak


#############################################################################


#修复设置口令更改最小间隔天数

MINDAY=`cat -n  /etc/login.defs | grep -v ".*#.*" | grep PASS_MIN_DAYS | awk '{print $1}'`

sed -i ''$MINDAY's/.*PASS_MIN_DAYS.*/PASS_MIN_DAYS   1/' /etc/login.defs


#############################################################################


#修复设置口令过期前警告天数

WARNDAY=`cat -n  /etc/login.defs | grep -v ".*#.*" | grep PASS_WARN_AGE | awk '{print $1}'`

sed -i ''$WARNDAY's/.*PASS_WARN_AGE.*/PASS_WARN_AGE   7/' /etc/login.defs


#############################################################################


#修复系统core dump设置

HARD=`cat /etc/security/limits.conf | grep "hard    core"`

if [ -z "$HARD" ]

then

echo "*               hard    core            0" >>/etc/security/limits.conf

else

sed -i 's/.*hard    core.*/*               hard    core            0'/g /etc/security/limits.conf

fi


SOFT=`cat /etc/security/limits.conf | grep "soft    core"`

if [ -z "$SOFT" ]

then

echo "*               soft    core            0" >>/etc/security/limits.conf

else

sed -i 's/.*soft    core.*/*               soft    core            0'/g /etc/security/limits.conf

fi


##############################################################################


##修复历史命令设置

#sed -i 's/.*HISTSIZE=.*/HISTSIZE=5'/g /etc/profile


###############################################################################


#修复密码重复使用次数限制

REMEMBER=`cat -n  /etc/pam.d/system-auth | grep -v ".*#.*" | grep "password    sufficient    pam_unix.so" | awk '{print $1}'`

sed -i ''$REMEMBER's/$/ &remember=5/' /etc/pam.d/system-auth


###############################################################################


#修复是否设置口令生存周期

MAXDAY=`cat -n  /etc/login.defs | grep -v ".*#.*" | grep PASS_MAX_DAYS | awk '{print $1}'`

sed -i ''$MAXDAY's/.*PASS_MAX_DAYS.*/PASS_MAX_DAYS   90/' /etc/login.defs


###############################################################################


#修复口令最小长度

MINLEN=`cat -n  /etc/login.defs | grep -v ".*#.*" | grep PASS_MIN_LEN | awk '{print $1}'`

sed -i ''$MINLEN's/.*PASS_MIN_LEN.*/PASS_MIN_LEN    8/' /etc/login.defs


#################################################################################


#修复是否设置命令行界面超时退出

TMOUT=`cat /etc/profile | grep "export TMOUT="`

if [ -z "$TMOUT" ]

then

echo "export TMOUT=600" >>/etc/profile

else

sed -i 's/.*export TMOUT=.*/export TMOUT=600'/g /etc/profile

fi


##################################################################################


#修复系统是否禁用ctrl+alt+del组合键

CTRL=`cat /etc/inittab | grep "ca::ctrlaltdel"`

if [ -n "$CTRL" ]

then

LINE=`cat -n  /etc/inittab | grep -v ".*#.*" | grep "ca::ctrlaltdel" | awk '{print $1}'`

sed -i ''$LINE's/^/&#/' /etc/inittab

fi


###################################################################################


#修复设备密码复杂度策略

sed -i 's/.*pam_cracklib.*/password    requisite     pam_cracklib.so difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1'/g /etc/pam.d/system-auth


###################################################################################


#修复设置ssh成功登录后Banner

if [ -f /etc/motd ]

then

echo "Login success. All activity will be monitored and reported " > /etc/motd

else

touch /etc/motd

echo "Login success. All activity will be monitored and reported " > /etc/motd

fi


####################################################################################


#修复用户umask设置

ACTUAL=`umask`

policy=0027

if [ "$ACTUAL" != "$policy" ]

then

echo "umask 027" >>/etc/profile

fi


#####################################################################################


#修复重要目录或文件权限设置

chmod 600 /etc/xinetd.conf

chmod 644 /etc/group

chmod 400 /etc/shadow

chmod 644 /etc/services

chmod 600 /etc/security

chmod 644 /etc/passwd

chmod 600 /etc/grub.conf

chmod 600 /boot/grub/grub.conf

chmod 600 /etc/lilo.conf


#####################################################################################


#修复设置ssh登录前警告Banner

if [ -f /etc/ssh_banner ]

then

chown bin:bin /etc/ssh_banner

else

touch /etc/ssh_banner

chown bin:bin /etc/ssh_banner

fi


chmod 644 /etc/ssh_banner

echo " Authorized only. All activity will be monitored and reported " > /etc/ssh_banner


sed -i 's/.*Banner.*/Banner \/etc\/ssh_banner'/g /etc/ssh/sshd_config


#######################################################################################


##修复禁止root用户远程登录

#ROOT=`cat /etc/ssh/sshd_config | grep -v "^#" | grep PermitRootLogin`

#if [ -z "$ROOT" ]

#then

#echo "PermitRootLogin no" >>/etc/ssh/sshd_config

#else

#LINEROOT=`cat -n  /etc/ssh/sshd_config | grep -v ".*#.*" | grep PermitRootLogin | awk '{print $1}'`

#sed -i ''$LINEROOT's/.*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

#fi


#修复已修改系统banner信息

mv /etc/issue.net /etc/issue.net.bak

mv /etc/issue /etc/issue.bak


## 别名文件更改修复

sed -i 's/games/#games/g' /etc/aliases

sed -i 's/games/#system/g' /etc/aliases

sed -i 's/games/#uucp/g' /etc/aliases

sed -i 's/games/#dumper/g' /etc/aliases

sed -i 's/games/#decode/g' /etc/aliases

sed -i 's/games/#ingres/g' /etc/aliases

sed -i 's/games/#toor/g' /etc/aliases

sed -i 's/games/#manager/g' /etc/aliases

sed -i 's/games/#operator/g' /etc/aliases

#hosts.allow 和 hosts.deny 限制配置修复

echo "sshd:192.168.0.0/255.255.0.0 172.21.0.0/255.255.0.0 10.0.0.0/255.0.0.0" >>/etc/hosts.allow

echo "sshd:all" >>/etc/hosts.deny

#core dump 配置安全修改

#echo "ulimit -S -c unlimited">>/etc/profile

#log 日至文件权限修改

if [ -f /etc/syslog.conf ]

then

LOGDIR=`cat /etc/syslog.conf | grep -v "^[ ]*#"|sed '/^#/d' |sed '/^$/d' |awk '(($2!~/@/) && ($2!~/*/) && ($2!~/-/)) {print $2}'`

chmod 600 $LOGDIR

fi


if [ -f /etc/rsyslog.conf ]

then

LOGDIR=`cat /etc/rsyslog.conf | grep -v "^[ ]*#"|sed '/^#/d' |sed '/^$/d' |awk '(($2!~/@/) && ($2!~/*/) && ($2!~/-/)) {print $2}'`

chmod 600 $LOGDIR

fi

###############################################################################################################

for i in daemon bin sys adm lp uucp nuucp smmsp games ftp mail sync shutdown halt news operator gopher nobody

do

sed -i s/''$i':.:'/''$i':!!:'/g 2.txt

done




以上是关于Linux一键加固自动化脚本,合适自己才是最好的的主要内容,如果未能解决你的问题,请参考以下文章

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

有没有LINUX高手,给弄一个一键脚本吧,

linux安全加固应关闭啥服务

Walle(瓦力)多渠道打包-gradle脚本-可360加固一键打包

学习Linux系统的方法有很多,适合自己的才是最好

学习Linux系统的方法有很多,适合自己的才是最好。