1、编写脚本selinux.sh,实现开启或禁用SELinux功能
#!/bin/bash
[ $# -ne 1 ] && echo "Usage:bash $0 <off|on>" && exit 10
if [ "$1" = "on" ];then
sed -i s/SELINUX=disabled/SELINUX=enforcing/ /etc/selinux/config
[ $? -eq 0 ] && echo "SELinux is on"
/sbin/setenforce 1
elif [ "$1" = "off" ];then
sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config
[ $? -eq 0 ] && echo "SELinux is off "
/sbin/setenforce 0
else
echo "Error!Please input <on|off>"
exit 20
2、统计/etc/fstab.文件中每个文件系统类型出现的次数
第一种awk '/UUID/{print $3}' /etc/fstab | uniq -c
第二种cat /etc/fstab | awk '/^UUID/{sys[$3]++}END{for(i in sys){print i,sys[i]}}'
3、提取出字符串Yd$C@MO5MB%9&Bdh7dq+YVixp3vpw中的所有数字
echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw" |tr -dc [:digit:]
4、解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔5分钟。防火墙命令为:iptables-A INPUT-s IP-j REJECT
#!/bin/bash
#以IP和时间为下标创建数组,确保短时间内同一IP的大量访问是dos攻击
#判断短时间内同一IP访问次数大于100,将符合条件的IP输出到文件
awk '{sum[$1$4]++}END{for (ip in sum){if(sum[ip]>100)print ip,sum[ip]}}' /var/log/httpd/access_log | cut -d'[' -f1 | uniq > /data/ip.log
while read LINE;do
if [ -n "$LINE" ];then
#检查防火墙规则是否已经添加过攻击IP,如果有,跳过此次循环,否则添加
if iptables -L|grep -q $LINE;then
continue
else
iptables -A INPUT -s $LINE -j REJECT
echo $LINE >> /data/blacklist.log
fi
fi
done < /data/ip.log