检查SetUID权限的shell脚本
#!/bin/bash
find / -prem -4000 -o -prem -2000 > /tmp/setuid.check
#搜索系统中所拥有SUID和SGID的文件,并保存到临时目录。
for i in $(cat /tmp/setuid.check)
#做循环,每次循环取出临时文件中的文件名
do
grep $i /root/suid.log > /dev/null
#比对这个文件名是否在模板文件中
if [ "$?" !="0" ]
#检测上一个命令的返回值,如果不为0,证明上一个命令报错
then
echo "$i isn't in listlife!">>/root/suid.log $(date +%F)
#如果文件名不在模板文件中,则输出错误信息,并把报错报错到日志中
fi
done
rm -rf /tmp/setuid.check
#删除临时文件
suid检测脚本
危险的SetUID
尽量少用
要遵守以下原则
密码三原则
复杂性 时效性 易记性
取消setuid的方法
chmod 0755 文件名
chmod u-s 文件名
设定SetUID的方法
4代表SUID
chmod 4755 文件名
chmod u+s 文件名
chmod u-s 文件名 取消某文件的SetUID (chmod g-s 文件名 //组)
chmod u+s 文件名 增加某文件的SetUID (chmod g+s 文件名 //组)
取消SetUID的方法
chmod 0755 文件名
chmod u-s 文件名
危险的SetUID(尽量少操作SetUID)
关键目录应严格控制写权限。比如“/”、“/usr”等
用户的密码设置要严格遵守密码三原则:复杂性、易记性、时效性
实际工作当中应该将默认具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限。
绝不允许给系统文件赋SUID权限,如chmod 4755 /bin/vi
定期检查suid和sgid
#!/bin/bash
find / -perm -4000 -o -perm -2000> /tmp/setuid.check #搜索系统中所有拥有SUID和SGID的文件,并保存到临时目录中
for i in $(cat /tmp/setuid.check) #for循环,每次循环取出临时文件中的文件名赋予变量i
脚本
do
grep $i /home/suid.log> /dev/null #对比这个文件名是否在模板文件中 临时扫描出的文件名是否在这个模板文件中 把所有输出丢到/dev/null
if [ "$?" != "0" ] #检测上一个命令的返回值,如果不为0,证明上一个命令报错
then
echo "$i isn't in listfile!">>/home/suid_log_$(date +%F)
#如果文件名不在模板文件中,则输出错误信息,并把报错报错到日志当前日期中
fi
done
rm -rf /tmp/setuid.check
操作步骤
vi suid_check.sh
chmod 755 suid_check.sh
chmod u+s abc
./suid_check.sh
cat suid_log_........
chmod u-s 文件名 取消某文件的SetUID (chmod g-s 文件名 //组)
chmod u+s 文件名 增加某文件的SetUID (chmod g+s 文件名 //组)
定期检查suid和sgid
#!/bin/bash
find / -perm -4000 -o -perm -2000> /tmp/setuid.check
for i in $(cat /tmp/setuid.check)
do
grep $i /home/suid.log> /dev/null
if [ "$?" != "0" ]
then
echo "$i isn't in listfile!">>/home/suid_log_$(date +%F)
fi
done
rm -rf /tmp/setuid.check
定期检查suid和sgid
#!/bin/bash
find / -perm -4000 -o -perm -2000> /tmp/setuid.check
for i in $(cat /tmp/setuid.check)
do
grep $i /home/suid.log> /dev/null
if [ "$?" != "0" ]
then
echo "$i isn't in listfile!">>/home/suid_log_$(date +%F)
fi
done
rm -rf /tmp/setuid.check
危险的SetUID(尽量少操作SetUID)
关键目录应严格控制写权限。比如“/”、“/usr”等
用户的密码设置要严格遵守密码三原则:复杂性、易记性、时效性
实际工作当中应该将默认具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限。
绝不允许给系统文件赋SUID权限,如chmod 4755 /bin/vi
SUID和SGID检测脚本
find / -perm -4000 -o -perm -2000 > suid.log
定期检查suid 的脚本:
#!/bin/bash
find / -perm -4000 -o -perm -2000> /tmp/setuid.check
#搜索系统中所有拥有SUID和SGID的文件,并保持到临时目录中
for i in $(cat /tmp/setuid.check)
#做循环,每次循环取出临时文件中的文件名
do
grep $i /root/suid.log> /dev/null
#比对这个文件名是否在模板文件中
if [ "$?" != "0" ]
#检测上一个命令的返回值,如果不是0,证明上一个命令报错
then
echo "$i isn't in listfile! ">>/root/suid_log$(date +%F)
#如果文件名不在模板文件中,则输出错误信息,并把报错到日志中
fi
done
rm -rf /tmp/setuid.check #删除临时文件
扫描系统中多出来的附有SUID的文件
设定SetUID的方法
4代表SUID
chmod 4755 文件名
chmod u+s 文件名
取消SetUID的方法
chmod 0755 文件名
chmod u-s 文件名
取消SetUID方法
简单的扫描SetUID文件并删除的shell脚本:
危险的SetUID(尽量少操作SetUID)
设定SetUid的方法
chmod 4755 文件名或者 chmod u+s 文件名
Shell编程,将系统中SUID和SGID权限的文件列出来
危险的SetUID,实际工作当中应该将默认具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限。
#检查系统中非法的suid脚本
让没有权限的人执行时获得所有者的权限,这个所有者一般为root,常见应用如passwd
文件所有者要有x权限才有意义,所有者没有执行权限它就会变S
chmod 4600 xxx //不可以执行 显示S
chmod 4601 xxx //可以执行,显示S 先执行了所有人权限,然后变root?root 就是这么吊
没事就别增加这个权限了。
定期检查suid<br>
#!/bin/bash<br>
find / -perm -4000 -o -perm -2000> /tmp/setuid.check<br>
for i in $(cat /tmp/setuid.check)<br>
do<br>
grep $i /home/suid.log> /dev/null<br>
if [ "$?" != "0" ]<br>
then<br>
echo "$i isn't in listfile!">>/home/suid_log_$(date +%F)<br>
fi<br>
done<br>
rm -rf /tmp/setuid.check
SUID和SGID检测脚本
find / -perm +4000
匹配过程:
1.普通文件,文件的权限一般三位,777最高文件权限
-perm -0777搜索的就是最高权限的文件rwxrwxrwx
-perm +0777搜索的只要包含rwxrwxrwx任意一个的文件
2.特殊文件,包含权限位置四位,7000为最高,即--s--s--t,同样的方法
-perm -7000搜索的就是最高权限的文件--s--s--t
-perm +0777搜索的只要包含--s--s--t任意一个的文件,--s --- ---(4000)、--- --s ---(2000)、--- --- --t(1000)等
自然+4000匹配的就是包含--s --- ---权限的文件,+4755对应的rwsr-xr-x包含了--s --- ---权限,所以4000可以匹配4755呢