首页 > 系统相关 >Linux系统加固脚本

Linux系统加固脚本

时间:2022-12-06 13:56:21浏览次数:37  
标签:脚本 密码 PASS echo etc sed Linux 加固 pam

#! /bin/bash
# Function:对账户的密码的一些加固
read -p "设置密码最多可多少天不修改:" A
read -p "设置密码修改之间最小的天数:" B
read -p "设置密码最短的长度:" C
read -p "设置密码失效前多少天通知用户:" D
sed -i '/^PASS_MAX_DAYS/c\PASS_MAX_DAYS '$A'' /etc/login.defs
sed -i '/^PASS_MIN_DAYS/c\PASS_MIN_DAYS '$B'' /etc/login.defs
sed -i '/^PASS_MIN_LEN/c\PASS_MIN_LEN '$C'' /etc/login.defs
sed -i '/^PASS_WARN_AGE/c\PASS_WARN_AGE '$D'' /etc/login.defs
 
echo "已对密码进行加固,新用户不得和旧密码相同,且新密码必须同时包含数字、小写字母,大写字母!!"
sed -i '/pam_pwquality.so/c\password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1' /etc/pam.d/system-auth
 
echo "已对密码进行加固,如果输入错误密码超过3次,则锁定账户!!"
n=`cat /etc/pam.d/sshd | grep "auth required pam_tally2.so "|wc -l`
if [ $n -eq 0 ];then
sed -i '/%PAM-1.0/a\auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300' /etc/pam.d/sshd
fi
 
echo  "已设置禁止root用户远程登录!!"
sed -i '/PermitRootLogin/c\PermitRootLogin no'  /etc/ssh/sshd_config
 
read -p "设置历史命令保存条数:" E
read -p "设置账户自动注销时间:" F
sed -i '/^HISTSIZE/c\HISTSIZE='$E'' /etc/profile
sed -i '/^HISTSIZE/a\TMOUT='$F'' /etc/profile
 
echo "已设置只允许wheel组的用户可以使用su命令切换到root用户!"
sed -i '/pam_wheel.so use_uid/c\auth required pam_wheel.so use_uid ' /etc/pam.d/su
n=`cat /etc/login.defs | grep SU_WHEEL_ONLY | wc -l`
if [ $n -eq 0 ];then
echo SU_WHEEL_ONLY yes >> /etc/login.defs
fi
 
echo "即将对系统中的账户进行检查...."
echo "系统中有登录权限的用户有:"
awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
echo "********************************************"
echo "系统中UID=0的用户有:"
awk -F: '($3=="0"){print $1}' /etc/passwd
echo "********************************************"
N=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
echo "系统中空密码用户有:$N"
if [ $N -eq 0 ];then
 echo "恭喜你,系统中无空密码用户!!"
 echo "********************************************"
else
 i=1
 while [ $N -gt 0 ]
 do
    None=`awk -F: '($2==""){print $1}' /etc/shadow|awk 'NR=='$i'{print}'`
    echo "------------------------"
    echo $None
    echo "必须为空用户设置密码!!"
    passwd $None
    let N--
 done
 M=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
 if [ $M -eq 0 ];then
  echo "恭喜,系统中已经没有空密码用户了!"
 else
echo "系统中还存在空密码用户:$M"
 fi
fi
 
echo "即将对系统中重要文件进行锁定,锁定后将无法添加删除用户和组"
read -p "警告:此脚本运行后将无法添加删除用户和组!!确定输入Y,取消输入N;Y/N:" i
case $i in
      [Y,y])
            chattr +i /etc/passwd
            chattr +i /etc/shadow
            chattr +i /etc/group
            chattr +i /etc/gshadow
            echo "锁定成功!"
;;
      [N,n])
            chattr -i /etc/passwd
            chattr -i /etc/shadow
            chattr -i /etc/group
            chattr -i /etc/gshadow
            echo "取消锁定成功!!"
;;
       *)
            echo "请输入Y/y or N/n"
esac

 

标签:脚本,密码,PASS,echo,etc,sed,Linux,加固,pam
From: https://www.cnblogs.com/xgsh/p/16955015.html

相关文章

  • LINUX漏洞复现之ShellShock漏洞
    简介ShellShock漏洞,中文称为"破壳漏洞",是UnixShell中的安全漏洞在一些网络服务器的部署中,使用bash来处理某些请求,允许攻击者通过低版本的bash执行任意Shell命令......
  • Linux学习之VMware安装CentOS7
    CentOS版本:7.9VMware版本:16安装主要就是下一步,下一步,有几个注意事项:第一就是网卡的设置,因为CentOS7默认网卡名字不是ethX样式.然后就是安装软件的选择,学习Linux,......
  • Linux基础学习
    Linux基础Lesson1-常用基本命令​1.Ctrlc:取消命令,并且换行Ctrlu:清空本行命令tab键:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项ls......
  • Kafka集群部署(Linux环境)
    Kafka集群部署运行环境:❤操作系统:CentOS7.6x64❤kafka版本:kafka_2.13-3.3.1.tgz❤JDK环境:JDK11(Kafka2.8版本才开始自带了Zookeeper,所以注意下载版本)一、zookee......
  • 用minicom在Linux主机和开发板之间传递文件
    想要将在主机上做好的文件发送到开发板上,需要先安装minicom软件,第一次使用minicom的时候需要先对minicom进行配置,在主机shell上输入minicom-s,进入如下界面:---[configura......
  • Linux内核升级方法与步骤
    1.查看linux内核版本:#uname-r2.6.18-194.el52.下载新的内核版本:去官网上下载最新的内核版本和对应的补丁:​​​https://www.kernel.org/​​​选的是3.2.14#wge......
  • 怎样结束linux的ping命令
    在linux的shell下执行ping 127.0.1.1,可以测试网络的联通性,但该命令会一直执行,有两种方法来终止ping命令:ctrl+c可以停止pingctrl+z可以暂停ping,ctrl+z是把进程放到后台......
  • 初识Linux(十一)------ 磁盘配额与进阶文件系统管理
      如果Linux服务器有多个用户经常存取数据时,为了维护所有使用者在硬盘容量的公平使用,磁盘配额(Quota)就是一项非常有用的工具。另外,如果磁盘容量不够用,那么更进阶的文件......
  • Linux下的压缩解压缩命令详解
    1.zip-rmyfile.zip./*将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件.2.unzipunzip-o-d/home/sunnymyfile.zip......
  • Linux软件安装
    目录安装rz/sz安装telnet安装JDK一.安装rz/sz1.下载安装包,放到指定目录,示例是放到/usr/local/src下wgethttp://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz2.r......