- /etc/passwd -- 记录了系统中各用户的一些基本属性,root可写,所有用户可读
- /etc/shadow -- 记录了所有用户的密码
- /etc/group -- 记录了用户组属性
- /etc/login.defs -- 密码策略文件
- /etc/pam.d/system-auth -- 密码强度
| 配置 | 值 | 含义 |
|---|---|---|
| PASS_MAX_DAYS | 90 | 密码最长有效期 |
| PASS_MIN_DAYS | 10 | 密码修改之间最小的天数 |
| PASS_MIN_LEN | 8 | 密码长度 |
| PASS_WARN_AGE | 7 | 口令失效前多少天开始通知用户修改密码 |
- #! /bin/bash
- # Author: Sajor
- # Date: 2018-10-12
- # 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 "已设置好密码策略......"
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
- #! /bin/bash
- # Author: Sajor
- # Date: 2018-10-12
- # Function: 对用户密码强度的设定,新密码不能和旧密码相同,同时新密码至少8位,还要同时包含大字母、小写字母和数字
- 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
#%PAM-1.0 的下面,加入下面的内容,表示当密码输入错误达到3次,就锁定用户150秒,如果root用户输入密码错误达到3次,锁定300秒。锁定的意思是即使密码正确了也登录不了
auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300
- pam_tally2 查看被锁定的用户
- pam_tally2 --reset -u username 将被锁定的用户解锁
- #! /bin/bash
- # Author: Sajor
- # Date: 2018-10-12
- # Function: 对用户登录输入错误密码次数做限制
- 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
TMOUT=600
/etc/profile- read -p "设置账户自动注销时间:" F
- sed -i '/^HISTSIZE/a\TMOUT='$F'' /etc/profile

- 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
id root命令可以显示root用户的 uid gid group 信息- > id root
- uid=0(root) gid=0(root) 组=0(root)
usermod -o -u 0 -g 0 admin
userdel -r 用户名 删除不必要的账号passwd -l 用户名 锁定不必要的账号awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd 查看具有登录权限的用户bash登陆的,比如zsh,可以这么写 awk -F: '($7=="/usr/bin/zsh" || $7=="/bin/bash"){print $1}' /etc/passwdawk -F ':' '($3==0){print $1}' /etc/passwd 查看UID为0的账号,UID为0的用户会自动切换到root用户,所以危害很大awk -F: '($2=="")' /etc/shadow 查看空口令账号,如果存在空口令用户的话必须设置密码- # 创建用户帐户
- > adduser mageshm
- # 使用以下命令创建没有密码的用户“mageshm”:
- > passwd -f -u mageshm
-
- Unlocking password for user mageshm.
- passwd: Success
- #! /bin/bash
- # Author: Sajor
- # Date: 2018-10-11
- # Function: 对系统中的用户做检查,加固系统
- echo "系统中有登录权限的用户有:"
- awk -F: '($7=="/usr/bin/zsh" || $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
-
- # 改变文件或目录的扩展属性
- chattr [+-=] [属性] 文件或目录名
- chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...
- # 查看文件目录的扩展属性
- lsattr 文件或目录名
- #! /bin/bash
- # Author: Sajor
- # Date:2018-10-10
- # Function: 锁定创建用户和组的文件,使之无法对用户和组进行操作!
- 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
ps aux|sort -rn -k +3|headps aux|sort -rn -k +4|headPermitRootLogin no
- /etc/xinetd.d/telnet
- disable=yes
- # 开启
- echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
- # 关闭
- echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
- vim /etc/vsftpd/vsftpd.conf
- # 如果存在anonymous_enable则修改,如果不存在则手动增加
- anonymous_enable=NO
- > vim /etc/sysctl.conf
- > net.ipv4.tcp_syncookies = 1
- # 让命令生效
- > sysctl -p
HISTSIZE=100
/etc/profile- read -p "设置历史命令保存条数:" E
- sed -i '/^HISTSIZE/c\HISTSIZE='$E'' /etc/profile
- # vim /etc/rsyslog.conf 在文件中加入如下内容
- *.err;kern.debug;daemon.notice /var/log/messages
- systemctl restart rsyslog
- firewall-cmd --add-port=514/tcp
