使用iptales进行ACL设置的script

最近一直在忙那个apache的cgi的编写,好在还有一个同组者,她帮忙写了大部分网页的页面,没办法自己没有事情可以干知道自己去试着学习写shell脚本了,这里我是用的bash外壳,所以下面我用到的也是这个语法的脚本。说实话我以前从来就没有接触过这个shell脚本,我对这个根本就没有概念,不过好在自己还是有一份学习的热情的,所以知道拚命的学习学习,在一些高手面前卖大斧了,呵呵。 

       自从我开始接触了linux我对stallman的GNU的工程中规则很是佩服,由衷的想到了共享对IT产业的一种发展,人类科技发展到今天,科技进驻了商业,商业同事也促动了科技,但是眼下的商业在我看来就是对一叠叠的废纸的堆砌,完全忘却了最初商业是为科技奠定基础,现在的商业中充满了尔虞我诈的竞争,抹杀了很多能够很好的促进现代科技发展的机会,比尔盖茨是有钱了,microsoft是强大了,可是他们带个科技的又是什么呢,我发现除了去想法把别人的钱袋弄扁以外好像也没有什么太大的进步,所现有的作用也是对winxp的发布,现在的vista看看漏洞摆出,软件兼容性差,硬件要求高,在我的感觉中完全利欲化了,怎么赚钱怎么干。IT应该是推动整个人类社会的发展,那一叠叠的废纸有什么用呢。所以我比较赞同stallman的GNU,很多的东西拿出来大家共享,很多的事情大家拿出来商讨,这样我在想IT产业不会想现在这样的进步缓慢吧。有时候跟同学聊天都在大骂做程序员真垃圾,工资再也没有向从前那样的高了,现在仍一块砖头到马路上能拍死几個都是在找计算机工作的。

      我承认这是一种对IT的悲观想法,我不认同可能是我接触的太少了,对IT产业我根本就不了解的缘故吧在我看来只要能够讲技术运用到实际,技术不断地突破前进这就是IT人的最终目标,IT可以让人发财,但是会把一个人技术前进的灵魂给玷污,我主张要所有的软件要共享化,由每一个人的参与大家一块的研究商讨,自私性自古有之,作为一名IT的小小程序员我不甘于整天对着那些重复的代码,自己上了这么多年的大学,不能够做这种机械式的代码复制,要做就要做一个用头脑去吃饭,有头脑去创造的精英IT。

   以上的言语纯属是自己一时的感概,如果您不认同看看就好不要鄙视我,也不要扔砖头,人人不一样,如果您赞同我的想法,也不需要您赞美我几句,希望大家能够通过csdn这个平台相互学习讨论,把自己的程序和想法共享。促进你我,共同发展是我的梦想,愿能结识志同道合的朋友。

    说了这么多正事还没有呵呵,您别生气,现在马上开始下面是我自己写得一个脚本shell这里因为是对后台的conf文档的读取,根据后台conf文档的ip来进行设定,您可以将带有$符号的地方改成所要限制的ip就可以,前面对conf文档读取您可以看一下,这个应该是因程序而异。

#!/bin/sh
iptables -P INPUT ACCEPT
#########################################
##   check ddos whether enable       ####
#########################################

CONF_DIR="/var/www/conf/app_ddos_setting.conf"
var=`cat ${CONF_DIR} | grep "DDOS_CHECK"`
ddo=`echo $var | cut -f2 -d' '`
dos=`echo $ddo | cut -f2 -d'='`
echo "ddos=$dos"
############################################
  #Define DIR####################
  CONF_DIR1="/var/www/conf/app_ip_filter_setting.conf"
  var1=`cat ${CONF_DIR1} | grep "STATUS"`
  aa=`echo $var1 | cut -f2 -d' '`
  temp1=`echo $aa | cut -f2 -d'='`
  echo "ipfilter=$temp1"
  ##########################
  CONF_DIR2="/var/www/conf/default_ip_filter.conf"
  var2=`cat ${CONF_DIR2}`
  bb=`echo $var2`
  echo "bb=$bb"
  #################
  CONF_DIR3="/var/www/conf/ip_filter.conf"
if [ $temp1 = "on" ]
  then
      iptables -F
      if [ $dos = "on" ]
      then
             iptables -A INPUT -p icmp -m length --length :4096 -j ACCEPT
             if [ $bb != " " ]
             then 
                iptables -A INPUT -s $bb -j ACCEPT
             fi 
             {
               while read _line
               do
               echo $_line
               iptables -A INPUT -s $_line -j ACCEPT
               done
             } < ${CONF_DIR3}
            iptables -A INPUT -s 10.88.100.252 -j ACCEPT
            iptables -P INPUT DROP
      fi
      if [ $dos = "off" ]
      then
         if [ $bb != " " ]
             then
                iptables -A INPUT -s $bb -j ACCEPT
             fi
             {
               while read _line
               do
               echo $_line
               iptables -A INPUT -s $_line -j ACCEPT
               done
             } < ${CONF_DIR3}
            iptables -A INPUT -s 10.88.100.252 -j ACCEPT
            iptables -P INPUT DROP
     fi
fi
if [ $temp1 = "off" ]
then
     iptables -F
     if [ $dos = "on" ]
         then
              iptables -A INPUT -p icmp -m length --length :4096 -j ACCEPT
              iptables -A INPUT -p tcp -j ACCEPT
              iptables -A INPUT -p udp -j ACCEPT
              iptables -A INPUT -s 10.88.100.252 -j ACCEPT
              n=`netstat -a | grep www|awk '{print $5}'|cut -d":" -f1|sort| uniq |wc -l | awk '{print $1 - 1}'`
              echo $n

             if [ $n -ge "8" ]
             then
                 iptables -D INPUT -p tcp -j ACCEPT
                 iptables -D INPUT -p udp -j ACCEPT
                 x=`netstat -a |grep www|awk '{print $5}'|cut -d":" -f1|sort|uniq|tr -d "*"`
                 echo $x
                 tt=$x
                 for number in $tt
                 do
                   echo "$number"
                   iptables -A INPUT -i eth0 -s $number -j ACCEPT
                 done
            fi
            q=`netstat -a | grep www|awk '{print $5}'|cut -d":" -f1|sort| uniq |wc -l | awk '{print $1 - 1}'`
            echo $q
            if [ $q -ge "8" ]
            then
              iptables -D INPUT -i eth0 -p tcp -j ACCEPT
              iptables -D INPUT -i eth0 -P udp -j ACCEPT
              w=`netstat -a |grep rtsp|awk '{print $5}'|cut -d":" -f1|sort|uniq|tr -d "*"`
              echo $w
              yy=$w
              for num in $yy
              do
              echo "$num"
               iptables -A INPUT -i eth0 -s $num -j ACCEPT
              done
            fi
            iptables -P INPUT DROP
       else
           iptables -F
           iptables -P INPUT ACCEPT
        fi
fi
 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值