文章目录
一、编写脚本selinux.sh,实现开启或禁用SELinux功能
#!/bin/bash
. /etc/init.d/functions
PS3="SElinux是否开启:"
MENU='
开启
关闭
退出
'
select M in $MENU;do
case $REPLY in
1)
sed -ri 's/^(SELINUX=).*/\1enforcing/' /etc/selinux/config
action "配置已修改成功,重新启动后才可生效"
exit
;;
2)
sed -ri 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config
setenforce 0
action "修改配置并临时关闭当前selinux状态,重启后永久生效"
exit
;;
3)
break
;;
*)
echo "请输入正确的数字!"
esac
done
~
二、统计/etc/fstab文件中每个文件系统类型出现的次数
awk '/^UUID/{print $3}' /etc/fstab | sort -n | uniq -c
sort -n 依照数值大小排序
uniq -c 在每行旁边显示该行出现的次数
三、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有数字
echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw" | awk 'gsub(/[^0-9]/,"",$0)'
[^0-9]表示非0-9的字符
这里把{print $0}省略了,等价于:
echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw" | awk 'gsub(/[^0-9]/,"",$0){print $0}'
还可以用以下方式:
echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw" | awk '{gsub(/[^0-9]/,"",$0);print $0}'
此处把pattern去掉了,都放在{}中来表示。
四、解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJEC
vim deny_dos.sh
LINK=100
ss -nt | awk -F"[[:space:]]+|:" '/^ESTAB/{print $(NF-2)}'|sort -n |uniq -c | while read count ip;do
if [ $count -gt $LINK ];then
iptables -A INPUT -s $ip -j REJECT
echo "$ip $count" >> /data/ddosattack
fi
done
chmod +x /data/scripts/deny_dos.sh
crontab -e
*/5 * * * * /data/scripts/deny_dos.sh