Linux基础及总结10

1、编写脚本selinux.sh,实现开启或禁用SELinux功能

#!/bin/bash

read -p "Please enter enforcing/disabled to enable or disable selinux: " cmd                                       sestatus=`awk -F "=| " '/^SELINUX=/{print $2}' /etc/selinux/config`

sed -i "s/SELINUX=$sestatus/SELINUX=$cmd/g" /etc/selinux/config

echo -e  "selinux status is already \033[34m$cmd\033[0m, restart the system to take effect."

2、统计/etc/fstab文件中每个文件系统类型出现的次数

awk -F " " '! /^#|^$/{count[$3]++}END{for(i in count){print count[i],i}}' /etc/fstab |sort -nr

3、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有数字

echo 'Yd$C@M05MB%9&Bdh7dq+YVixp3vpw'| awk -F "" '{for(i=1;i<=NF;i++){if($i ~ /[0-9]/){print $i}}}'

4、解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT

vim monitor_access.sh

#!/bin/bash

awk '{count[$1]++}END{for(i in count){if(count[i]>200){print count[i],i}}}' /var/log/httpd/access_log|sort -nr > /data/iplist.txt

while read count ip;do

  iptables -A INPUT -s $ip -j REJECT &> /dev/null

  echo "来自$ip IP5分钟内访问了webserver超过200次,实际请求次数:$count,威胁`hostname`主机安全,已被拒绝!!!" >> /data/iptables.log

done < /data/iplist.txt

添加计划任务5分钟执行一次

crontab -e

*/5 * * * * /bin/bash /data/monitor_access.sh &> /dev/null

你可能感兴趣的:(Linux基础及总结10)