Linux课程第十一周作业


一、编写脚本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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值